2016-11-25 36 views
1

FreeRTOS ISRコンテキスト用に別のスタックがありますか?それは固定か設定可能ですか?FreeRTOS ISRスタックサイズを設定する

#define configMINIMAL_STACK_SIZE  ((unsigned short) 256) 
#define configTOTAL_HEAP_SIZE   ((size_t) (512 * 1024)) 

このスタックサイズは、ISRではなく一般的なタスク専用です。どんな洞察も役に立つでしょう。

詳細を追加する:これは排他的なFreeRTOSポートであり、コミュニティでは使用できません。アーキテクチャはarm926ej-sです(これは完全な本格的なLinuxカーネル - MMUサポートをサポートできますが、そこにRTOSを実行する必要があります)。

答えて

1

ISRスタックサイズは、ポートのスタートアップコードによって設定されます。 FIQとIRQの2つのISRがあり、それぞれに独自のスタックがあります。ここで

私は結果に従う、そのスタック構成にARM9 FreeRTOSデモを検索しました:

FreeRTOS/Demo/ARM9_STR91X_IAR$ grep -sri "FIQ_STACK" 
91x_init.s:  SECTION  FIQ_STACK:DATA:NOROOT(3) 
91x_init.s:  LDR  SP, =SFE(FIQ_STACK) 
STR91x_FLASH.icf:define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; 
STR91x_FLASH.icf:      block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, 
91x_init_IAR.s:FIQ_Stack   DEFINE  USR_Stack-8  ; followed by FIQ stack 
91x_init_IAR.s:ABT_Stack   DEFINE  FIQ_Stack-8  ; followed by ABT stack 
91x_init_IAR.s: LDR  SP, =FIQ_Stack 

FreeRTOS/Demo/ARM9_STR91X_IAR$ grep -sri __ICFEDIT_size_fiqstack__ 
STR91x_FLASH.icf:define symbol __ICFEDIT_size_fiqstack__ = 0x10; 
STR91x_FLASH.icf:define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; 

サイズがSTR91x_FLASH.icfファイル、または91x_init_IAR.sで定義されているスタックことを意味し、 ARM9_STR91X_IARデモで、ビルドに使用したコンパイラ/スタートアップに応じてください。

関連する問題