Hex from arduino ide

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как выгрузить код в виде Hex-файла из Arduino

В некоторых случаях, особенно при реверс инжиниринге, необходимо получить код из микроконтроллера. В случае с Arduino это тоже бывает актуально, и самое главное, что это возможно. Полученный код будет в шестнадцатеричной формате hex-файла, и в данном материале мы рассмотрим как реализовать такую выгрузку кода из Arduino, используя программатор avrdude.

Итак, в нашем случае плата Arduino обнаруживается на последовательном порту USB COM4.

Мы откроем окно командной строки через cmd и введем следующую строку:

ПК прочитает программу во флэш-памяти платы Arduino и запишет на компьютер файл с именем «board.hex».

Измените :r: на :w: и вы сможете записать шестнадцатеричный файл обратно во флэш-память Arduino. Или загрузить его на другую плату.

Программа под названием avr-objdump позволит вам дизассемблировать исполняемый код в ассемблерный код, который вы сможете прочитать и реконструировать. Программа avr-objdump имеет множество опций.

Avr-objdump конвертирует исполняемые файлы. Здесь он генерирует дизассемблерный код.

Файлы в шестнадцатеричном формате Intel можно открыть и прочитать с помощью блокнота или специальной программы для чтения шестнадцатеричных файлов. Эмуляторы могут загружать и запускать шестнадцатеричную программу так же, как аппаратное устройство.

Arduino IDE может предоставить вам шестнадцатеричный файл через меню Sketch-Export скомпилированный двоичный файл. Вы можете создавать исполняемые шестнадцатеричные файлы, которые будут работать на вашем Arduino, из IDE, таких как WinAVR, CodeBlocks, MPLab, AtmelStudio, и из командной строки.

Источник

Как загрузить 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 файл вы можете быть уверены, что код рабочий, а если у вас «ничего не работает» , то значит вы что-то не так собрали. И разбираться нужно именно в этом.
Короче, что такое HEX и для чего он нужен мы разобрались. Теперь давайте научимся получать его из своего кода.
Получение HEX файла.
Давайте запустим Ардуино IDE и какой-нибудь из примеров. Все наверняка догадались что это будет пример BLINK.
Теперь проверим, подключена ли у нас плата Ардуино и к какому порту она подсоединена.
Хотя скажу по секрету, это нам не особо нужно. Получить HEX файл можно вообще не имея Ардуины в наличии.
Заходим в меню Файл и выбираем пункт Настройки.
Устанавливаем галочку в строке Показать подробный вывод, в чекбоксе Компиляция. И всё.
Теперь можно прошить Ардуину, а можно нажать на кнопку Проверить.
Начнётся компиляция вашего кода. Это можно увидеть по обилию текста снизу экрана.
После окончания нужно найти строчку кода с расширением HEX. Это адрес временной папки где будет сохранён HEX файл. Он там будет находиться до тех пор пока вы не закроете Arduino IDE .
Теперь давайте откроем этот файл и посмотрим как он выглядит. Я буду использовать TOTAL Commander, а вы, тут программу, что вам удобна.
У меня он открылся в NOTEPAD++.
Мы видим 60 строчек кода, который совсем не похож на тот что вы написали. Вот с этим кодом и работает Ардуина.
Теперь давайте сравним ваш исходный код и то что получилось после компиляции.
Согласитесь, Небо и Земля.

А теперь давайте перейдём в папку где хранится наш HEX файл.
Переходим по адресу который у нас в командной строке. И видим, что там целая папка с разными файлами. Мы некоторые из них рассмотрим чуть позже. Находим наш HEX файл. Для особо внимательных, там 2 HEX файла. С бутлоадером и без него.

Теперь давайте возьмём другой файл, посложнее. Там и кода побольше и чтобы была применена библиотека. Кстати эта библиотека не входит в стандартную установку Ардуино IDE. И для работы с этим скетчем, вам бы пришлось самому устанавливать эту библиотеку. Или просто загрузить её и весь скетч через HEX файл.
Делаем всё тоже самое что и раньше.
Нажимаем кнопку Проверить. Ждём окончания компиляции и переходим по адресу HEX файла.
Находим и открываем папку.

Вот мы и научились получать HEX файл из своего исходного кода.
Следующий шаг это загрузка HEX файла в Ардуино.

Источник

Как загрузить HEX прошивку Ардуино

Прошивка является популярным способом распространения программ для ардуино и микроконтроллеров.

Здесь описана процедура загрузки прошивки микроконтроллера платы Arduino.

Данная инструкция позволит вам установить прошивку на наиболее популярные платы такие как Nano, UNO, Leonardo, Mini, Pro Micro и другие, собранные на микроконтроллере atmega328p, atmega168, atmega32u4 и других.

Для прошивки других типов плат обратитесь за помощью (http://jarduino.ru/support).

О прошивках Arduino

Не стоит путать прошивку со скетчем!

Скетч – это исходный код прошивки.

Прошивка ардуино – это скомпилированный (бинарный) файл, загружаемый в плату Arduino (в микроконтроллер). Прошивка не является исходным кодом программы (скетча). Файл прошивки обычно имеет расширение HEX.

Преимущество прошивки – это простота ее использования:

  • Не нужны никакие библиотеки,
  • Легко загрузить и выгрузить,
  • Можно перенести с одного устройства на другое.

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

Вместе с прошивкой часто может поставляться и копия памяти ПЗУ (EEPROM), в которой хранятся данные, необходимые для работы устройства.

Способы прошивки Arduino

Существует несколько популярных программ загрузки прошивки на Arduino. Подавляющее большинство из них сделаны частными программистами, а многие из них давно уже заброшены и не поддерживаются, но по-прежнему существуют в сети и прекрасно работают.

Рассмотрим пару наиболее популярных программ прошивки.

XLoader

Самая простая и лаконичная программа, которая подойдет любому, кому просто надо загрузить hex на популярную Arduino.

Xloader

Загрузка прошивки интуитивно понятна:

  • Выбираем…
    • файл прошивки
    • плату ардуино
    • COM-порт
    • Скорость передачи данных
  • Нажимаем кнопку Upload (Загрузить).

Последняя версия – 1.0.

Не может загружать EEPROM.

SinaProg

SinaProg – это уже более профессиональная и универсальная программа, разработанная неизвестными иранскими программистами. Однако сразу надо сказать, что данная программа – не более чем графическая оболочка для утилиты AVRDude, о которой пойдет речь дальше.

Универсальная оболочка для AVRDude

  1. Выбираем файл прошивки
  2. Настраиваем программатор: выбираем…
  3. Arduino,
  4. Порт
  5. Скорость передачи

Последняя версия – 2.1.1

Avrdude

Большинство всех загрузчиков используют одну и ту же утилиту – AVRDude (AVR Downloader-Uploader), которая давно вошла во многие среды разработки для ардуино, в т.м. числе и в Arduino IDE.

Это мощнейшая утилита для работы с чипами AVR, но все-таки это утилита командной строки, что многим неудобно.

Загрузка HEX прошивки в Arduino

Читайте в следующем параграфе как прошить ардуино и с его помощью.

Последняя версия – 6.3.

Arduino IDE, AVRDude

Рассмотрим как загрузить прошивку, имея только Arduino IDE на компьютере с Windows.

Напомню, что вместе с Arduino IDE ставится и AVRDude, с помощью которого мы и загрузим прошивку.

Установка программного обеспечения

  • Установить программу Arduino IDE, если она не установлена
    • В ряде случаев потребуется установить дополнительный драйвер вашей платы (если плата – китайский клон). Драйвер нужен только в случае если вы не видите вашу плату в Arduino IDE.

Подготовка

  • Подключить плату к компьютеру
  • Запустить Arduino IDE
  • Определить к какому порту подключена Arduino, через меню, как показано ниже:

Выбор COM-порта ардуино

  • Определите в какой папке установлена Arduino IDE

Обычно – “C:Program Files (x86)Arduino”

Загрузка прошивки ардуино

  • Открываете командную строку и вводите следующую команду, предварительно скорректировав ее под свои условия:

“ C:Program Files (x86)Arduino hardwaretoolsavr/bin/avrdude” -“ C:Program Files (x86)Arduino hardwaretoolsavr/etc/avrdude.conf” -v -patmega328p -carduino -PCOM 3 -b 115200 -D -Uflash:w: Firware .hex:i

Обратите внимание на:

  • Путь к Arduino IDE ( желтым ),
  • Номер порта ( голубым ),
  • Скорость передачи данных ( зеленым )
  • Название (путь) файла прошивки ( фиолетовым )

Если при выполнении команды вы увидите ошибку как ниже

, значит ваша плата не может работать со скоростью 115200, и необходимо установить скорость 57600.

Нажмите CTRL+C, чтобы прервать процесс.

Получение помощи

Если у вас что-то не получилось, и вы являетесь нашим клиентом, обратитесь на страницу поддержки.

Часто задаваемые вопросы о прошивке

Какой COM-порт выбирать?

Такой вопрос возникает обычно, когда программа не может автоматически выбрать COM-порт, к которому подключена Arduino.

Прежде всего, чтобы ардуино определялась, необходимо, чтобы на компьютере были установлены ее драйвера. Они ставятся вместе с Arduino IDE. Для китайских удешевлённых колонов может понадобится поставить драйвер CH340.

Итак, драйвера установлены, теперь выберем правильный порт.

Порт можно посмотреть в Arduino IDE…

Выбор COM-порта в Arduino IDE

… или, если вы на Windows, в диспетчере устройств:

Определение COM-порта, к которому подключена Arduino через диспетчер устройств Windows.

Однозначно, это не COM1. Поэтому, в моем случае это будет COM3.

Какую скорость выбрать?

Скорость передачи зависит от версии платы. Если мы говорим о популярных Nano или UNO, то скорость будет 115200. Однако, если вы имеете дело с китайский клоном, то, возможно, придется выбрать 57600.

В общем, рецепт прост: если не получается с одной скоростью, тут же пробуете другую.

5 Replies to “Как загрузить HEX прошивку Ардуино”

Чем регулируется частота и амплитуда , Какой кабель нужен для прошивки Arduino nano ?

Она вводится через последовательный порт, аналогично тому как загружается прошивка.
Кабель нужен mini-USB data

Со строкой для cmd у вас какая-то беда. Вот рабочий вариант.

“C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe” -C “C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf” -v -p atmega328p -c arduino -P COM3 -b 57600 -D -U flash:w:D:\Documents\Arduino\C\WinAVRC\main.hex:i

За статью спасибо.

А как все это проделать в Линукс?

Не найду ссылку для скачивания демо версии для автокормушки. Подскажите.

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

Для отправки комментария вам необходимо авторизоваться.

Источник

Adblock
detector