지난번까지는 ARM Cortex-M3 기반의 MCU를 개발하는 방법에 대해서 설명을 했다.
이제 Cortex-M4를 이용하여 개발하는 방법에 대해서 설명한다. M3에 비하여 M4의 큰 특징은 DSP기능이 들어있어서 연산을 더 빨리할 수 있다는 것이다. 또한 M4의 경우 FPU 기능을 갖고 있는 MCU도 있어서, 빠른 실시간 연산이 필요한 Application에 활용하면 좋다.
코드 사이즈가 32Kbyte 이하의 경우는 대부분의 상용 컴파일러를 무료로 이용할 수 있다. 하지만, 코드 사이즈가 32Kbyte 이상인 경우는 상용 컴파일러를 구매해야 된다.
상용 컴파일러는 디버깅을 위한 다양한 기능을 제공하지만, 가격이 비싸서 구매가 쉽지 않을 수가 있다.
기능은 좀 제한 되고, 개발 환경을 구축하는데 약간(?) 노력이 들어가만 다행이 무료 컴파일러로 개발을 진행할 수가 있다.
지금까지는 CodeSourcery Lite를 이용해서 개발을 많이 진행해 왔으나, CodeSourcery Lite의 경우 FPU를 지원하지 않아서gcc arm toolchain을 이용하는 방법으로 설명한다.
[개발 환경 준비]
1. gcc arm toolchain 설치
https://launchpad.net/gcc-arm-embedded 에서 windows 버전 설치
(자세한 설치 방법은 http://hertaville.com/2012/05/28/gcc-arm-toolchain-stm32f0discovery/ 참조)
2. Atollic TrueStudio for ARM Lite 설치
(이것을 download 받아서 설치하려면 회원 가입이 필요합니다. 회원 가입시 전화번호 입력이 잘 되지 않았는데, 국가 번호를 꼭 넣어야 하는데, 국가 번호와 전화번호를 넣어도 자꾸만 형식이 안 맞다고 나오더라구요. 정당히 계속 넣다보면 어느 순간 될 것입니다.)
3. 윈도우용 make 및 rm 설치
Atollic TrueStudio for ARM Lite 설치 시 생성되는 폴더에서 make.exe와 rm.exe를 찾아서 “C:\Program Files\GNU Tools ARM Embedded\4.6 2012q2\bin” 에 복사
( http://hertaville.com/2012/05/28/gcc-arm-toolchain-stm32f0discovery/ 에서는 “GNU make for windows” 을 설치하라고 되어 있지만, 이왕에 Atollic TrueStudio for ARM Lite를 설치했으니 이것이 설치되면서 같이 설치된 make와 rm을 이용하도록 하자)
[gcc arm으로 빌드하기]
Atollic TrueStudio for ARM Lite 설치 후에 실행한 후에 자신의 mcu에 맞는 프로젝트 파일을 생성하면, startupcode(.s)와 link script(*.ld), makefile파일이 생긴다. 이것은 gcc arm에서도 그대로 활용할 수 있다. 특히 ld 파일은 만들기가 어려운데 이렇게 생성된 ld 파일을 이용하면 쉽게 개발 환경을 구축할 수 있다.
이제 생성된 makefile을 열어보면 arm-atollic-eabi 이라고 되어 있는 부분을 arm-none-eabi 로 수정하고, 도스 cmd 환경에서 make를 수행하면 된다.
(자세한 실행 방법은 http://hertaville.com/2012/05/28/gcc-arm-toolchain-stm32f0discovery/ 참조)
[참고]
1. STMicro사의 STM32 계열의 F/W SDK를 설치하면 startup 코드가 CMSIS라는 폴더에 제공되는데, gcc arm을 위해서는 gcc-ride7 것을 이용하면 된다.
2. gcc arm에서 빌드시 최적화 옵션 중 -O0는 동작하지만 -O1,2,3,s으로 하면 Assembler 오류가 발생할 수 있는데, 이것은 core-cm*.c 파일의 오류 때문이다. core-cm*.h의 v3.0 이상의 것을 찾아서 h 파일을 교체하면 이 문제가 해결 된다.(CMSIS ver. 3.0 에서는 core-cm*.c와 h로 있던 파일은 c 파일이 없어지고 core-cm*.h, core_cmFunc.h, core_cmInstr.h 등으로 변경 되었다. core-cm*.c가 없어진 대신 system_stm32f10x.c 의 파일은 main.c와 같은 폴더에 있어야 한다.)
'프로그래밍 > 임베디드' 카테고리의 다른 글
.bin 파일과 .hex 파일의 이해 (0) | 2013.02.03 |
---|---|
ARM Cortex-M에서 빌드 정보로 Flash(ROM) 및 RAM 사이즈 계산 (0) | 2013.02.03 |
ARM Cortex-M3 개발 하기 (0) | 2010.12.04 |
ARM Cortex M3 프로세서용 무료 개발환경 구축하기 (0) | 2010.11.22 |
ARM Cortex M3 프로세서로 임베디드 시스템 개발하기 (Introduction) (0) | 2010.11.22 |