2016-11-25 1 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입니다 (이것은 완전한 리눅스 커널 - MMU 지원을 지원할 수 있지만, 거기에 RTOS를 실행할 필요가있었습니다).

답변

1

ISR 스택 크기는 포트의 시작 코드로 구성됩니다. 두 개의 ISR : FIQ 및 IRQ가 있으며 각각은 자체 스택을 가지고 있습니다. 여기

나는 결과에 따라, 자사의 스택 구성에 대한 ARM9 FreeRTOS 데모를 검색 한 :

그것은 크기가 STR91x_FLASH.icf 파일 또는 91x_init_IAR.s에 정의되어 스택을 의미
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__ { }; 

, 그에 따라 컴파일 할 때 사용하는 컴파일러/시작 프로그램에 따라 ARM9_STR91X_IAR 데모에 있습니다.