148-Автоматический загрузчик HEX-файлов для AVR микроконтроллеров – обновление gcUploader

Автор: | 09.02.2018

Обновил программу-загрузчик 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:wC:\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

Зачем это нужно, шить таким способом Ардуину? Например, затем, чтобы восстановить слетевший загрузчик!

(Visited 2 364 times, 4 visits today)

148-Автоматический загрузчик HEX-файлов для AVR микроконтроллеров – обновление gcUploader: 9 комментариев

  1. DiyTronic

    Советую посмотреть в сторону http://platformio.org/ — там туева туча плат и контроллеров, AVR-ы через дудку шьются и плюс оно ещё и зависимости подтягивать само умеет.

  2. Sotnik

    [Mega 2560]
    avrdude_param= -F -v -p m2560 -c wiring -P %1 -b 115200 -D -U flash:w:»%2″:i
    Ввёл строку, прописалось, но в камень не пишет, окно лога выскакивает на мгновение и не прочитать.
    Подключен через USB шнурок. MEGA 2560. XLoader пишет без проблем!

  3. GetChiper Автор записи

    Порт правильный в загрузчике выбран?
    Другие ардуины шьются нормально?

    В Xloadere используются следующие параметры: Mega(ATMEGA2560);atmega2560;stk500v2;115200;
    правда они относятся к более старой AVRdude, но попробуйте их

    avrdude_param= -F -v -p atmega2560 -c stk500v2 -P %1 -b 115200 -D -U flash:w:»%2″:i

  4. Sotnik

    > Порт правильный в загрузчике выбран?
    Камень реагирует — идёт его рестарт.
    Другие ардуины шьются нормально?
    > Нет других.

    > В Xloadere используются следующие параметры: Mega(ATMEGA2560);atmega2560;stk500v2;115200;
    > правда они относятся к более старой AVRdude, но попробуйте их
    > avrdude_param= -F -v -p atmega2560 -c stk500v2 -P %1 -b 115200 -D -U flash:w:»%2″:i
    Выводит в окошке:

    avrdude.exe:
    Version 6.3, compiled on Jan 17 2017 at 12:00:53
    Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
    Copyright (c) 2007-2014 Joerg Wunsch
    System wide configuration file is «D:\CAD\Arduino\gcUploader\avrdude.conf»
    Using Port : COM8
    Using Programmer : stk500v2
    Overriding Baud Rate : 115200

    И всё.

  5. GetChiper Автор записи

    К сожалению у меня нет такой ардуины попробовать, но есть вариант использовать avrdude.exe и avrdude.conf с работающего xloadera (просто скопировать с заменой в мою программу) и строчки
    avrdude_param= -F -v -p atmega2560 -c stk500v2 -P %1 -b 115200 -D -U flash:w:»%2″:i

  6. GetChiper Автор записи

    p.s. CH340G у меня нормально работает в других ардуинах
    p.s.2 вордпресс по своему исправляет кавычки в тексте :»%2″:i — значить что %2 — в двойных кавычках

  7. Sotnik

    Всё дело в кавычках. Спасибо. Заработало! 🙂 Надо об этом в начале написать.

    При первом запуске на автомате «A» пишет отлично, в последующем —
    молния в красный кружок зубчатый на камне, и надпись в окошке «Flashing…»,
    иногда вообще зависает, и удаляется только вручную из диспетчера задач.

    винда XP

  8. GetChiper Автор записи

    Нужно тогда разрешить окно лога avrdude и смотреть что там не идет.

Добавить комментарий