본문 바로가기

프로그래밍/임베디드12

gcc optimazation option (STM32F3, STM32F4) 테스트 하고 있는 MCU에서 gcc 최적화 옵션을 어떻게 설정하느냐에 따라서 다른 결과를 경험했다. 이것도 모르고 일주일 정도 삽질을 했다. Cortex-M4 MCU를 gcc-arm을 이용하여 빌드 시에, gcc Option 및 MCU 속도에 따라서 정상적인 결과가 나오기도 하고, 원하지 않는 엉뚱한 결과가 나오기도 했다. 처음에는 gcc 최적화 옵션의 문제인지 모르고 다른 쪽의 문제인지 알고 한참을 검토했으나, 결국 최적화 옵션이 문제였다. 아래는 gcc 옵션에 따라서 알고리즘의 정상 동작/비정상 동작의 결과를 정리한 것이다. Cortex-M4 기반 MCU Clock -Os 옵션 -O0, -O3 옵션 STM32F4 168 MHz 알고리즘 정상 동작 알고리즘 정상 동작 STM32F3 72 MHz 알고리즘.. 2013. 3. 12.
ARM Cortex-M의 효과적인 코딩 방법 소개 8/16 bit MCU에 코드 사이즈 비교하고, 효과적인 코딩 방법 소개함. http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_(full).pdf 2013. 2. 3.
.bin 파일과 .hex 파일의 이해 임베디드 시스템의 경우 빌드된 바이너리 파일을 MCU에 다운로드 하게 되는데, 이때 .bin과 .hex 파일을 주로 이용하게 된다. 본 포스트에서는 이 둘이 어떠한 의미이면 어떤 특징들이 있는지를 살펴보도록 하겠다. 간단히 말하면 .bin 파일은 말 그대로 0과 1로 이루어진 파일이고, hex 파일은 이것을 hex로 바꾼 후에 이것을 ASCII 코드로 변환한 파일이다. 이렇게 ASCII 코드로 변환해야 사람이 볼 수 있고, 추가적은 정보도 보낼 수 있기 때문이다.또한 hex 파일에는 프로그램 시작 주소등의 정보등이 담겨 있다. bin 파일은 00번지 부터 시작하는 것으로 가정해서 만들어서, 만약 00번지에서 시작하지 않는다면, 00부터 시작 주소 까지는 0x00이나 0xff 등으로 채워지게 된다. 따라서.. 2013. 2. 3.
ARM Cortex-M에서 빌드 정보로 Flash(ROM) 및 RAM 사이즈 계산 ARM Cortex 개발 시 툴체인으로 빌드 후에 생성되는 정보로 필요한 Flash 및 RAM 사이즈를 계산하는 방법으 아래와 같습니다. 출처: http://stackoverflow.com/questions/5430284/rom-and-ram-in-arm 만약 툴체인으로 빌드 후에 아래와 같은 정보를 얻었다면, [출력된 정보]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 L.. 2013. 2. 3.