Обновил программу-загрузчик HEX-файлов — gcUploader.
О самой программе прочитать (и скачать саму программу) можно в соответствующей статье, а здесь я напишу о том, что добавил нового. Изменений немного – всего два, но эти изменения значительно расширяют область применения данной программы.
Первое, что я сделал – это заменил AVRDUDE на свежую версию 6.3. Вообще, AVRDUDE можно самому менять, закидывая в папку с программой нужную версию (это может понадобиться, если у Вас какая-то особенная Дудка для работы с Вашим программатором).
Второе и главное, что я сделал (и что давно обещал) – это добавил в программу возможность самому прописывать нужные Ардуины. Более того, теперь программа умеет работать не только с Ардуинами, но и с любыми микроконтроллерами и программаторами поддерживаемыми Дудкой. Реализуется эта возможность путём прописывания строки параметров для AVRDUDE в файле gcUploader.ini
Как добавить поддержку новой платы (микроконтроллера, программатора)?
Для этого нужно открыть для редактирования файл конфигурации gcUploader.ini (это можно сделать прямо из gcUploader, нажав иконку плюсика возле окна выбора типа Ардуины) и добавить всего две строки.
Первая – это имя новой платы, вторая – командная строка для AVRDUDE.
Например, для Arduino Mega 2560 эти строчки будут выглядеть следующим образом:
[Mega 2560]
avrdude_param= -F -v -p m2560 -c wiring -P %1 -b 115200 -D -U flash:w:»%2″:i
После перезагрузки gcUploader, в списке выбора Type появится новое устройство.
По первой строке все понятно – это просто имя, а вот со второй немного сложней – для ее описания нужно знать, как работает AVRDUDE.
Работа AVRDUDE с командной строки.
Итак, AVRDUDE – это консольная программа, все параметры которой передаются из командной строки при запуске программы.
Вот так, например, выглядит строка запуска avrdude.exe, которая прошьет в Arduino UNO прошивку C:\avr\mine.hex
avrdude.exe -F -v -p m328p -c arduino -P com1 -b 115200 -D -U flash:w:»C:\avr\mine.hex»:i
Любые варианты взаимодействия с микроконтроллерами и программаторами прописываются при помощи соответствующих опций и их параметров.
Опций и параметров у AVRDUDE много. Здесь я опишу лишь самое основное, необходимое для понимания работы. Если нужно более полное описание — читайте официальную документацию, либо статьи в интернете, например, вот здесь хорошо написано.
Из всего множества опций, нас, прежде всего, интересует следующие (выделил жирным из примера выше):
-F -v -p m328p -c arduino -P com1 -b 115200 -D -U flash:w:»C:\avr\mine.hex»:i
—P – задает порт, через который работает программатор
в gcUploader.ini эта опция прописывается вот так —P %1
вместо ключа %1, при старте прошивки, подставится выбранный Вами порт.
—b – задает скорость порта
—p – задает тип микроконтроллера, который нужно прошить, например: m328p=ATmega328, m168=ATmega168, m8=ATmega8 и т.д. (см. в документации).
—c – задает тип программатора, например: для внутреннего загрузчика Ардуин – это, чаще всего, arduino, но может быть и другое — avr109, wiring. А вообще можно установить любой из поддерживаемых avrdude программаторов (см. в документации, или в таблице ниже)
—U flash:w:»C:\avr\mine.hex«:i – задает HEХ-файл, который нужно записать в микроконтроллер
в этой опции
flash – тип записываемой памяти
w – запись прошивки в МК (можно еще r – прочитать и v – проверить)
C:\avr\mine.hex – путь к файлу
i – тип файла HEХ (может еще быть r — raw binary; e — ELF (Executable and Linkable Format) и тому подобное – читайте доку)
в gcUploader.ini эта опция прописывается вот так —U flash:w:»%2″:i
вместо ключа %2, при старте прошивки, подставится выбранный Вами HEX-файл.
Итоговый набор строк для gcUploader.ini (для текущего примера) будет следующим:
[UNO]
avrdude_param=-F -v -p m328p -c arduino -P %1 -b 115200 -D -U flash:w:»%2″:i
В заключение приведу, для справки, наборы опций для разных типов Ардуин:
Плата | Микроконтроллер | Опции | ||
-p | -c | -b | ||
Arduino Uno | ATmega328 | m328p | arduino | 115200 |
Arduino Duemilanove | ATmega328 | m328p | arduino | 57600 |
Arduino Duemilanove | ATmega168 | m168 | arduino | 19200 |
Arduino Dicimila | ATmega168 | m168 | arduino | 19200 |
Arduino Nano | ATmega328 | m328p | arduino | 57600 |
Arduino Nano | ATmega168 | m168 | arduino | 19200 |
Arduino Mega 2560 | ATmega2560 | m2560 | wiring | 115200 |
Arduino Mega | ATmega1280 | m1280 | arduino | 57600 |
Arduino Leonardo | ATmega32U4 | m32u4 | avr109 | 57600 |
Arduino Micro | ATmega32U4 | m32u4 | avr109 | 57600 |
Arduino Mini | ATmega328 | m328p | arduino | 115200 |
Arduino Mini | ATmega168 | m168 | arduino | 19200 |
Arduino Pro Mini (5V, 16MHz) | ATmega328 | m328p | arduino | 57600 |
Arduino Pro Mini (5V, 16MHz) | ATmega168 | m168 | arduino | 19200 |
Arduino Pro Mini (3.3V, 8MHz) | ATmega328 | m328p | arduino | 57600 |
Arduino Pro Mini (3.3V, 8MHz) | ATmega168 | m168 | arduino | 19200 |
Arduino NG | ATmega168 | m168 | arduino | 19200 |
Arduino NG | ATmega8 | m8 | arduino | 19200 |
Если Вам нужно прошить что-то отличное от Ардуин, использовать какой-то другой программатор – меняйте значения соответствующих опций и прописываете строку в gcUploader.ini
Для типов микроконтроллеров (опция –p) не буду приводить таблицу – она очень большая (см. в документации), а вот для программаторов (опция –c) будет интересно посмотреть:
Программатор | Опция -c |
ABCmini Board, aka Dick Smith HOTCHIP | abcmini |
Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ | alf |
Плата Arduino, протокол сходен с STK500 1.x | arduino |
AT-ISP V1.1 кабель программирования для AVR-SDK1, http://micro-research.co.th/ | atisp |
Atmel AppNote AVR109 Boot Loader | avr109 |
Atmel Low Cost Serial Programmer | avr910 |
Atmel AppNote AVR911 AVROSP (an alias for avr109) | avr911 |
FTDI MPSSE (FT2232 etc.) поддержка bitbang | avrftdi |
Atmel AVR ISP (псевдоним для stk500) | avrisp |
Atmel AVR ISP mkII (псевдоним для stk500v2) | avrisp2 |
Atmel AVR ISP mkII (псевдоним для stk500v2) | avrispmkII |
Atmel AVR ISP, running a version 2.x firmware (an alias for stk500v2) | avrispv2 |
Bascom SAMPLE programming cable | bascom |
Altera ByteBlaster | blaster |
Brian Dean’s Programmer, http://www.bsdhome.com/avrdude/ | bsd |
Atmel Butterfly Development Board | butterfly |
C2N232I, reset=dtr sck=!rts mosi=!txd miso=!cts, | c2n232i |
Direct AVR Parallel Access cable | dapa |
serial port banging, reset=rts sck=dtr mosi=txd miso=cts | dasa |
serial port banging, reset=!dtr sck=rts mosi=txd miso=cts | dasa3 |
AVR Dragon in debugWire mode | dragon_dw |
AVR Dragon in high-voltage serial programming mode | dragon_hvsp |
AVR Dragon в режиме ISP | dragon_isp |
AVR Dragon в режиме JTAG | dragon_jtag |
AVR Dragon in (high-voltage) parallel programming mode | dragon_pp |
Dontronics DT006 | dt006 |
ERE ISP-AVR | ere-isp-avr |
Клон STK200 от Frank’а, http://electropol.free.fr/spip/spip.php?article15 | frank-stk200 |
Кабель программирования Futurlec.com | futurlec |
Atmel JTAG ICE mkI, running at 115200 Bd | jtag1 |
Atmel JTAG ICE mkI, running at 19200 Bd | jtag1slow |
Atmel JTAG ICE mkII (default speed 19200 Bd) | jtag2slow |
Atmel JTAG ICE mkII, running at 115200 Bd | jtag2,jtag2fast |
Atmel JTAG ICE mkII in ISP mode. | jtag2isp |
Atmel JTAG ICE mkII in debugWire mode. | jtag2dw |
Atmel JTAG ICE mkI, running at 115200 Bd | jtagmkI |
Atmel JTAG ICE mkII (default speed 19200 Bd) | jtagmkII |
Crossbow MIB510 programming board | mib510 |
Jason Kyle’s pAVR Serial Programmer | pavr |
Picoweb Programming Cable, http://www.picoweb.net/ | picoweb |
Pony Prog STK200 | pony-stk200 |
design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts | ponyser |
Lancos SI-Prog, http://www.lancos.com/siprogsch.html | siprog |
Steve Bolt’s Programmer | sp12 |
STK200 | stk200 |
Atmel STK500, probing for either version 1.x or 2.x firmware | stk500 |
Atmel STK500 high-voltage serial programming mode, только для прошивок версии 2.x | stk500hvsp |
Atmel STK500 parallel programming, только прошивка версии 2.x | stk500pp |
Atmel STK500, с версией прошивки 1.x | stk500v1 |
Atmel STK500, с версией прошивки 2.x | stk500v2 |
Atmel STK600 в режиме ISP или в PDI режиме для устройств ATxmega | stk600 |
Atmel STK600 high-voltage serial programming mode | stk600hvsp |
Atmel STK600 в режиме параллельного программирования (parallel programming) | stk600pp |
USBasp, http://www.fischl.de/usbasp/ | usbasp |
USBtiny — простой USB программатор, http://www.ladyada.net/make/usbtinyisp/ | usbtiny |
Xilinx JTAG кабель | Xil |
serial port banging, reset=dtr sck=rts mosi=txd miso=cts | gromov |
Маленький бонус.
Добавил в AVRDUDE поддержку простого COM-программатора Громова. Теперь Вы можете использовать из программы и его.
Например, ниже строки, которые необходимо добавить в gcUploader.ini для прошивки микроконтроллера ATmega328p (тот, что стоит в Ардуинах UNO, Nano, Pro mini) при помощи программатора Громова, через ISP-разъем.
[Gromov m328p]
avrdude_param=-F -v -p m328p -c gromov -P %1 -b 115200 -D -U flash:w:»%2″:i
Зачем это нужно, шить таким способом Ардуину? Например, затем, чтобы восстановить слетевший загрузчик!