맥에서 AVR 개발 하기 4 : 다운로더 설치 및 프로그램 다운로드

 

 


맥에서 AVR 개발하기 1 : AVR 툴체인 설치하기

맥에서 AVR 개발하기 2 : 개발 프로그램 컴파일하기

맥에서 AVR 개발하기 3 : ISP 드라이버 설치하기

맥에서 AVR 개발하기 4 : 다운로더 설치 및 프로그램 다운로드


 

0. 개요

 

이전 강좌에서 ISP 드라이버를 설치하였습니다.

ISP가 정상적으로 연결되어 /dev 아래에 디바이스가 보인다면 모든 준비가 완료된 것입니다.

이제 다운로드 프로그램을 설치하고 앞에서 컴파일해 놓은 HEX 파일을 다운로드 해 보도록 하겠습니다.

 

1. 다운로드 프로그램 설치하기

 

맥에서 AVR 타겟보드에 다운로드 할 수 있는 프로그램은 avrdude 입니다.

avrdude는 다음의 공식 사이트에서 소스를 다운받아 컴파일하여 사용할 수 있습니다.

http://savannah.nongnu.org/projects/avrdude

 

 하지만, avrdude의 경우는 Homebrew 패키지 관리자를 사용하여 설치하도록 하겠습니다.

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

 

 

 

top

Write a comment