맥에서 AVR 개발 하기 4 : 다운로더 설치 및 프로그램 다운로드
맥에서 AVR 개발하기 2 : 개발 프로그램 컴파일하기
맥에서 AVR 개발하기 3 : ISP 드라이버 설치하기
맥에서 AVR 개발하기 4 : 다운로더 설치 및 프로그램 다운로드
0. 개요
이전 강좌에서 ISP 드라이버를 설치하였습니다.
ISP가 정상적으로 연결되어 /dev 아래에 디바이스가 보인다면 모든 준비가 완료된 것입니다.
이제 다운로드 프로그램을 설치하고 앞에서 컴파일해 놓은 HEX 파일을 다운로드 해 보도록 하겠습니다.
1. 다운로드 프로그램 설치하기
맥에서 AVR 타겟보드에 다운로드 할 수 있는 프로그램은 avrdude 입니다.
avrdude는 다음의 공식 사이트에서 소스를 다운받아 컴파일하여 사용할 수 있습니다.
하지만, avrdude의 경우는 Homebrew 패키지 관리자를 사용하여 설치하도록 하겠습니다.
Homebrew 설치 및 사용방법에 관한 내용은 다음을 참고하시기 바랍니다.
avrdude를 설치하기 위하여 터미널에서 다음의 명령어를 입력합니다.
homebrew에서 avrdude를 설치하는데 필요한 여러가지 패키지들을 추가로 설치한 후 avrdude 를 설치합니다.
$ brew install avrdude
==> Installing dependencies for avrdude: libusb, libusb-compat, libftdi0,
==> Installing avrdude dependency: libusb
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libusb-1.0.
######################################################################## 100.0%
==> Pouring libusb-1.0.18.mavericks.bottle.tar.gz
/usr/local/Cellar/libusb/1.0.18: 11 files, 332K
==> Installing avrdude dependency: libusb-compat
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libusb-comp
######################################################################## 100.0%
==> Pouring libusb-compat-0.1.5.mavericks.bottle.tar.gz
/usr/local/Cellar/libusb-compat/0.1.5: 12 files, 132K
==> Installing avrdude dependency: libftdi0
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libftdi0-0.
######################################################################## 100.0%
==> Pouring libftdi0-0.20.mavericks.bottle.tar.gz
/usr/local/Cellar/libftdi0/0.20: 18 files, 244K
==> Installing avrdude dependency: libelf
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/libelf-0.8.
######################################################################## 100.0%
==> Pouring libelf-0.8.13.mavericks.bottle.tar.gz
/usr/local/Cellar/libelf/0.8.13: 11 files, 264K
==> Installing avrdude
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/avrdude-6.1
######################################################################## 100.0%
==> Pouring avrdude-6.1.mavericks.bottle.tar.gz
/usr/local/Cellar/avrdude/6.1: 9 files, 1.0M
처음 구입하였거나 OS X를 새로 설치한 맥에서는 문제없이 설치 되지만 오래 사용한 맥에서는 예상치 못한 에러가 나올 수 있습니다.
필자의 맥에서는 다음과 같은 에러 메시지가 나왔습니다.
Error: You must `brew link libusb-compat’ before avrdude can be install
에러 메시지가 알려주는데로 다음과 같이 실행 하였습니다.
또 다음과 같은 에러가 나옵니다. 몇가지 파일들이 이미 있으므로 아래와 같이 하라는 메시지 입니다.
$ brew link libusb-compat
Linking /usr/local/Cellar/libusb-compat/0.1.5...
Warning: Could not link libusb-compat. Unlinking...
Error: Could not symlink file: /usr/local/Cellar/libusb-compat/0.1.5/include/usb.h
Target /usr/local/include/usb.h already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
brew link —overwrite formula_name
To list all files that would be deleted:
brew link —overwrite —dry-run formula_name
역시나 알려주는데로 실행합니다.
$ brew link —overwrite libusb-compact
그런 다음 다시 avrdude를 설치합니다.
$ brew install avrdude
2. HEX 파일 다운로드하기
avrdude 설치가 완료되었으면 이제 avrdudu를 사용하여 HEX 파일을 다운로드 합니다.
avrdude 사용법은 다음과 같습니다.
아래의 사용법은 USB를 사용한 ISP의 한 예이며 다른 종류의 프로그래머를 사용할 경우 다를 수 있습니다.
$ avrdude -v -u -p <partno> -c <programmer> -P <port> -U flash:w:<filename>:i
<partno> : MCU의 종류(Atmega8, Atmega128 등)
<programmer> : ISP 프로그래머의 종류(avrisp, avrispmkii, stk500 등)
<port> : 디바이스 포트(/dev/tty.usbserial-xxxxxxxx 등)
<filename> : HEX 파일명
그럼 사용방법에 맞춰 다운로드를 해보겠습니다.
HEX 파일을 준비하고 AVR ISP를 맥과 타겟보드에 연결한 후 타겟보드의 전원을 입력합니다.
그리고 터미널에서 다음과 같이 다운로드 명령어를 입력합니다.
하지만 다음과 같이 응답이 없다는 메시지가 나옵니다. (필자는 여기서 거의 하루를 소비하고 말았습니다. ㅠㅠ)
$ avrdude -v -u -p ATmega8 -c avrisp -P /dev/tty.usbserial-xxxxxxxx -U flash:w:SonicCalc.hex:i
avrdude: Version 6.1, compiled on Mar 23 2014 at 04:42:55
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/usr/local/Cellar/avrdude/6.1/etc/avrdude.conf"
User configuration file is "/Users/hjsong/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/tty.usbserial-xxxxxxxx
Using Programmer : avrisp
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
avrdude done. Thank you.
AVR용 ISP는 일반적으로 STK500, AVRISP mkII, AVR ISP 등이 있으며 대부분의 사용자는 AVR ISP를 사용할 것 입니다.
필자도 AVR ISP를 사용하고 있으며, 윈도우즈의 AVRStudio에서는 AVR ISP를 선택하여 프로그램을 하였습니다.
그런데 avrdude에서는 어떻게 된 일인지 avrisp를 선택하면 에러가 납니다.
해결 방법은 avrisp2나 avrispmkii를 선택하면 정상적으로 다운로드 됩니다.
avrdude -v -u -p ATmega8 -c avrisp2 -P /dev/tty.usbserial-xxxxxxxx -U flash:w:SonicCalc.hex:i
$ avrdude -v -u -p ATmega8 -c avrispmkii -P /dev/tty.usbserial-xxxxxxxx -U flash:w:SonicCalc.hex:i
그럼 다시 다운로드를 해보겠습니다.
$ avrdude -v -u -p ATmega8 -c avrisp2 -P /dev/tty.usbserial-xxxxxxxx -U flash:w:SonicCalc.hex:i
avrdude: Version 6.1, compiled on Mar 23 2014 at 04:42:55
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/usr/local/Cellar/avrdude/6.1/etc/avrdude.conf"
User configuration file is "/Users/hjsong/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/tty.usbserial-xxxxxxxx
Using Programmer : avrisp2
AVR Part : ATmega8
Chip Erase delay : 10000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff
flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00
lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500V2
Description : Atmel AVR ISP mkII
Programmer Model: AVRISP
Hardware Version: 18
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.04s
avrdude: Device signature = 0x1e9307
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "SonicCalc.hex"
avrdude: writing flash (8010 bytes):
Writing | ################################################## | 100% 6.04s
avrdude: 8010 bytes of flash written
avrdude: verifying flash memory against SonicCalc.hex:
avrdude: load data flash data from input file SonicCalc.hex:
avrdude: input file SonicCalc.hex contains 8010 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 5.29s
avrdude: verifying ...
avrdude: 8010 bytes of flash verified
avrdude done. Thank you.
다운로드가 완료되었습니다.
타겟보드가 정상적으로 동작하는지 확인하면 됩니다.
3. 마치며...
총 4회에 걸쳐서 맥에서 AVR 개발하기를 알아보았습니다.
그동안 맥을 사용하면서 개발프로그램은 어쩔 수 없이 윈도우즈에서 사용해야 한다는 불편함에 항상 아쉬웠었는데,
이로서 여러가지 개발 툴 중에 우선 한가지는 맥에서 개발 할 수 있게 되어 매우 기쁩니다.
전혀 안되는 것은 할 수 없지만 맥에서 개발 가능한 툴은 하나 하나 맥으로 옮겨 와야 겠습니다.
다음은 ARM 개발도 맥으로 옮겨 올 예정입니다.
ARM 개발은 원래 리눅스에서 작업을 하므로 의외로 쉬울것 같습니다.
참고) avrdude에서 사용되는 programmer 목록
2232HIO |
FT2232H based generic programmer |
4232h |
FT4232H based generic programmer |
89isp |
Atmel at89isp cable |
abcmini |
ABCmini Board, aka Dick Smith HOTCHIP |
alf |
Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ |
arduino |
Arduino |
arduino-ft232r |
Arduino: FT232R connected to ISP |
atisp |
AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> |
avr109 |
Atmel AppNote AVR109 Boot Loader |
avr910 |
Atmel Low Cost Serial Programmer |
avr911 |
Atmel AppNote AVR911 AVROSP |
avrftdi |
FT2232D based generic programmer |
avrisp |
Atmel AVR ISP |
avrisp2 |
Atmel AVR ISP mkII |
avrispmkII |
Atmel AVR ISP mkII |
avrispv2 |
Atmel AVR ISP V2 |
bascom |
Bascom SAMPLE programming cable |
blaster |
Altera ByteBlaster |
bsd |
Brian Dean’s Programmer, http://www.bsdhome.com/avrdude/ |
buspirate |
The Bus Pirate |
buspirate_bb |
The Bus Pirate (bitbang interface, supports TPI) |
butterfly |
Atmel Butterfly Development Board |
butterfly_mk |
Mikrokopter.de Butterfly |
bwmega |
BitWizard ftdi_atmega builtin programmer |
c2n232i |
serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts |
dapa |
Direct AVR Parallel Access cable |
dasa |
serial port banging, reset=rts sck=dtr mosi=txd miso=cts |
dasa3 |
serial port banging, reset=!dtr sck=rts mosi=txd miso=cts |
diecimila |
alias for arduino-ft232r |
dragon_dw |
Atmel AVR Dragon in debugWire mode |
dragon_hvsp |
Atmel AVR Dragon in HVSP mode |
dragon_isp |
Atmel AVR Dragon in ISP mode |
dragon_jtag |
Atmel AVR Dragon in JTAG mode |
dragon_pdi |
Atmel AVR Dragon in PDI mode |
dragon_pp |
Atmel AVR Dragon in PP mode |
dt006 |
Dontronics DT006 |
ere-isp-avr |
ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf> |
frank-stk200 |
Frank STK200 |
ft232r |
FT232R Synchronous BitBang |
ft245r |
FT245R Synchronous BitBang |
futurlec |
Futurlec.com programming cable. |
jtag1 |
Atmel JTAG ICE (mkI) |
jtag1slow |
Atmel JTAG ICE (mkI) |
jtag2 |
Atmel JTAG ICE mkII |
jtag2avr32 |
Atmel JTAG ICE mkII im AVR32 mode |
jtag2dw |
Atmel JTAG ICE mkII in debugWire mode |
jtag2fast |
Atmel JTAG ICE mkII |
jtag2isp |
Atmel JTAG ICE mkII in ISP mode |
jtag2pdi |
Atmel JTAG ICE mkII PDI mode |
jtag2slow |
Atmel JTAG ICE mkII |
jtag3 |
Atmel AVR JTAGICE3 in JTAG mode |
jtag3dw |
Atmel AVR JTAGICE3 in debugWIRE mode |
jtag3isp |
Atmel AVR JTAGICE3 in ISP mode |
jtag3pdi |
Atmel AVR JTAGICE3 in PDI mode |
jtagkey |
Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2 |
jtagmkI |
Atmel JTAG ICE (mkI) |
jtagmkII |
Atmel JTAG ICE mkII |
jtagmkII_avr32 |
Atmel JTAG ICE mkII im AVR32 mode |
lm3s811 |
Luminary Micro LM3S811 Eval Board (Rev. A) |
mib510 |
Crossbow MIB510 programming board |
mkbutterfly |
Mikrokopter.de Butterfly |
nibobee |
NIBObee |
o-link |
O-Link, OpenJTAG from www.100ask.net |
openmoko |
Openmoko debug board (v3) |
pavr |
Jason Kyle’s pAVR Serial Programmer |
pickit2 |
MicroChip’s PICkit2 Programmer |
picoweb |
Picoweb Programming Cable, http://www.picoweb.net/ |
pony-stk200 |
Pony Prog STK200 |
ponyser |
design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts |
siprog |
Lancos SI-Prog <http://www.lancos.com/siprogsch.html> |
sp12 |
Steve Bolt’s Programmer |
stk200 |
STK200 |
stk500 |
Atmel STK500 |
stk500hvsp |
Atmel STK500 V2 in high-voltage serial programming mode |
stk500pp |
Atmel STK500 V2 in parallel programming mode |
stk500v1 |
Atmel STK500 Version 1.x firmware |
stk500v2 |
Atmel STK500 Version 2.x firmware |
stk600 |
Atmel STK600 |
stk600hvsp |
Atmel STK600 in high-voltage serial programming mode |
stk600pp |
Atmel STK600 in parallel programming mode |
usbasp |
USBasp, http://www.fischl.de/usbasp/ |
usbasp-clone |
Any usbasp clone with correct VID/PID |
usbtiny |
USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ |
wiring |
Wiring |
xil |
Xilinx JTAG cable |
'Development' 카테고리의 다른 글
우분투에서 화면 캡쳐 (0) | 2014.09.19 |
---|---|
맥에서 AVR 개발하기 3 : ISP 드라이버 설치하기 (2) | 2014.04.28 |
맥에서 AVR 개발하기 2 : 개발 프로그램 컴파일하기 (0) | 2014.04.26 |
맥에서 AVR 개발하기 1 : AVR 툴체인 설치하기 (15) | 2014.04.24 |
댓글