개요 

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) 에 자동 기록된다. 

 

 

 

연관 

 

 

 

C/C++. 메모리 스택, 힙,지역변수, 동적 메모리 할당. stack, heap, new, delete

스택(Stack), 힙(Heap) C/C++ 에서의 스택이니, 힙이니 하는 것들은 C/C++ 컴파일러에서 메모리 핸들링 하는 것에 대한 기능적 메모리 구분 명칭. (타겟 시스템에 하드웨어적으로 스택, 힙 영역의 메모리가 따로..

igotit.tistory.com

 

 

C. malloc , free 메모리 동적 할당. 제거.

헤더파일 : stdlib.h void * malloc (uint32_t byte_size) 반환값 성공시 생성된 주소 포인터 실패시 NULL void free(void * ptr) - malloc 으로 생성된 메모리 영역 제거하는것. malloc, free 사용예. 1차원 배열..

igotit.tistory.com

 

 

 

 

 


첫 등록 : 2019년 12월 29일 

최종 수정 : 

단축 주소 : https://igotit.tistory.com/2436

 


 

Posted by 리치굿맨

댓글을 달아 주세요