스택 사용량 및 스택 사용량 제어 파일

기술노트 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를 엽니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.