C 소스를 가지고 윈도우에 설치된 체인툴을 가지고 크로스 컴파일을 해보려고 시도했다.
소스에 가장 먼저 #define 되어야 하는 부분은 AVR 타입에 대한 정보이다. 만약 이 부분을 넣지 않으면 warning과 함께 컴파일이 되지 않는다. avr/include/avr 디렉토리의 io.h 파일에 정의되어 있다.
…. #elif defined (__AVR_ATmega328P__) …. # if !defined(__COMPILING_AVR_LIBC__) … |
아두이노 우노(arduino uno) 라면 ATmega328 프로세스를 사용하고 있으므로, 다음과 같이 정의해야 한다.
#define __AVR_ATmega328P__
또는 avr-gcc 실행시 –mmcpu 파라미터값에 atmega328p를 추가해야 한다.
아주 간단한 소스를 컴파일하고 업로드하는 것을 해본다.
<test.c>
#define __AVR_ATmega328P__ int main() { while (1) { |
avr 칩에서 동작하는 바이너리 파일을 만든다.
> avr-gcc -O test.c -o test.bin
.text와 .data 파일이 포함하는 .hex 파일을 만든다.
>avr-objcopy -j .text -j .data -O ihex test.bin test.hex
.hex 파일을 가지고 아두이노 uno에 업로드를 하면 된다. [속도(b옵션) : 115200, 보드이름(p옵션) arduino 가 반드시 맞아야 한다.] 보드이름에 대한 자세한 정보는 avrdude.conf에 기록 되어 있음
>avrdude -P com3 -b 115200 -p m328p -c arduino -C../etc/avrdude.conf -F -e -U flash:w:test.hex
'아두이노' 카테고리의 다른 글
이클립스(eclipse)에서 avr 코딩해서 아두이노(arduino) 로 이미지 업로드하기 #1 (0) | 2012.01.04 |
---|---|
avrdude 실행 파일과 avrdude.conf 파일 (0) | 2011.12.30 |
아두이노 (arduino) 개발 툴 1.0 소스 분석 (0) | 2011.12.29 |
아두이노 개발 툴 소스 1.0 분석을 위한 환경 셋팅 (1) | 2011.12.28 |
프로세싱 언어와 PDE 코드 살펴보기 #2 (1) | 2011.12.20 |