<서론>
이클립스에서 아두이노 코딩을 위한 컴파일 작업을 했고, (http://knight76.tistory.com/entry/이클립스eclipse에서-avr-코딩해서-아두이노arduino-로-이미지-업로드하기-1)
이번에는 avrdude를 이용해서 이미지 업로드하는 방법을 소개한다.
<본론>
1. AVRDude 설정
프로퍼티 설정으로 가서, c/c++ build / Settings의 Addtiontal Tool in ToolChain을 선택한다.
“AVRDude” 설정에 대해서 check on 한다.
AVRDude item을 선택하고, Command 라인에 대한 설정 내용은 다음과 같이 수정한다.
“${COMMAND} -F -V -P com3 -b 115200 -p m328p -c arduino -C G:\Arduino-package\arduino-1.0\hardware\tools\avr\etc\avrdude.conf -U flash:w:arduino-test.hex”
망치 버튼을 눌러 동작을 시켜본다.
avrdude 툴을 써서 잘 이미지(hex)를 업로드하는 것을 확인할 수 있다.
make all Program: 20130 bytes (61.4% Full) Data: 544 bytes (26.6% Full)
avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e950f Writing | ################################################## | 100% 3.23s avrdude: 20130 bytes of flash written avrdude done. Thank you. Finished building: avrdudedummy **** Build Finished **** |
이렇게 이클립스에서 사용하거나 따로 컴맨드 창에서 동작시켜도 된다.
>avrdude -P com3 -b 115200 -p m328p -c arduino -C../etc/avrdude.conf -F -e -U flash:w:test.hex
이런 설정은 하나하나 확인하면서 테스트했었는데. 그럴 필요가 없다. (소스 분석할 때는 없었는데/ ^^;; 완전 나의 삽질~ ㅎ)
hardware/arduino/boards.txt 파일을 보면 아래 arduino uno에 대한 설정 내용이 있다. 이 것만 잘 참조해도 avrdude 바로 쓸 수 있다.
uno.name=Arduino Uno |
<예제 파일 돌려보기>
1. 아두이노 스타일 코딩로 코딩하는 것은 어렵지 않다. 잘 동작된다.
main.cpp
#include <Arduino.h>
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
int main(void) {
init();
#if defined(USBCON)
USB.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
2. 그냥 코딩도 잘 돌아간다.
(http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC에 있는 예제)
main.cpp
#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
unsigned char counter;
DDRB = 0xFF;
while (1)
{
PORTB = 0xFF;
/* wait (10 * 120000) cycles = wait 1200000 cycles */
counter = 0;
while (counter != 50)
{
/* wait (30000 x 4) cycles = wait 120000 cycles */
_delay_loop_2(30000);
counter++;
}
/* set PORTB.2 low */
PORTB = 0x00;
/* wait (10 * 120000) cycles = wait 1200000 cycles */
counter = 0;
while (counter != 50)
{
/* wait (30000 x 4) cycles = wait 120000 cycles */
_delay_loop_2(30000);
counter++;
}
}
return 1;
}
<project source>
마치며..
이클립스 환경설정하면서 많은 감을 잡은 것 같다. 조금씩 avr도 공부하면서 펌웨어의 즐거움을 즐겨봐야지..
'아두이노' 카테고리의 다른 글
[아두이노] 온도와 습도 값을 구하기 (습도계, 온도계) - 습도 센서 HIH-4030와 온도 센서 TMP 36를 이용 (4) | 2012.01.30 |
---|---|
아두이노(arduino)와 연동하는 tmp36 (온도센서) (1) | 2012.01.10 |
이클립스(eclipse)에서 avr 코딩해서 아두이노(arduino) 로 이미지 업로드하기 #1 (0) | 2012.01.04 |
avrdude 실행 파일과 avrdude.conf 파일 (0) | 2011.12.30 |
아두이 개발 툴 없이 아두이노(Arduino) 소스 컴파일 해보기 (1) | 2011.12.30 |