148-Автоматический загрузчик HEX-файлов для AVR микроконтроллеров – обновление gcUploader
Обновил программу-загрузчик 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
Зачем это нужно, шить таким способом Ардуину? Например, затем, чтобы восстановить слетевший загрузчик!