136-gcUploader автоматический загрузчик HEX-файлов для Arduino

Автор: | 26.08.2016

GC UploaderС недавнего времени, как Вы заметили, я стал создавать много конструкций на базе Arduino. Причина проста – экономия времени на сборку устройства. Сейчас у меня стало не так много свободного времени, но отказываться от своего хобби я не хочу. Поэтому приходится оптимизировать производство новых устройств :). Больше времени уделять коду, чем пайке. Кроме того, конструкция на Ардуине обладает хорошей повторяемостью – трудно сделать что-то не так, когда для создания конструкции необходимо, всего лишь, соединить готовые платки десятком проводков. Но, несмотря на то, что устройства создаются при помощи Ардуины, программы под них я все равно пишу на Algorithm Builder (родная среда программирования Ардуины очень упрощена и мне много чего в ней не хватает).

С переходом на Ардуину встал вопрос прошивки МК. Можно использовать ISP разъем на Ардуине и прошивать МК прямо с Билдера (плюсом будет внутрисхемная отладка), но грех не использовать уже прошитый в Ардуину загрузчик и прошивать свои программы посредством штатного USB-шнура Ардуины. К сожалению Билдер не может записать прошивку в Ардуину через загрузчик, поэтому приходится использовать сторонние программы – HEX-загрузчики.

Раньше процесс прошивки Ардуины у меня выглядел следующим образом.  Предварительно я запускаю один из загрузчиков (о них я писал раньше) и настраиваю его на включенную Ардуину, прописываю путь к хексу создаваемой программы. Дальше в Билдере, после очередной редакции кода, компилирую проект, перехожу к окну загрузчика, жму на нем кнопку «Загрузить» и возвращаюсь в Билдер. Процедура вроде и не сложная, но когда таких циклов в процессе отладки делаешь десятки – это начинает немного надоедать.

Для того чтобы упростить процесс прошивки Ардуины я сделал свой автоматический загрузчик — gcUploader.

Окно GC Uploader

gcUploader.zip - автоматический загрузчик HEX-файлов для Arduino и AVR микроконтроллеров

 

GC Uploader — маленькая программка с небольшим количеством настроек, но очень облегчающая мне жизнь.

Работает она следующим образом:
1 Подключаем Ардуину к компьютеру (драйвера уже должны быть установлены)
2 Запускаем gcUploader
3 Мышкой кидаем HEX-файл на окно gcUploader (откроется область настроек)
4 Выбираем тип Ардуины
5 Выбираем порт к которому подключена Ардуина.
6.1 Для случая, когда нужно прошить готовый хекс — кликаем пиктограмму микроконтроллера
6.2 Для случая работы с проектом, программа делает все сама (программа следит за хексом и в случае его изменения, при очередной компиляции проекта, процесс прошивки Ардуины запускается автоматически).

Программа использует для прошивки AVRDUDE. После очередного обновления Вы можете добавлять поддержку новых Ардуин, контроллеров и программаторов, из того огромного количества, что поддерживает AVRDUDE. Как это сделать читайте здесь.
gcUploader запоминает все настройки последней сессии и при повторном запуске (если Вы продолжаете все то-же проект) ничего настраивать не нужно.

Элементов управления немного и они интуитивно понятны.
Главный элемент окна – изображение микроконтроллера. Изображение меняется, отображая текущее состояние программы:

ожидание
ожидание — HEX-файл не изменялся — программа ничего не делает

 

изменение
обнаружено изменение — HEX-файл изменился и, если не выбран ручной режим, прошивка начнется автоматически

 

прошивка
прошивка МК

 

готово
прошивка завершена

 

В любом из режимов работы можно начать процесс прошивки вручную, кликнув на пиктограмме микросхемы.

Далее элементы настройки:

настройка — открывает поле настройки программы

Нужно выбрать, соответственно, тип Ардуины и порт, к которому она подключена. В окно адреса нет необходимости прописывать путь вручную – просто киньте файл прошивки на форму и путь добавится автоматически.

ручной режим прошивкиавтоматический режим прошивки — ручной и автоматический режим прошивки. В ручном режиме программа обнаруживает изменение хекса и изменяет пиктограмму МК, но не запускает прошивку. Прошивка начнется после клика на пиктограмме МК.

лог включенлог отключен — включение/отключение отображения окна лога работы AVRDUDE. При первых прошивках проекта рекомендуется включать окно, чтобы убедиться, что все работает нормально.

    — открывает файл gcUploader.ini для добавления поддержки новых устройств
(читать подробней).

обновить

— обновление списка доступных портов, для случая подключения Ардуины после пуска программы.

Окно программы полупрозрачно и всегда находится поверх всех окон, так что Вы всегда будете в курсе того, что происходит.

Если кому чего захочется добавить в программу, пишите — постараюсь сделать (хотя, на мой взгляд, программа идеальна 🙂 )

Обновление 19.09.2016
— убрал отображение формы на панели задач (для экономии на ней места) — все равно окно программы всегда на виду;
— добавил альтернативную командную строчку для AVRDUDE в gcUploader.ini, расскоментировав которую можно увеличить скорость записи прошивки в МК (отключается верификация записанной прошивки). по умолчанию работает обычный режим с верификацией.

Обновление 20.09.2016
— добавил возможность обновления списка доступных портов (для случая, когда Ардуина подключена уже после пуска программы)

Обновление 08.02.2018
— обновил AVRDUDE до свежей 6.3 версии
— появилась возможность добавлять свои варианты Ардуин или даже микроконтроллеров и программаторов (читать подробней)

Обновление 13.05.2018
— небольшие улучшения функциональности

(Visited 11 610 times, 6 visits today)

136-gcUploader автоматический загрузчик HEX-файлов для Arduino: 45 комментариев

  1. Joog

    Файл трояна: GC-Uploader.zip
    Risks: Троян (HEUR/QVM11.1.0000.Malware.Gen)

  2. strem

    Какой антивирус выдает такое сообщение?
    Возможно антивирус воспринимает скрытый запуск AVRDUDE как риск. При тотальной проверке файла ресурсом http://www.virustotal.com подавляющее большенство антивирусов ничего не находят.

  3. Joog

    360 Total Security
    Дудку он знает, пользуюсь постоянно

  4. strem

    Дело не в самой дудке, а в том что она запускается из другого приложения и при этом прячется ее окно.
    Попробую чуть позже собрать проект без оптимизации — может это поможет.

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

    Перезалил файл.

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

    Обновил программу.
    — убрал отображение формы на панели задач (для экономии на ней места) — все равно окно программы всегда на виду.
    — добавил альтернативную командную строчку для AvrDDUDE в gc_uploader.ini, расскоментировав которую можно увеличить скорость записи прошивки в МК (отключается верификация записанной прошивки). по умолчанию работает обычный режим с верификацией.

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

    Обновил программу
    — добавил возможность обновления списка доступных портов (для случая, когда Ардуина подключена уже после пуска программы)

  8. Dr. Alex

    Добрый день. Очень интересная програмка)!!!!!! Есть просьба, вы не могли-бы открыть исходники? Если вам не тяжело — пришлите мне на почту . Заранее благодарен.

  9. admin Автор записи

    Пока исходника не будет я еще его дорабатываю.

  10. Igor-Tkachenko

    Возможно ли изменение Fuse Bit в Arduino с помощью этого загрузчика?

  11. admin Автор записи

    Этот загрузчик фьюзов изменить не сможет.
    Напомню, что изменение фьюзов (кроме некоторых) приведет к неработоспособности штатного загрузчика Arduino.

  12. ON-OFF

    Кидаю кекс, не прошивается нано

  13. admin Автор записи

    Если включить лог, что пишет?

  14. ON-OFF

    avrdude.exe: stk500_getsync: not in sync: resp=0x00
    да и после прошивки теперь не заливаются скетчи, похоже поврежден загрузчик

  15. admin Автор записи

    Похоже да — поврежден.
    Нужно попробовать на другой ардуине.

  16. ON-OFF

    Загрузчик восстановил, всё норм, может нех был кривой…., пробовал залить другим залить — тоже самое http://skjolddisplay.no/?page_id=522

  17. Artem-Maksimov

    Ребята кто нибудь пробовал на Pro Mini Atmega328p 5V 16Мгц .использую програматор Pl2303
    Я никогда не сталкивался с HEX файлами но покопавшись в гугле нашел эту прогу .
    Насколько я понимаю последовательность действий
    1.подключаем ардуинку
    2.выбираем ее в проге
    3.выбираем порт
    4.выбираем HEX файл
    5.нажимаем на значек микроконтроллера
    6.готово!
    Проверьте меня нехочется спалить ардуинку.

  18. Artem-Maksimov

    Все прочел надеюсь все будет хорошо.
    Хорошая прога.СПС Автору

  19. admin Автор записи

    Да, последовательность правильная.

  20. Artem-Maksimov

    Ребята кто нибудь пробовал на Pro Mini Atmega328p 5V 16Мгц .использую програматор Pl2303

  21. Artem-Maksimov

    GetChiper ты пробовал на Pro Mini Atmega328p 5V 16Мгц .использую програматор Pl2303???

  22. admin Автор записи

    Пробовал.
    А что, не работает?

  23. Artem-Maksimov

    не я спрашивал я сам еще не пробовал.а ты программатор Pl2303 используешь или USBtiny или USBasp

  24. admin Автор записи

    Если это ардуина — достаточно штатного USB- шнурка для программирования.

  25. Artem

    Спасибо буду пробовать

  26. Илья-Светлый

    отличная утилита, сам использовался для этих целей xloader.
    Если не трудно можете может описать какие технологи использовали для утилиты. Для своих железяк пишу консольные приложения на C#, думаю переходит уже на приложения с интерфейсом.

  27. admin Автор записи

    GC-Uploader — это, по сути, оболочка для AVRDUDE и все основные действия выполняет «дудка». Так что ничего особенного в программе нет — она просто удобная )

  28. Андрей-Куницын

    Прошу прощения, может спрашивалось уже, а есть там возможность (в этой проге) менять/выставлять фьюзы?

  29. admin Автор записи

    Илья · 21.03.2017 at 11:49 pm
    На каком языке хоть?
    http://hiasm.com/ (по сути — это делфи)

    Андрей · 22.03.2017 at 8:59 am
    Прошу прощения, может спрашивалось уже, а есть там возможность (в этой проге) менять/выставлять фьюзы?
    Эта оболочка заточена работать с Ардуиновским загрузчиком. Если поменять в МК фьюзы, то загрузчик перестанет работать и, соответственно, эта программа станет бесполезной. Поэтому доступ к фьюзам не только не нужен, но и вреден 🙂

  30. Commentator_Number_1

    Привет, дорогой Админ и создатель данной программы! Вижу, что последнее обновление было 8 февраля 2018 года. И прошло уже 3 месяца без обновлений. Очень хочется, чтобы Вы хотя бы мне дали исходники данной программы. А то мне хочется внедрить в не неё свои фичи.

  31. Commentator_Number_1

    ON-OFF — #comment-13060
    Загрузчик не повреждён. Скорость записи стала другая. В файле INI надо поменять -b 57600 на -b 115200 и будет счастье

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

    Привет!
    Планирую сделать обновления в скором времени — правки небольшие.
    Если есть предложения по функционалу — пиши.

  33. jipatera

    Hi, really smart solution, this Uploader»
    But I feel some issues…
    1. It is not possible to stop the program in cultured way. Uploader reacts very very slowly (approx. 40secs) after click on the icon in upper right window’s corner.
    2. I tested manual mode: if none port is assigned then the upload process ends by green sign {Upload finished). But none Arduino could be connected and recognized!
    3. If «Log is displayed»parameter is set then corresponding window flashes only once for very short time and it seems it is empty.
    Under these circumstances, it was no good reason to try to upload a sketch into real ARDUINO .
    (Windows 10 Home Edition — Version 1803 is used)
    Your comments?

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

    Hi!
    1. The program closes with a small time lag, but it’s in the order of 1 second (40 seconds is really a lot and I have not seen this)
    2. The program flash the controller through the AVRdude and I do not check that there it responded after the firmware — this is the problem
    3. The problem of fast closing the AVRdude window is what Windows does when the session is completed.
    The program loads HEX-files, but sketches are best downloaded from Arduino IDE.

  35. jipatera

    Hi,
    I restarted the PC and repeated the tests to be objective.
    1. In the previous report, I mentioned the time of 40sec. Now I measured 42secs and 41secs to end the program.

    2. In Article 104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика, programs Xloader and ARP-Uploader are recommended. Both are also based on AVRdude.exe. The first one returns «Can’t open port» and the other returns «Port COM7 does not exist» as a result of the same test. These are the expected results. Therefore, the problem is not caused by AVRdude.exe.

    If I wrote «sketches», I meant, of course, the archived HEX files.

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

    Control of the port, I’ll add in the next update — this is good advice!
    By the time the program closes — I’ll look for what’s wrong.

  37. jipatera

    Привет, к сожалению, у меня нет русской клавиатуры. И если бы и было, я бы не нашел буквы. Вот почему я пытаюсь писать пo EN поль3уя переводчик Google.
    Next program termination experience:
    1. WiFi =ON, BT =OFF: The gcUploader program terminates immediately as expected.
    2. WiFi =ON, BT =ON, BT link is open or close: The gcUploader termination takes approx. 40secs. Another effect is the «spontaneous» WiFi connection collapse in the meantime. Task Manager in the Details tab shows information regarding waitings chain as follows:
    «One or more threads of the gcUploader process are in the wait state.
    gcUploader.exe (PID: 13508) Thread: 12940
      \ — gcUploader.exe (PID: 13508) Thread: 1956»

    Pls, look also at the logger window.

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

    To transfer a hex file, use a wifi or bluetooth module?
    Perhaps this is the problem of the program with the corresponding hardware drivers.
    I did not try to flash the chip in this way. Need to try.

  39. jipatera

    No, the HEX files upload is done with a USB cable only.
    HC-05 (BT transmission) is connected with another Arduino to transmit application data. But it is not important if BT link is open or not.

    BTW log: The frame closes immediately after AVRdude termination. Nobody is able to read the content.
    The green tag lasts also only 1sec. Later is no evidence of (not) successful upload.
    It is necessary to use something like Pause, waiting for confirmation by human operator or so.

  40. jipatera

    WiFi is used to connect router (home network and internet).

    Regarding Uploading feedback: Note that XLoader writes at least the result of the upload process on the last line of the window/frame. This information is presented till the next operator’s access.

  41. anna.nikitenko951

    Здравствуйте! Как можно с Вами связаться по поводу сотрудничества? Интересует размещение баннера. Буду очень благодарна, если Вы отпишитесь на мою электронную почту anna@abuyer.ru.

  42. jipatera

    Привет, Aнна! Я не понял, адресовано ли ваше сообщение мне или GetChiper?

  43. jipatera

    I will attempt to objectively summarize the experience of using gcUploader:

    gcUploader is sympathetic by simple visualization and efficient HMI. It’s great providing full configuration of the menu, not only the upload of a flash for any AVR processor using any programmer. It can be configured to download flash, read and modify fuses, etc., just anything what AVRdude allows.

    But the potential user should also take into account the following:
    1. There is no credible report about the upload result.
    a. Even if a non-existent port has been selected, we receive a green colored report » прошивка завершена».
    b. The message «прошивка завершена» is visible approx. 1sec only.
    c. The possibility that the upload will be unsuccessful is not considered at all. In the manual is not listed any
    tag indicating an error message.

    2. The «Log is displayed» option does not work satisfactory — the window closes immediately with the end of AVRdude, so it is not in human abilities to check the progress and the result of the completed operation. An emergency solution is to add a «-lfilename.ext» parameter to configuration to create a log file. The unfortunate consequence of this solution is the freezing of the program in the «прошивка МК» state if «NoLog» is set.

    3. gcUploader is in serious conflict with Bluetooth and WiFi devices working on the same PC.

    The development of gcUploader needs to be finished. Before that happens, I have to favor another program. Other programs are not as elegant when configuring and operating, but I can rely on them (so far). I like AVRDUDESS because it allows full use of AVRdude without issues, as could provide also gcUploader.

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

    Thank you for such a detailed report! )

    I agree with all positions of the report.
    Some items will improve in the next update, with some will have to deal longer (such as a port conflict).
    I myself constantly use this downloader, so I’m interested in improving it.

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