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

STM32F103VC datasheet 중

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

+ Recent posts