개요
STM32 에서 사용가능한 힙 과 스택 메모리 사이즈 설정하기.
사용하는 IDE 에 따라서 힙 , 스택 사이즈 설정되는 곳이 다르다.
- KEIL MDK-ARM 에서는 파일 startup_stm32xxx.s 에서 힙과 스택 최대 사이즈 지정한다.
- SW4STM32 에서는 파일 STM32xxx_FLASH.ld 에서 힙과 스택 최대 사이즈 지정한다.
설정된 최대 힙사이즈 이하에서만 메모리 동적할당 가능하다. 초과하는 경우 malloc 반환값이 null 로 메모리 할당 실패한다.
코드내에서의 스택 메모리 할당량이 지정된 스택사이즈 초과하는 경우에는 컴파일 단계에서 알 수 있기에 조치하기 편리하나, 코드내에서 동적 할당되는 경우에는 컴파일 단계에서 알 수 없기에 동적 할당 할때마다 malloc 함수의 반환값의 실패 여부 필수 점검하여 메모리 할당 실패에 대응가능해야한다.
KEIL MDK-ARM 에서 힙, 스택 사이즈 설정
- 파일 startup_stm32xxx.s 의 아래 처럼 기록되어있다. 이 값을 필요에 따라 수정하여 증가, 감소 가능.
- 아래 예에서는 Heap 사이즈를 0x4000 (16,384 byte) 로 설정한것.
SW4STM32 에서 Heap Stack 사이즈 설정
- 파일 STM32xxx_FLASH.ld
STM32CubeMX 에서 Heap Stack 사이즈 설정부
- Project Manager 에서의 아래 붉은 박스 부분에 기록한 값이 상기 파일들(startup_stm32xxx.s, STM32xxx_FLASH.ld) 에 자동 기록된다.
연관
첫 등록 : 2019년 12월 29일
최종 수정 :
단축 주소 : https://igotit.tistory.com/2436
'임베디드.일렉트로닉스 > STM32' 카테고리의 다른 글
STM32. 버그 해결. SPI 통신. 첫 SPI 송수신 데이터 비트 밀림 . 해결방법. (0) | 2020.01.19 |
---|---|
GCC 컴파일러 optimization 위험성. 예 : SW4STM32 에서 optimization 에 따라 float 변수 바이트 단위 접근시. (0) | 2020.01.13 |
STM32. EXTI (Extented Interrupts and events controller) (0) | 2019.12.22 |
STM32. System tick timer 인터럽트 사용방법. (0) | 2019.12.15 |
SW4STM32(이클립스). add my own library folder to project (0) | 2019.12.11 |
댓글