Как загрузить hex файл в ардуино Arduino hex avr
Сегодня вы узнаете как загрузить hex файл в ардуино. Это первая часть из серии уроков про hex формат. Я расскажу и покажу как сделать hex файл arduino используя arduino ide. Написав исходный код очень просто выполнить прошивку hex файла. Вы узнаете все плюсы и минусы использования HEX файла. Если вы не хотите или вам некогда заниматься программированием, то hex code это для вас. Во второй части я расскажу как прошивать HEX файл в ардуино используя различные внешние программы. Вы узнаете чем открыть hex файл прошивки.
Мне в последнее время всё чаще стали задавать вопросы, как можно проще загружать скетч в Ардуину. Я понимаю, что не все хотят вникать в азы программирования. Многим надо просто быстро сделать проект. У них нет интереса в установки Ардуино IDE, поиск различных библиотек, настройке и установке параметров.
Когда вы пишите свой код или как он по-другому называется — Скетч. То на выходе вы получаете исходный код. А когда прошиваете Ардуино, ваш исходный код компилируется в бинарный код, такой код Ардуине проще понять. И обычно он имеет расширение HEX.
- Преимущество HEX файла – это простота ее использования:
- Не нужны никакие библиотеки,
- Легко загрузить в плату,
- Можно перенести с одного устройства на другое.
Но как всегда если есть плюсы, то должны быть и минусы. По правде сказать – это не минус, а так, маленький недостаток. Из HEX файла невозможность воссоздать исходный код, нельзя понять как работает программа и внести какие-нибудь изменения.
Так же HEX файл нужен для работы с внешними программами, например с Протеусом. А ещё в последнее время, в интернете, всё чаще стали попадаться не исходники кода, а уже скомпилированный HEX файл. Для этого есть несколько причин.
Второй причина – это если проект очень сложный и для его настройки требуется много действий, то проще настроить всё самому, а потом выложить HEX файл. Что бы потом в комментариях не возникало много вопросов. От простых, где взять библиотеку, до «А у меня ничего не работает». Загрузив HEX файл вы можете быть уверены, что код рабочий, а если у вас «ничего не работает» , то значит вы что-то не так собрали. И разбираться нужно именно в этом.
Короче, что такое HEX и для чего он нужен мы разобрались. Теперь давайте научимся получать его из своего кода.
Давайте запустим Ардуино IDE и какой-нибудь из примеров. Все наверняка догадались что это будет пример BLINK.
Теперь проверим, подключена ли у нас плата Ардуино и к какому порту она подсоединена.
Хотя скажу по секрету, это нам не особо нужно. Получить HEX файл можно вообще не имея Ардуины в наличии.
Заходим в меню Файл и выбираем пункт Настройки.
Устанавливаем галочку в строке Показать подробный вывод, в чекбоксе Компиляция. И всё.
Теперь можно прошить
Начнётся компиляция вашего кода. Это можно увидеть по обилию текста снизу экрана.
После окончания нужно найти строчку кода с расширением HEX. Это адрес временной папки где будет сохранён HEX файл. Он там будет находиться до тех пор пока вы не закроете Arduino IDE .
Теперь давайте откроем этот файл и посмотрим как он выглядит. Я буду использовать TOTAL Commander, а вы, тут программу, что вам удобна.
У меня он открылся в NOTEPAD++.
Мы видим 60 строчек кода, который совсем не похож на тот что вы написали. Вот с этим кодом и работает Ардуина.
Согласитесь, Небо и Земля.
А теперь давайте перейдём в папку где хранится наш HEX файл.
Переходим по адресу который у нас в командной строке. И видим, что там целая папка с разными файлами. Мы некоторые из них рассмотрим чуть позже. Находим наш HEX файл. Для особо внимательных, там 2 HEX файла. С бутлоадером и без него.
Теперь давайте возьмём другой файл, посложнее. Там и кода побольше и чтобы была применена библиотека. Кстати эта библиотека не входит в стандартную установку Ардуино IDE. И для работы с этим скетчем, вам бы пришлось самому устанавливать эту библиотеку. Или просто загрузить её и весь скетч через HEX файл.
Нажимаем кнопку Проверить. Ждём окончания компиляции и переходим по адресу HEX файла.
Находим и открываем папку.
Заходим в папку Библиотека и видим там библиотеку Нео пиксель.
В папке скетч находится исходный код нашего скетча. Для сравнения посмотрим код в Arduino IDE.
Переходим к функции loop и сравниваем. Всё одинаковое.
Дальше я буду сравнивать в Visual Studio Code.
Помните я говорил, что в папке лежат 2 HEX файла. Вот их и сравним.
Один из них с загрузчиком, а второй без него.
Теперь прокручиваем файл без загрузчика до конца.
Видим, что на 117 строчке код закончился. Теперь прокручиваем файл с загрузчиком. До 117 строки.
А всё что дальше это и есть код загрузчика. Кстати загрузчик занимает столько же места, как и код программы с библиотекой.
Вот мы и научились получать HEX файл из своего исходного кода.
Следующий шаг это загрузка HEX файла в Ардуино.
(Есть решение) Как установить прошивку .hex?
firmware
Creality действительно предлагает свою прошивку на creality3d.cn as .hex файлы. Они довольно хороши в качестве резервных копий, поскольку никто не может изменить и уничтожить их случайно.
Но … .. Как вы их устанавливаете?!
Речь идет об установке прошивки непосредственно и без другого микроконтроллера. Использовать другой микроконтроллер — это как установить новую прошивку через микроконтроллер?
@Trish, 👍7
3 ответа
Лучший ответ:
▲ 3
Creality также предоставляет установочный PDF-файл. Процесс, который они предлагают, является двойным и может потребовать различных настроек на других машинах1. Места, в которых, как я предполагаю, вам, возможно, потребуется скорректировать, отмечены спомощью A. Обратите внимание, что это решение зависит от CURA.
1. Установите принтер в качестве периферийного устройства.
Эта часть предназначена специально для Windows. Если вы используете Linux или MAC, вам потребуется использовать другую настройку, но вы можете получить те же результаты.
- Включите питание принтера и подключите его от устройства MircoUSB к USB-разъему компьютера. Это должно автоматически установить драйвер. Если нет, драйвер находится на SD-карте, поставляемой с принтером2.
- Чтобы вручную установить
ключ Windows
+ «ДИСПЕТЧЕР
» и выбрать Диспетчер устройств. Найдите последовательный порт, который отображается желтым цветом, щелкните правой кнопкой мыши, выберитеОбновить программное обеспечение драйвера > Найдите на моем компьютере программное обеспечение драйвера>
просмотрите
, найдите расположение USB-драйвера на SD — карте и нажмитекнопку Далее
. - Как правило,последовательный порт(COM), который требуется обновить, имеет наибольшее число, но может изменяться.
- Хорошей идеей является подтверждение правильного порта с помощью программного обеспечения, такого как Repetier Host, с помощью которого вы можете напрямую управлять принтером — если он работает, у вас есть драйверы и правильный порт. Кроме того, вы знаете правильную Бодратацию.
- Чтобы вручную установить
- После установки драйвера запустите CURA, чтобы выполнить некоторые настройки. В
:- Окно печати-это «Пользовательский интерфейс Pronterface»A
- Переключитесь на
Устройство > Настройки устройства>
:- Последовательный порт: выберите тот, который только что был обновлен
- Цена: 115200А
2. Загрузите файл .hex через cura
Машина > Установите пользовательскую прошивку>
- Убедитесь, что принтер подключен, затем
ОК
- найдите файл .hex на своем компьютере, затем подтвердите.
- Подождите, пока процесс завершится.
1 — скорее всего, вам придется изменить коэффициент бодрствования
2 — Это может быть верно не для всех производителей, но для creality. У других производителей могут быть другие источники для них.
А — Отрегулируйте по мере необходимости!
, @Trish
▲ 6
Основная часть Arduino IDE своего рода полускрыта, и это какой-то парень по имени avrdude. На самом деле AVRDUDE – загрузчик/загрузчик AVR-это отдельный двоичный файл.
Кроме того, существует также gcc
, который выполняет компиляцию, но это уже другой вопрос.
загружает скомпилированный двоичный файл, предоставленный gcc
, на Arduino через USB-порт (COM-порт).
Вы можете вызвать это из командной строки (при условии, что у вас установлена среда разработки Arduino).
Вам нужно будет указать (см. Описание параметров командной строки):
- Скорость передачи данных в бодах для COM-порта (
-b
) - COM-порт (
-P
) - Процессор, используемый в плате (для платы Arduino Mega2560: ATmega2560) (
-p
) - Путь к
шестнадцатеричному
файлу (-U
) - Путь к файлу
. conf
самого avrdude (-C
) - Подробный режим, так что смотрите, что происходит (
-v
) - Укажите используемый программатор (
-c
). Дополнительные сведения см. в параметре-c в описании параметров командной строки. - Отключить автоматическое стирание для вспышки (
-D
)
Команда будет иметь вид:
<path to arduino>/hardware/tools/avr/bin/avrdude -C<path to arduino>/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -carduino -b 115200 -cstk500v2 -P<name of serial port> -D -Uflash:w:<path to hex file>:i
Этот пример выше:
- Указывает полный путь к
двоичному файлу avrdude
- Указывает полный путь к
файлу конфигурации avrdude
- Подробный режим
- Процессор ATmega2560, используемый в плате Arduino Mega2560
- Программатор Arduino
- Скорость передачи данных в бодах USB-порта
- Программатор встроенного по Atmel STK500 версии 2. x (может не потребоваться)
- Порт, к которому подключена плата Arduino
- Отключает автоматическую вспышку, так как она не требуется-Автоматическое стирание не используется для устройств ATxmega, так как эти устройства могут использовать стирание страниц перед записью каждой страницы, поэтому явное стирание чипа не требуется. Однако обратите внимание, что любая страница, на которую не повлияла текущая операция, сохранит свое предыдущее содержимое.
- Память, в которую необходимо загрузить, и путь к шестнадцатеричному файлу (дополнительные сведения см. В параметре-U в описании параметров командной строки).:
флэш
-память определяет флэш-ПЗУ устройства.w:
прочитайте указанный файл и запишите его в указанную память устройства:я
указываю шестнадцатеричную информацию Intel
Примеры
Для Windows
C:\dev\Arduino\hardware\tools\avr\bin\avrdude -CC:\dev\Arduino\hardware\tools\avr\etc\avrdude. conf -v -patmega2560 -carduino -b115200 -cstk500v2 -P\\.\COM1 -D -Uflash:w:C:\Users\<username>\Documents\firmware.hex:i
Для OSX
/Applications/Arduino/hardware/tools/avr/bin/avrdude -C/Applications/Arduino/hardware/tools/avr/etc/avrdude.conf -v -patmega2560 -carduino -b115200 -cstk500v2 -P\\.\COM1 -D -Uflash:w:/Users/<username>/Documents/Arduino/firmware.hex:i
Альтернативные варианты
Если вам неудобно использовать интерфейс командной строки (CLI), возможно, будет проще использовать решение с графическим интерфейсом…
Загрузчик
Для решения только для Windows см. раздел Загрузка шестнадцатеричных файлов Arduino с помощью XLoader
С сайта автора:
Я сделал небольшую программу, которую можно использовать для загрузки ваших собственных *.hex файлов на платы arduino с помощью загрузчика. Это означает, что вам не нужен флэш-программатор. Я сделал его для собственного использования и нашел его довольно полезным. Так что теперь я сделал более удобную для пользователя версию.. Чтобы использовать его для компиляции, вы кодируете что-то вроде AVRStudio. Тогда просто начните XLoader.exe, выберите шестнадцатеричный файл и нажмите загрузить. Вот и все. Хорошая новость : теперь он также поддерживает Arduino Uno.
Конструктор Arduino
От Arduino Builder – автономная утилита для создания и загрузки эскизов Arduino
- Выберите файл, либо файл эскиза (.ino), шестнадцатеричный файл (.hex), либо файл ELF (.elf)
- Выберите тип платы в раскрывающемся списке.
- Нажмите на последовательный порт (или кнопку USBASP) , и загрузка будет продолжена.
Загрузчик Arduino
На той же страницеесть загрузчик Arduino, который является версией Arduino Builder для командной строки.
, @Greenonline
▲ 1
Prusa i3 MK3 поставляется с Slic3r, выпуском Prusa. В нем есть меню для прошивки прошивки, которое принимает шестнадцатеричный файл в качестве входных данных.
Затем вы можете выбрать шестнадцатеричный файл. Он автоматически обнаружит принтер, если он подключен через USB.
, @Thomas Weller
arduino ide — Как получить файл прошивки (hex) из файла .ino, содержащего код
спросил
Изменено 1 год, 5 месяцев назад
Просмотрено 44к раз
В настоящее время у меня есть файл прошивки .ino
, который я использую в Arduino IDE для программирования микроконтроллера ATmega328. Я хотел бы получить файл, который Arduino IDE использует для программирования микроконтроллера.
Вероятно, IDE использует шестнадцатеричный (шестнадцатеричный) файл или что-то в этом роде и отправляет его микроконтроллеру через последовательный порт.
Как я могу получить этот файл, являющийся единственным файлом, который генерирует среда IDE, это .ino
?
- Arduino-IDE
В настройках Arduino IDE; после Показать подробный вывод во время:
установите флажок рядом с компиляцией
.
Затем, когда вы скомпилируете, вы должны получить что-то вроде этого в нижней части окна:
... ... "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-objcopy" -O ihex -R .eeprom "/var/folders/tp/grrlc56j3z7057f12_7f1_0r0000gn/T/arduino_build_635063/Blink.ino.elf " "/var/folders/tp/grrlc56j3z7057f12_7f1_0r0000gn/T/arduino_build_635063/Blink.ino.hex" Sketch использует 928 байт (3%) пространства для хранения программ. Максимум 30720 байт. Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байт для локальных переменных. Максимум 2048 байт.
В конце третьей строки снизу вы получите .hex
имя файла. В этом случае (в OSX) это будет /var/folders/tp/grrlc56j3z7057f12_7f1_0r0000gn/T/arduino_build_635063/Blink.ino.hex
Вы спрашиваете, как найти скомпилированный шестнадцатеричный файл. Это просто! Выполните следующие действия:
- В Arduino IDE выберите
Sketch
>Export Compiled Binary
. Это выполняет компиляцию. После завершения эта команда помещает копию скомпилированного.hex
в каталог вашего скетча. - Затем либо перейдите к папке эскиза, либо в среде IDE выберите
Sketch
>Показать папку Sketch
.
Генерирует два шестнадцатеричных файла для целевого микроконтроллера; один с загрузчиком другой без загрузчика. Эти шестнадцатеричные файлы можно загрузить в микроконтроллер с помощью программатора, такого как Atmel Ice или AVRISPmkII.
1Самый простой способ получить файл:
- Эскиз > Экспортировать скомпилированный двоичный файл
- Дождитесь завершения процесса компиляции
- Эскиз > Показать папку эскиза
В папке эскиза вы найдете дополнительный файл, который в данном случае будет иметь расширение .hex
. Это скомпилированный файл, который обычно загружается на плату Arduino через Sketch > Upload .
Обратите внимание, что функция «Экспорт скомпилированных двоичных файлов» доступна только в Arduino IDE 1.6.5 и новее.
ESP8266 Загрузить шестнадцатеричный файл Arduino IDE
спросил
Изменено 4 года назад
Просмотрено 6к раз
Я использую модуль Wifi ESP12E, используя библиотеку на основе Arduino. Есть ли способ загрузить шестнадцатеричный файл проекта в esp8266 с помощью Arduino или любого другого инструмента? Мне нужно отправить шестнадцатеричный файл вместо кода моему клиенту. Там в любом случае?
- Arduino-IDE
- esp8266
Я вижу, что главный вопрос, который вы задаете, звучит так: «Мне нужно отправить моему клиенту шестнадцатеричный файл вместо кода. Я хочу сохранить исходный код при себе».
Механизм окончательного аппаратного решения не предоставляется, но я предполагаю, что ваш клиент также использует Arduino или, по крайней мере, тот же чип Atmel, что и у вас в Arduino, и будет использовать этот чип для управления ESP8266.
Когда вы создаете свой эскиз, создается файл .hex, который вы можете отправить своему клиенту.
Существует несколько способов сохранить шестнадцатеричный файл, и в среде IDE 1.6.5 и выше есть способ легко найти этот файл:
Эскиз > Экспортировать скомпилированный двоичный файл Скетч будет скомпилирован.
Эскиз > Показать папку эскиза Файл .hex будет находиться в папке эскиза.
Вы можете отправить этот шестнадцатеричный файл своему клиенту.
Если он использует решение на основе Arduino или ATMega для подключения к ESP8266, то шестнадцатеричный файл можно загрузить в его Arduino или в его чип Atmel. Однако среда разработки Arduino не поддерживает импортировать шестнадцатеричных файлов в это время.
Ваш клиент должен будет загрузить этот шестнадцатеричный файл в Arduino с помощью какого-либо программатора ISP. Есть много способов сделать это, и лучший для вас будет зависеть от ваших обстоятельств и набора навыков вашего клиента.
Если клиент использует Arduino или только что встроил в свое решение тот же чип ATmel, что и в вашем Arduino, вы также можете просто запрограммировать свой Arduino, а затем отправить ему этот чип.
Включить Покажите подробный вывод во время компиляции
в Arduino IDE и нажмите Verify
.