Как в arduino ide получить файл hex
Начиная с версии 0018, в Arduino IDE нет возможности сохранять .hex файл в папку с скетчем. Но не стоит отчаиваться — выход естественно есть)
Запускаем нашу Arduino IDE, и открываем наш «любимый» скетч, нажимаем Verify:
Дальше, открываем проводник и пишем там %temp%\ и нажимаем Enter:

Находим там папки с именами buildXXXXXXXXXXXXXXX.tmp:

В каждой из этих папок будет куча файлов, нас интересует файл Blink.cpp.hex — это и есть наш скомпилированный Blink, который можно заливать на микросхему (или, скормить Proteus-у ))))
Примечание
Когда вы производите изменения с исходным текстом скетча, то папка buildXXXXXXXXX.tmp очищается автоматически, и вам надо заного нажать Verify, чтобы в ней появились файлы. На самом деле, даже удобно, если сделали изменения, но не сохранили — протеус, к примеру, начинает сразу кричать вопить, мол, файла то нету, куда файл дели)
Комментарий от RA3TOX
Для записи я использую программатор USBASP и программу AVRDUDE_PROG v.3.3.
Для микропроцессора с кварцем на 16 МГц фьюзы выставляются следующим образом:

Можно скомпилировать скетч для работы микропроцессора с внутренней синхронизацией (без кварцевого резонатора). Данные для этого проекта можно взять здесь: ArduinoToBreadboard.
Для микропроцессора без кварцевого резонатора фьюзы выставляются так:
Как загрузить 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 файла.
Находим и открываем папку.
Заходим в папку Библиотека и видим там библиотеку Нео пиксель.
В папке скетч находится исходный код нашего скетча. Для сравнения посмотрим код в Arduino IDE.
Переходим к функции loop и сравниваем. Всё одинаковое.
Дальше я буду сравнивать в Visual Studio Code.
Помните я говорил, что в папке лежат 2 HEX файла. Вот их и сравним.
Один из них с загрузчиком, а второй без него.
Видим что в начале идут полностью одинаковые строчки кода. Например сравним 50 строчку.
Теперь прокручиваем файл без загрузчика до конца.
Видим, что на 117 строчке код закончился. Теперь прокручиваем файл с загрузчиком. До 117 строки.
А всё что дальше это и есть код загрузчика. Кстати загрузчик занимает столько же места, как и код программы с библиотекой.
Вот мы и научились получать HEX файл из своего исходного кода.
Следующий шаг это загрузка HEX файла в Ардуино.
Arduino.ru

1.
Открываете в IDE диалог «Настройки» и там ставите галочку напротив «показать подробный вывод . загрузить». В том, что Вам наболтает IDE при загрузке ищете . hex — там будет полный путь к странной директории. Вот там его и найдёте.
2.
Открываете IDE диалог «Настройки» и там ищете надпись «Больше опций можно редактировать в файле» и рядом ссылка на файл. Открываете этот файл (хоть в блоктноте). ЗАКРЫВАЕТЕ ВСЕ КОПИИ IDE — ВСЁ ЦЕЛИКОМ. В открытом файле в любое место вставляеете строку
сохраняете файл. Открываете IDE. С этого момента, все файлы, создаваемые при компиляции и загрузке будут располагаться в директории C:\MyFavoritePlace (она у Вас должна быть, конечно). Там и найдёт и .hex и .cpp и всё остальное. Это будет работать при любой компиляции пока «взад» конфигурационный файл не поменяете.
- Войдите на сайт для отправки комментариев
Пнд, 12/12/2016 — 21:30
Клапауций 234
Зарегистрирован: 24.10.2016
ЕвгенийП пишет:
Есть два способа
меню -> Скетч -> Экспорт бинарного файла
в папке скетча сольются два хекса — с загрузчиком и без.
- Войдите на сайт для отправки комментариев
Пнд, 12/12/2016 — 21:45
Зарегистрирован: 29.10.2016
в IDE нет «настройки»
- Войдите на сайт для отправки комментариев
Пнд, 12/12/2016 — 23:00

Зарегистрирован: 15.03.2016
Михаил95 пишет:
в IDE нет «настройки»
Услуги офтальмолога, частный мастер. Быстро и без боли.

- Войдите на сайт для отправки комментариев
Пнд, 12/12/2016 — 23:58
Зарегистрирован: 04.11.2016
и что? в версии 1.0.6 например ,вообще нет функции экспорта hex. у него скетчи в нану не льются из за дурной головы а не от плохого зрения
- Войдите на сайт для отправки комментариев
Втр, 13/12/2016 — 00:15
Voodoo Doll

Зарегистрирован: 18.09.2016
Клапауций , тоже Nemagia смотришь? 🙂
Афтар, щастье в каталоге %temp%. идёте туда и там будет много каталогов consoleбольшоечисло и buildбольшоечисло. Файл в последнем созданном из них, который с build. Если проблемы с сортировкой, то вот: dir /od, в FAR’ е Ctrl+F8. В тоталкомандере не знаю, не пользуюсь гавном.
- Войдите на сайт для отправки комментариев
Втр, 13/12/2016 — 05:43
Клапауций 234
Зарегистрирован: 24.10.2016
Voodoo Doll пишет:
Афтар, щастье в каталоге %temp%. идёте туда и там будет много каталогов consoleбольшоечисло и buildбольшоечисло. Файл в последнем созданном из них, который с build. Если проблемы с сортировкой, то вот: dir /od, в FAR’ е Ctrl+F8. В тоталкомандере не знаю, не пользуюсь гавном.
блин, ещё один археолог. этот фаром контуженый.
Клапауций 234 пишет:
меню -> Скетч -> Экспорт бинарного файла
в папке скетча сольются два хекса — с загрузчиком и без.
- Войдите на сайт для отправки комментариев
Ср, 01/02/2017 — 00:05

Зарегистрирован: 31.01.2017
в ардуине жми файл открыть вставляешь %temp% вместо имя файла, откроется папка с .hex, и остальное выше написали, информации более чем достаточно по этому вопросу .hex после компиляции там сразу найдется, его можно загружать в любую atmega которая совпадет по портам и пинам, частоте, либо порты и пины подогнать под atmega 8 — 2560 любую в редакторе, tqfp44, 64 паяются легко даже простым толстым паяльником, паяли вплоть до atmega128 (за копейки в китае), для заливки hex в ардуино есть отличная программа, заливает сколько угодно раз hex в ардуино напрямую, перезапись скетчей либо hex не требует ничего кроме их загрузки в перечисленные программы, все работает, также доставали из %temp% .hex для atmega написав код, в ардуино многое удобнее писать чем в flowcode, да и удобнее готовыми примерами, которые лишь доработать нужно. Если будешь прошивать atmega128 прошивай и паяй смело, паяли эмальпроводом посаженным на термоклей, если аккуратно, будет работать наполовину лишь уступая mega2560 atmel. Чип нужно перевернуть только вверх ножками и приклеить на термоклей, далее паяли так. Отлично работал, долго только паять 64 ножки, точнее эмальпровод зачищать долго, паять не долго. Если эмальпровод не приклеить термоклеем при пайке скорее всего ножки оторвутся. Каждый припаянный провод сразу приклеивается, иначе никак. Выхода не было нужно было запаять atmega128 простым толстым (другого не было) паяльником, о паяльной станции даже нет мечтаний и hex брался из ардуино из папки %temp%.
- Войдите на сайт для отправки комментариев
Прошивка hex-файлов в Arduino
Некоторые проекты для Arduino распространяются не в виде файлов скетчей (*.ino), а в виде hex-файлов (*.hex). Я расскажу, как прошить такой файл в Arduino.
Получение hex-файла

Как получить hex-файл для своего проекта или скачанного скетча? Для получения hex-файла, соответствующего требуемому скетчу, необходимо открыть этот скетч (например, bike.ino) в Arduino IDE (я использую версию 1.6.6) и выбрать в меню Скетч (Sketch) команду Экспорт бинарного файла (Export Compiled Binary):

После этого происходит компиляция и в папке скетча появляются два hex-файла (для скетча bike.ino — bike.ino.eightanaloginputs.hex и bike.ino.with_bootloader.eightanaloginputs.hex):
Hex-файл имеет текстовый формат и состоит из строк вида
:100020000C94DF030C94DF030C94DF030C94DF03C8

Отличие этих двух файлов заключается в наличии в файле *.ino.with_bootloader.eightanaloginputs.hex загрузчика Arduino:
Прошивка hex-файла

Как же прошить имеющийся hex-файл? Сначала необходимо подключить прошиваемую плату (я использую Arduino Nano 3.0) к USB-порту компьютера и узнать COM-порт подключения. Номер порта можно посмотреть в Arduino IDE в меню Инструменты (Tools):
Для прошивки hex-файла *.ino.eightanaloginputs.hex (для рассматриваемого скетча — bike.ino.eightanaloginputs.hex) в микроконтроллер платы Arduino используется программа AVRDude — AVR Downloader-Uploader, предназначенная для прошивки микроконтроллеров AVR.
Для упрощения процедуры прошивки можно создать папку avrdude. Затем в эту папку следует скопировать файлы avrdude из папок Arduino IDE:
avrdude.exe и libusb0.dll (библиотека из проекта libusb-win32 https://github.com/libusb/libusb) — из папки \Arduino\hardware\tools\avr\bin\
avrdude.conf (конфигурационный файл) — из папки \Arduino\hardware\tools\avr\etc\

В результате в папке avrdude содержатся три файла:
В эту же папку следует скопировать прошиваемый hex-файл (в рассматриваемом примере — файл bike.ino.eightanaloginputs.hex).

В Arduino IDE версии 1.6.6 представлена программа avrdude версии 6.0.1

Затем в консоли требуется ввести команду:
-v : вывод подробной информации
-patmega328p : указание типа микроконтроллера
-c arduino : указание программатора — программатор, используемый Arduino IDE
-P com11 : указание номера COM-порта (COM11)
-b 57600 : указание скорости COM-порта (57600 бод)
-D : не выполнять очистку FLASH-памяти микроконтроллера.
-U flash:w:»bike.ino.eightanaloginputs.hex»:i : w — запись flash — во FLASH-память i — файла в формате Intel Hex

После ввода команды выполняется прошивка hex-файла в Arduino:
Готово!
- Войдите, чтобы оставлять комментарии
