STM32F103xx family의 Flash와 RAM 용량은 다음과 같다.

Flash 256KB, RAM 48KB인 STM32F103VCT6을 사용하는데 RAM이 48KB보다 큰것 같다???
이런건 참을수 없지! 바로 확인해 보자.
1. STM32F103VC_FLASH.ld 수정
_estack = 0x2000C000 → 0x2000CFFF
(C000 = 48KB를 넘어가는 임의의 값 CFFF로 설정)
_Min_Stack_Size = 0x400 → 0x9500
(stack 첫 주소가 48KB를 넘어가는 값으로 임의 설정. Descending Satck이라 스택 포인터가 맨 처음에 최상위 어드레스를 지정하고 낮은곳으로 자람)
/* Entry Point */
ENTRY(Reset_Handler)
/* Highest address of the user mode stack */
_estack = 0x2000CFFF; /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x9500; /* required amount of stack */
/* Specify the memory areas */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 256K
}
2. 컴파일 후에 map 파일을 열어서 stack이 48KB, 0x2000C000을 넘어갔는지 확인한다.
._user_heap_stack
0x20002cf4 0x9700 load address 0x080114a0
0x20002cf4 . = ALIGN (0x4)
0x20002cf4 PROVIDE (end, .)
[!provide] PROVIDE (_end, .)
0x20002ef4 . = (. + _Min_Heap_Size)
*fill* 0x20002cf4 0x200
0x2000c3f4 . = (. + _Min_Stack_Size)
*fill* 0x20002ef4 0x9500
0x2000c3f4 . = ALIGN (0x4)
실행 결과 아주 잘 돌아간다.
- 같은 계열은 전부 동일한 RAM size로 제작 했을것으로 생각된다. 넉넉한 인심!
(혹시 Flash도 크게 넣어 줬을까?)
(하지만 이런거 필요 없어요, shortage나 좀 해결해줘요)
- ST MCU shortage로 GigaDevice 복제품 테스트시 실행 되지 않는다. RAM 48KB
'ST > STM32F103C8' 카테고리의 다른 글
| STM32F103C8 - I2C LCD(SSD1306) (0) | 2025.08.08 |
|---|---|
| STM32F103C8 - LL driver + ADC + DMA (0) | 2025.08.08 |
| STM32F103C8 - 1cycle Time (0) | 2025.08.08 |
| STM32F103C8 - I2C HAL driver 오류 (0) | 2025.08.08 |
| STM32F103C8 - ADC(DMA interrupt) (1) | 2025.08.08 |