스택 사용량 및 스택 사용량 제어 파일
기술노트 61385
아키텍처:
Arm, RX
컴포넌트:
general
업데이트:
2021-07-15 오후 10:11
소개
스택은 "IAR C/C++ Development Guide", "Storage of auto variables and parameters" 장에 설명되어 있습니다. 이 기술 노트에서는 응용 프로그램에서 스택 사용 통계를 가져오는 방법을 설명하고 스택 사용 제어 파일(.suc)의 구문도 보여 줍니다.
예제
다음 링크에서 예제 프로젝트를 다운로드 하세요: Example project for IAR Embedded Workbench for ARM 7.20.1.zip.
논의
단순 예제 프로젝트에는 'main' 및 'test_func' 함수가 포함되어 있습니다. 스택 사용 분석을 활성화하려면 다음 프로젝트 옵션이 활성화됩니다: Project > Options > Linker > Advanced > Enable stack usage analysis
이제 링커 맵 파일은 "STACK USAGE
"라는 섹션에 스택 사용 정보를 포함합니다. 예를 들어:
Maximum call chain 20 bytes
"__iar_program_start" 0
"__cmain" 0
"main" 16
"test_func" 4
예제 프로젝트에는 두 개의 인터럽트 핸들러인 'SysTick_Handler'와 'UsageFault_Handler'도 포함되어 있습니다. OS 태스크 'test_task'도 포함되어 있습니다. 이러한 기능은 (직접) 다른 사용자가 호출하지 않으므로 스택 사용 제어 파일(.suc)에서 다음을 지정해야 합니다:
call graph root [task] : test_task;
call graph root [interrupt] : SysTick_Handler, UsageFault_Handler;
call graph root [task] : test_task;
call graph root [interrupt] : SysTick_Handler, UsageFault_Handler;
위와 같이 스택 사용 분석은 이제 이러한 (호출되지 않은) 함수가 "호출 그래프 루트"라는 것을 안다. (제어 파일을 사용하는 대신 #pragma call_graph_root
를 사용할 수 있음)
자세한 정보
"IAR C/C++ Development Guide
"에서, "Stack usage analysis
" 챕터를 확인하시기 바랍니다.
스택 사용랑 제어 파일 구문에 대해서, "The stack usage control file
" 챕터를 확인하시기 바랍니다.
C-SPY에서 디버깅 동안 런타임 스택 사용량 정보를 얻으려면, 다음을 활성화: Tools > Options > Stack > 'Enable graphical stack display and stack usage tracking'. C-SPY에서, View > Stack window를 엽니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.