IAR에서 Stack 할당 계산
IAR에서 Map File이 생성되도록 설정하고 Stack 분석을 체크한 후 컴파일을 하면 Stack에 사용되는 용량이 나오고 총 용량의 합보다 더 큰 용량을 Stack에서 설정을 하면 됩니다.
동적 라이브러리로 생성하는 경우 동적라이브러리에 Stack 사이즈를 설정하지 않아도 되고 라이브러리를 불러 사용하는 프로그램에서 최소한 같은 용량이나 그 이상의 용량을 설정해주어야 인터럽트 발생시에 문제가 생기지 않는 듯 싶습니다.
Keil과 IAR을 컴파일 후 서로 결과가 달라 양쪽을 모두 사용하기 위해서는 양쪽 모두 확인해 주어야 합니다.(IAR에서 된다고 Keil에서 되는 것도 아니고 Keil에서 된다고 IAR에서 되는 것도 아니라서 확인 하지 않았다가 낭패를 볼 수 있습니다. 제가 그랬습니다.....)
Program entry
"mf_initialize": 0x08074485
Maximum call chain 2 692 bytes
"" 8
"" 8
"" in .o [2] 2 400
"" 64
"" in .o [2] 88
"" in mfapi.o [2] 24
"" 16
"" 64
"" 20
Uncalled function
"": 0x08077869
Maximum call chain 444 bytes
"" 80
"" 48
"" 32
"" in .o [2] 284
Uncalled function
"": 0x08077603
Maximum call chain 620 bytes
"" 24
"" 152
"" 128
"" 32
"" in .o [2] 284
Uncalled function
"": 0x0807772b
Maximum call chain 340 bytes
"" 16
"" 8
"" 32
"" in .o [2] 284
Uncalled function
"": 0x080775fb
Maximum call chain 56 bytes
"" 8
"" in mfapi.o [2] 16
"__iar_dlfree" 32
"segment_holding" in dlmalloc.o [4] 0
Uncalled function
"": 0x080744b3
Maximum call chain 8 bytes
"" 8
"" 0
Uncalled function
"": 0x080744df
Maximum call chain 0 bytes
"" 0
Uncalled function
"": 0x080744c7
Maximum call chain 0 bytes
"" 0
Uncalled function
"": 0x080774a5
Maximum call chain 144 bytes
"" 24
"" in mfapi.o [2] 16
"__iar_dlmalloc" 48
"sys_alloc" in dlmalloc.o [4] 56
"segment_holding" in dlmalloc.o [4] 0
Uncalled function
"prepend_alloc" in dlmalloc.o [4]: 0x08077b05
Maximum call chain 40 bytes
"prepend_alloc" in dlmalloc.o [4] 40
"abort" 0
"__exit" 0
'초보의 아웅다웅 설계하기 > STM32' 카테고리의 다른 글
ST에서 지원하는 Low Layer 드라이버 (0) | 2018.04.20 |
---|---|
HAL_UART_Receive_IT 사용하지 않기 (0) | 2018.04.17 |
ST Micro JTAG 단자를 IO로 사용하기 (0) | 2018.03.15 |
One Elf Section per Function 옵션??? (0) | 2018.02.08 |
특정값을 다른 메모리 번지에 저장하는 방법 (0) | 2017.11.05 |