ISP программатор Громова

разделы: AVR , Программаторы , дата: 5 марта 2014г.

Arduino в качестве ISP программатора безусловно хорошая вещь, но микроконтроллеры AVR не были бы столь популярны, если бы программатор для них нельзя было собрать "на коленках" соединив несколько проводков в нужной последовательности. Наверно один из самых простых ISP программаторов - программатор Громова. Практически все, что нужно знать о нем, написано здесь: Программатор Громова - COM программатор.

    Мне лишь остается добавить несколько замечаниий из личного опыта к той статье.
  1. Там в конце, в конфигурационный файл avrdude.conf предлагается добавить такие строки:
        programmer
          id = "GROMOV 'ivashka.my1.ru'";
          desc = "serial port banging, reset=dtr sck=rts mosi=txd miso=cts";
          type = serbb;
          reset = 4;
          sck = 7;
          mosi = 3;
          miso = 8;
        ;

    1)id лучше писать короче, успростите себе жизнь в командной строке. 2)В строке type = serbb; параметер надо взять в кавычки т.е. type = "serbb"; В версии avrdude 6.xx тип нужно писать в кавычках, хотя раньше работало без них.

  2. Не знаю, как в других операционных системах и дистрибутивах Linux, но у меня в Slackware перед началом работы тебуется сконфигурировать COM порт командой:
    # stty 9600 ignbrk -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo noflsh </dev/ttyS0
    Описание проблемы и ее решение изложено здесь: громов + avrdude

Еслы вам не впервой травить платы, проблем со сборкой программатора у вас не будет. А вот если не так, то получется у вас, скорее всего, как к меня ;) Программатор Громова на макетке:

Программатор Громова на паечной макетке:

Выглядит ужасно, да. но если у вас получется лучше, можете записать это себе в "плюсы" :)

    Пример работы с программатором:
  1. С предыдущего поста у меня остался микроконтроллер ATtiny45 с залитой в него программкой "Blink". Попробуем считать прошивку и записать ее снова.
  2. Считывание прошивки:
    $ avrdude -p attiny45 -c gromov -v -P /dev/ttyS0 -b9600 -U flash:r:blink.hex:i
    
    avrdude: Version 6.0.1, compiled on Nov 25 2013 at 14:33:17
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
    
             System wide configuration file is "/etc/avrdude.conf"
             User configuration file is "/home/slacker/.avrduderc"
             User configuration file does not exist or is not a regular file, skipping
    
             Using Port                    : /dev/ttyS0
             Using Programmer              : gromov
             Overriding Baud Rate          : 9600
             AVR Part                      : ATtiny45
             Chip Erase delay              : 4500 us
             PAGEL                         : P00
             BS2                           : P00
             RESET disposition             : possible i/o
             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     6     4    0 no        256    4      0  4000  4500 0xff 0xff
               flash         65     6    32    0 yes      4096   64     64  4500  4500 0xff 0xff
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
    
             Programmer Type : SERBB
             Description     : serial port banging, reset=dtr sck=rts mosi=txd miso=cts
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.00s
    
    avrdude: Device signature = 0x1e9206
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    avrdude: reading flash memory:
    
    Reading | ################################################## | 100% 1.66s
    
    avrdude: writing output file "blink.hex"
    
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    avrdude: safemode: Fuses OK (H:FF, E:DF, L:62)
    
    avrdude done.  Thank you.
    
  3. На выходе получаем копию прошивки в Intel HEX формате. Про формат можно почитать в Википедии: Intel HEX. Теперь считаем прошивку в RAW:
    $ avrdude -p attiny45 -c gromov -v -P /dev/ttyS0 -b9600 -U flash:r:blink.img:r
    
    avrdude: Version 6.0.1, compiled on Nov 25 2013 at 14:33:17
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
    
             System wide configuration file is "/etc/avrdude.conf"
             User configuration file is "/home/slacker/.avrduderc"
             User configuration file does not exist or is not a regular file, skipping
    
             Using Port                    : /dev/ttyS0
             Using Programmer              : gromov
             Overriding Baud Rate          : 9600
             AVR Part                      : ATtiny45
             Chip Erase delay              : 4500 us
             PAGEL                         : P00
             BS2                           : P00
             RESET disposition             : possible i/o
             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     6     4    0 no        256    4      0  4000  4500 0xff 0xff
               flash         65     6    32    0 yes      4096   64     64  4500  4500 0xff 0xff
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
    
             Programmer Type : SERBB
             Description     : serial port banging, reset=dtr sck=rts mosi=txd miso=cts
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.00s
    
    avrdude: Device signature = 0x1e9206
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    avrdude: reading flash memory:
    
    Reading | ################################################## | 100% 1.66s
    
    avrdude: writing output file "blink.img"
    
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    avrdude: safemode: Fuses OK (H:FF, E:DF, L:62)
    
    avrdude done.  Thank you.
    
  4. .. и сравним размеры файлов:
    slavanka:~: ls -l
    итого 8
    -rw-r--r-- 1 slacker users 1928 мар  5 12:25 blink.hex
    -rw-r--r-- 1 slacker users  802 мар  5 12:26 blink.img
    

    размер второго файла: 802 байта, это и есть размер прошивки в "чистом виде", т.е. "RAW"

  5. Ну и последнее, запись:
    avrdude -p attiny45 -c gromov -v -P /dev/ttyS0 -b9600 -U flash:w:blink.hex
    
    avrdude: Version 6.0.1, compiled on Nov 25 2013 at 14:33:17
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
    
             System wide configuration file is "/etc/avrdude.conf"
             User configuration file is "/home/slacker/.avrduderc"
             User configuration file does not exist or is not a regular file, skipping
    
             Using Port                    : /dev/ttyS0
             Using Programmer              : gromov
             Overriding Baud Rate          : 9600
             AVR Part                      : ATtiny45
             Chip Erase delay              : 4500 us
             PAGEL                         : P00
             BS2                           : P00
             RESET disposition             : possible i/o
             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     6     4    0 no        256    4      0  4000  4500 0xff 0xff
               flash         65     6    32    0 yes      4096   64     64  4500  4500 0xff 0xff
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
    
             Programmer Type : SERBB
             Description     : serial port banging, reset=dtr sck=rts mosi=txd miso=cts
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.00s
    
    avrdude: Device signature = 0x1e9206
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    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 "blink.hex"
    avrdude: input file blink.hex auto detected as Intel Hex
    avrdude: writing flash (802 bytes):
    
    Writing | ################################################## | 100% 0.40s
    
    avrdude: 802 bytes of flash written
    avrdude: verifying flash memory against blink.hex:
    avrdude: load data flash data from input file blink.hex:
    avrdude: input file blink.hex auto detected as Intel Hex
    avrdude: input file blink.hex contains 802 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 0.32s
    
    avrdude: verifying ...
    avrdude: 802 bytes of flash verified
    
    avrdude: safemode: lfuse reads as 62
    avrdude: safemode: hfuse reads as DF
    avrdude: safemode: efuse reads as FF
    avrdude: safemode: Fuses OK (H:FF, E:DF, L:62)
    
    avrdude done.  Thank you.
    
поделиться: