본문 바로가기
프로그래밍/임베디드

ARM Cortex-M에서 빌드 정보로 Flash(ROM) 및 RAM 사이즈 계산

by choies1 2013. 2. 3.

ARM Cortex 개발 시 툴체인으로 빌드 후에 생성되는 정보로 필요한 Flash 및 RAM 사이즈를 계산하는 방법으 아래와 같습니다.



만약 툴체인으로 빌드 후에 아래와 같은 정보를 얻었다면,

[출력된 정보]
Program Size: Code=1264 RO-data=16 RW-data=0 ZI-data=1384

[계산 방법]

Flash = Code + RO data + RW data

ROM = RW data + ZI data

[계산 원리 설명]

Here I tried to illustrate how a typical program looks like for the above-mentioned LPC1768:

+-----------+ 0x1000 8000 \
|  Unused   |             |
+-----------+             |
|  ZI data  | <--(clear)  | RAM
+-----------+             |
|  RW data  | <--(copy)---|---+
+-----------+ 0x1000 0000 /   |
                              |
                              |
+-----------+ 0x0008 0000 \   |
|  Unused   |             |   |
+-----------+             |   |
|  RW init  |-------------|---+
+-----------+             |
|  RO data  |             | ROM (Flash)
+-----------+             |
| User code |             |
+-----------+             |
| Boot code |             |
+-----------+             |
|  Vectors  |             |
+-----------+ 0x0000 0000 /

Thus, to calculate the used ROM (flash) space, you need to add up code, RO-data and RW-data. Used RAM will be the sum of RW-data and ZI-data. So, for your case, it's 1264+16+0=1280 bytes of flash and 0+1384=1384 bytes of RAM.


위의 것은 Cortex-M3의 경우이고, 각자의 MCU의 Memory Map 정보를 봐야 정확한 계산이 가능하다.

*: not always true: I think Cortex-M0 chips have a single data/instruction bus.