Arm 配置FreeRTOS ISR堆栈大小

Arm 配置FreeRTOS ISR堆栈大小,arm,kernel,embedded,interrupt,freertos,Arm,Kernel,Embedded,Interrupt,Freertos,FreeRTOS ISR上下文是否有单独的堆栈?它是固定的还是可配置的 #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 256 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 512 * 1024 ) ) 据我所知,该堆栈大小仅适用于一般任务,不适用于ISR。任何见解都会有所帮助 添加更多详细信息:这是一个专用FreeRTOS端口,在社区中不可用。该体系结

FreeRTOS ISR上下文是否有单独的堆栈?它是固定的还是可配置的

#define configMINIMAL_STACK_SIZE        ( ( unsigned short ) 256 )
#define configTOTAL_HEAP_SIZE           ( ( size_t ) ( 512 * 1024 ) )
据我所知,该堆栈大小仅适用于一般任务,不适用于ISR。任何见解都会有所帮助


添加更多详细信息:这是一个专用FreeRTOS端口,在社区中不可用。该体系结构是arm926ej-s(它可以支持成熟的linux内核MMU支持,但需要在其上运行RTOS)

ISR堆栈大小由端口中的启动代码配置。有两个ISR:FIQ和IRQ,每个都有自己的堆栈

在这里,我搜索了一个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 Demo中定义的,与您用来构建的编译器/启动程序相对应。

IAR定义符号ICFEDIT_size_cstack=0x400的icf中也有堆栈/堆大小;这是干什么用的?