왜 hex 가 필요한가?
플래시에 쓰기 위해서 hex 가 필요하다. hex 파일을 보면 알겠지만, 각각의 주소가 적혀있다. DACS 의 경우, 가장 처음이 0x7fe00000 이다. 내가 나중에 해야 할 BSP 역시 hex 로 만들어야 한다. 현재 플래시가 2M 할당되어 있다. 하지만, 플래시에 구울 때, hex → bin 으로 바뀌면서, 용량이 약간 줄어든다. 그래서 hex 파일의 용량이 3.5M 정도 되어도, 구울 수 있는 것이다.
hex 를 만들기 위해 필요한 것들
필요한 것들은 다음과 같다.
- map 파일 : 컴파일 할 때 생성된다. 만일 자동으로 생성이 안되면, makefile 을 수정해주어야 한다.
- initfunc.tco : 부팅할 때 필요한 루틴이 들어가 있다.
잘 감이 안 잡힌 다면, DACS1000 의 makefile 이나, 5517ref 의 testapp1 의 makefile 을 참고하기 바란다.
st20cc -debug-runtime -g -LC:/stm/5517ref/lib -LC:/stm/5517ref/config/chip -LC:/stm/5517ref/config/board -LC:/stm/5517ref/config/platform -LC:/stm/5517ref/config/platform -T mb382_um.cfg -M flashapp1.map -romimage -o flashapp1.hex initfuncs.tco main.tco boot.tco pio.tco evt.tco errors.tco uart.tco tbx.tco i2c.tco sections.tco cfg.tco tsmux.tco pwm.tco scart.tco layer.tco vid.tco denc.tco vmix.tco avmem.tco aud.tco clkrv.tco tuner.tco vtg.tco stpti.tco transport.tco service.tco lists.tco testapp1.tco C:/stm/5517ref/lib/stapi_stpti.lib os20.lib os20intc1.lib os20ilc3.lib -p board_init_hex -o flashapp1.hex
위의 명령을 잘 보면, 대충 감을 잡을 수 있다. 중요한 것은 아래의 표와 같다.
구문 | 설명 |
-M flashapp1.map | 컴파일시 생긴 map 파일을 지정한다. |
-romimage -o flashapp1.hex | 생성할 hex 파일명을 지정한다. |
initfuncs.tco… | hex 파일에 포함할 tco 파일을 지정한다. |
-o flashapp1.hex | 생성할 hex 파일명을 지정한다. |
위의 옵션들을 변경하면, 어떤 프로그램이든지 hex 파일을 만들 수 있다.