Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 1 month ago.
スタック・サイズはどのくらいですか?
main関数(初期スレッド?)のスタックサイズと、スレッド生成したときのデフォルトの スタックサイズを教えていただけますか?
こじょう
Question relating to:
2 Answers
10 years, 1 month ago.
Yuuichi Akagawaさん、調査およびアドバイスありがとうございます。 メモリマップに関してはご説明の通り、MBRZA1H.sctにて定義しております。 DEFAULT_STACK_SIZEは、アプリケーションが使用するマクロになります。 CMSIS-RTOS RTXが提供するデフォルトのスタックサイズについては、以下を参照してみてください。
CMSIS-RTOS RTXでのmainスレッドのスタックサイズ、 およびスレッド生成時のデフォルトのスタックサイズに関しては、 rtos\rtx\TARGET_CORTEX_A\RTX_Conf_CA.c にて設定しています。 使用しているCMSIS-RTOS RTXのVerは、V4.61です。
詳細は以下を参照ください。
http://www.keil.com/pack/doc/cmsis_rtx/_thread_config.html#StackConfig
注意が必要なのは、設定した各スタックサイズに関しては、4倍された値が設定されることです。 以下を参照ください。
http://www.keil.com/pack/doc/cmsis_rtx/_r_t_x__conf__c_m.html
⇒ <o>Default Thread stack size [bytes] <64-4096:8><#/4>
10 years, 1 month ago.
「RTOSの」ということであれば、2048バイトみたいですね。
mbed-rtos/rtx/TARGET_CORTEX_A/cmsis_os.h
// The stack space occupied is mainly dependent on the underling C standard library #if defined(TOOLCHAIN_GCC) || defined(TOOLCHAIN_ARM_STD) # define WORDS_STACK_SIZE 512 #elif defined(TOOLCHAIN_ARM_MICRO) # define WORDS_STACK_SIZE 128 #endif #define DEFAULT_STACK_SIZE (WORDS_STACK_SIZE*4)
※念のため、printf("%d\n", DEFAULT_STACK_SIZE);してみたら2048でした。
この辺の情報が役に立つかもしれません。 mbed RTOS の メモ&Tips
メモリマップ的なモノは mbed-src/targets/cmsis/TARGET_RENESAS/TARGET_RZ_A1H/TOOLCHAIN_ARM_STD/MBRZA1J.sct ですかね。