avrdude 初めの一歩

work spaceに avrdude.confをおき、
1) m328pの記述を確認
2) diecimilaの記述を確認。

[hirasawa@deb505-64-32 avrdude-5.10]$ pwd
/home/hirasawa/Desktop/avr-dude/avrdude-5.10
[hirasawa@deb505-64-32 avrdude-5.10]$ cat avrdude.conf | grep -A 200 m328p
    id              = "m328p";
    desc            = "ATMEGA328P";
     has_debugwire = yes;
     flash_instr   = 0xB6, 0x01, 0x11;
     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
	             0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode  = 0x86;
    # avr910_devcode = 0x;
    signature       = 0x1e 0x95 0x0F;
    pagel           = 0xd7;
    bs2             = 0xc2;
    chip_erase_delay = 9000;
    pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
                       "x x x x x x x x x x x x x x x x";

    chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
                       "x x x x x x x x x x x x x x x x";

    timeout         = 200;
    stabdelay       = 100;
    cmdexedelay     = 25;
    synchloops      = 32;
    bytedelay       = 0;
    pollindex       = 3;
    pollvalue       = 0x53;
    predelay        = 1;
    postdelay       = 1;
    pollmethod      = 1;

    pp_controlstack     =
	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    resetdelay          = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

    memory "eeprom"
        paged           = no;
        page_size       = 4;
        size            = 1024;
        min_write_delay = 3600;
        max_write_delay = 3600;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read            = " 1 0 1 0 0 0 0 0",
                          " 0 0 0 x x x a9 a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " o o o o o o o o";
    
        write           = " 1 1 0 0 0 0 0 0",
                          " 0 0 0 x x x a9 a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";

	loadpage_lo	= "  1   1   0   0      0   0   0   1",
			  "  0   0   0   0      0   0   0   0",
			  "  0   0   0   0      0   0  a1  a0",
			  "  i   i   i   i      i   i   i   i";

	writepage	= "  1   1   0   0      0   0   1   0",
			  "  0   0   x   x      x   x   a9  a8",
			  " a7  a6  a5  a4     a3  a2   0   0",
			  "  x   x   x   x      x   x   x   x";

	mode		= 0x41;
	delay		= 5;
	blocksize	= 4;
	readsize	= 256;
        ;

    memory "flash"
        paged           = yes;
        size            = 32768;
        page_size       = 128;
        num_pages       = 256;
        min_write_delay = 4500;
        max_write_delay = 4500;
        readback_p1     = 0xff;
        readback_p2     = 0xff;
        read_lo         = " 0 0 1 0 0 0 0 0",
                          " 0 0 a13 a12 a11 a10 a9 a8",
                          " a7 a6 a5 a4 a3 a2 a1 a0",
                          " o o o o o o o o";
        
        read_hi          = " 0 0 1 0 1 0 0 0",
                           " 0 0 a13 a12 a11 a10 a9 a8",
                           " a7 a6 a5 a4 a3 a2 a1 a0",
                           " o o o o o o o o";
        
        loadpage_lo     = " 0 1 0 0 0 0 0 0",
                          " 0 0 0 x x x x x",
                          " x x a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";
        
        loadpage_hi     = " 0 1 0 0 1 0 0 0",
                          " 0 0 0 x x x x x",
                          " x x a5 a4 a3 a2 a1 a0",
                          " i i i i i i i i";
        
        writepage       = " 0 1 0 0 1 1 0 0",
                          " 0 0 a13 a12 a11 a10 a9 a8",
                          " a7 a6 x x x x x x",
                          " x x x x x x x x";

        mode        = 0x41;
        delay       = 6;
        blocksize   = 128;
        readsize    = 256;

        ;
        
    memory "lfuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
                          "x x x x x x x x o o o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
                          "x x x x x x x x i i i i i i i i";
        ;
    
    memory "hfuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
                          "x x x x x x x x o o o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
                          "x x x x x x x x i i i i i i i i";
        ;
    
    memory "efuse"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
                          "x x x x x x x x x x x x x o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
                          "x x x x x x x x x x x x x i i i";
        ;
    
    memory "lock"
        size            = 1;
        min_write_delay = 4500;
        max_write_delay = 4500;
        read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
                          "x x x x x x x x x x o o o o o o";
        
        write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
                          "x x x x x x x x 1 1 i i i i i i";
        ;
    
    memory "calibration"
        size            = 1;
        read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
                          "0 0 0 0 0 0 0 0 o o o o o o o o";
        ;
    
    memory "signature"
        size            = 3;
        read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
                          "x x x x x x a1 a0 o o o o o o o o";
        ;
;

#------------------------------------------------------------
# ATmega88P
#------------------------------------------------------------

part
    id              = "m88p";
    desc            = "ATMEGA88P";
     has_debugwire = yes;
     flash_instr   = 0xB6, 0x01, 0x11;
     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
	             0x99, 0xF9, 0xBB, 0xAF;
    stk500_devcode  = 0x73;
    # avr910_devcode = 0x;
    signature       = 0x1e 0x93 0x0F;
    pagel           = 0xd7;
    bs2             = 0xc2;
    chip_erase_delay = 9000;
[hirasawa@deb505-64-32 avrdude-5.10]$ cat avrdude.conf | grep -A 20 diecimila
#arduino diecimila
programmer
  id    = "diecimila";
  desc  = "FT232R Synchronous BitBang";
  type  = ft245r;
  miso  = 3;  # CTS X3(1)
  sck   = 5;  # DSR X3(2)
  mosi  = 6;  # DCD X3(3)
  reset = 7;  # RI  X3(4)
;

programmer
  id    = "usbasp";
  desc  = "USBasp, http://www.fischl.de/usbasp/";
  type  = usbasp;
;

programmer
  id    = "butterfly";
  desc  = "Atmel Butterfly Development Board";
  type  = butterfly;
;

[hirasawa@deb505-64-32 avrdude-5.10]$ 

以下の環境にて実施
* hpML115 G5
* Debian 5 64bit

                                                    • -

写真(ぼけぼけですまねぇ)のように
秋月のAE-ATmage boardにまっさらのATMega328Pをつっこむ

X3Port
1 Whilte
2 Black
3 Green
4 Red
の配線の色配置とすると

ICSP側は
1 2
3 4
5 6
てな物理的な位置関係とすると、
W -
B G
R -
のように接続する。

(追記、ブートローダを書き込むときは、x4のジャンパー(RX,TX,RESET)ははずしておくこと)


AE-ATMegaボードの上のPowerSELのジャンパーは、USB(からの給電)側にセット

RS232-USB ブリッジモジュール上の2つのジャンパーは
J1 は1-2ピン間をショートさせる。(VCCI/Oを内部の3.3Vにてドライブ)
  ちなみにJ1の2-3ピン間をショートさせると、VCCI/Oを外部VCCより供給)
J2 はopen. (RS-232convert chipのVCCpinへの給電は外部のVCCピンから供給)
  ちなみにJ2をショートすると、R-232converter chipのVccPinへの給電は、USB端子からの給電

ややこしいねw (わかりにくくてすまんね)

1) usbserialドライバモジュールとftdi_sioドライバモジュールをはずさんと動かん

deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# ./avrdude  -C avrdude.conf -c diecimila  -p m328p -t -B 4800
avrdude: lpt1 open failed 

deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# lsmod | grep serial
usbserial              36720  1 ftdi_sio
deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# rmmod ftdi_sio
deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# 
deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# lsmod |grep serial
usbserial              36720  0 
deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# rmmod usbserial
deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# ./avrdude  -C avrdude.conf -c diecimila  -p m328p -t -B 4800
avrdude: BitBang OK 
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK 

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f
avrdude> 

2) -P /dev/ttyUSB0などの指定すると動かんよ

一発目はこんなかんじで、エラーがでた。

avrdude: Device signature = 0x1e950f
avrdude: Expected signature for ATMEGA168 is 1E 94 06
Double check chip, or use -F to override this check.

乗っかっているAVRが ATMEGA328なので、上のエラーがでるんだとおもうの
ううむ

deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# ./avrdude  -C avrdude.conf -c diecimila  -p m168 -t -B 4800
avrdude: BitBang OK 
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK 

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f
avrdude: Expected signature for ATMEGA168 is 1E 94 06
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# 

  • p m328とかにパラメータを変更したりなんかして

試行錯誤のうえ、ようやく一歩めをふみだした
こんなかんじです

コマンドプロンプトを戻ってきてるし、うごいてんじゃねw

deb505-64-32:/home/hirasawa/Desktop/avr-dude/avrdude-5.10# ./avrdude  -C avrdude.conf -c diecimila  -p m328p -t -B 4800
avrdude: BitBang OK 
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK 

 ft245r:  bitclk 4800 -> ft baud 2400
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f
avrdude> 
avrdude> 
avrdude> 

プロンプトからhelpを叩いてみる (んで、sig と part コマンドを叩いてみる)

avrdude> help
>>> help 
Valid commands:

  dump   : dump memory  : dump   
  read   : alias for dump
  write  : write memory : write     ... 
  erase  : perform a chip erase
  sig    : display device signature bytes
  part   : display the current part information
  send   : send a raw command : send    
  parms  : display adjustable parameters (STK500 only)
  vtarg  : set  (STK500 only)
  varef  : set  (STK500 only)
  fosc   : set  (STK500 only)
  sck    : set  (STK500 only)
  spi    : enter direct SPI mode
  pgm    : return to programming mode
  help   : help
  ?      : help
  quit   : quit

Use the 'part' command to display valid memory types for use with the
'dump' and 'write' commands.

avrdude> 

avrdude> sig
>>> sig 

Reading | ################################################## | 100% 0.00s

Device signature = 0x1e950f

avrdude> part
>>> part 

AVR Part                      : ATMEGA328P
Chip Erase delay              : 9000 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        65     5     4    0 no       1024    4      0  3600  3600 0xff 0xff
  flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
  lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
  hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
  efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
  lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
  calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
  signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

avrdude>