Как загрузить шестнадцатеричный файл в arduino ide

Обновлено: 01.07.2024

Вот как использовать командную строку CMD для загрузки файла .hex (скомпилированного шестнадцатеричного файла) в Arduino без использования Arduino IDE. Кроме того, как использовать командную строку для загрузки файла .bin на ESP8266 или ESP32.

Если вы не знаете, что такое файлы .hex и .bin, читайте дальше. Код, написанный в Arduino IDE, написан на C и/или C++, языке программирования высокого уровня, который нам легко читать и писать. Микроконтроллеры не способны понимать языки программирования высокого уровня.

Однако, когда вы нажимаете «Загрузить», среда разработки Arduino IDE преобразует ваш код в шестнадцатеричные и/или бинарные файлы, которые затем загружаются в микроконтроллеры. Обычно эти файлы действуют как прошивка вашего устройства.

Много раз разработчик делал файл .hex или .bin доступным для клиента, потому что разработчик приложил много усилий для написания этого кода и не хочет показывать вам, как он это сделал, поэтому разработчик может просто предоставьте вам скомпилированный файл .hex или .bin вместо программного кода, и вам нужно будет изучить эти шаги, чтобы загрузить файл .hex и .bin с помощью командной строки (подсказка CMD) без использования Arduino IDE.

КАК СОЗДАТЬ ФАЙЛ .hex ИЛИ .bin

Выберите макетную плату в разделе "Инструменты", затем нажмите "Экспортировать скомпилированный двоичный файл" в разделе "Эскиз".

Это создаст два шестнадцатеричных файла, если вы используете плату Arduino, или bin-файлы, если вы используете плату ESP8266 или ESP32, в той же папке (в том же месте), где сохранен файл ino.

КАК ЗАГРУЗИТЬ ФАЙЛ .hex В ARDUINO UNO/NANO/MEGA С ИСПОЛЬЗОВАНИЕМ КОМАНДНОЙ СТРОКИ

Прежде чем начать, имейте в виду, что вам понадобятся три вещи

ШАГ 1

Чтобы начать, откройте среду разработки Arduino и перейдите в меню «Файл» > «Настройки», установите флажок «Загрузка» в разделе «Показывать подробный вывод во время:

ШАГ 2

Выберите плату в меню инструментов, в моем случае Arduino Genuino/Uno, и COM-порт в меню инструментов. У меня COM14, но, возможно, у вас другой.

ШАГ 3

Если все в порядке, вы можете загрузить любой код или скетч (как пустой, так и любой)

ШАГ 4

До того, как текст красного цвета начинался с чего-то вроде «avrdude: Version 6.3-20171130», как показано на снимке экрана, после успешной загрузки.

Вы столкнетесь с такой командой avr dude, но ваш путь может немного отличаться. Посмотрите на эти точки и посмотрите, содержат ли они -CC, -Uflash:w:\path_of_hex_file:i

Скопируйте эту строку и вставьте в любой текстовый редактор, например notepad++, следующие 2 шага очень важны.

ШАГ 5

Замените путь между «w» и «i» в последней красной строке на путь к шестнадцатеричному файлу, который вы собираетесь загрузить.

ШАГ 6

Поскольку приглашение CMD не распознает пробелы между путями, см. здесь, в Program Files (x86), используйте двойной курс «» для пути. Вот как будет выглядеть приведенная выше команда. (см. ниже).

Если вы не используете двойной курс, вы получите следующее сообщение об ошибке:

«C:\Program» не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл.

ШАГ 7

Теперь откройте командную строку (Windows+r), введите cmd в мастере запуска и нажмите OK.

ШАГ 8

Путь из шага 6 следует скопировать, щелкнуть правой кнопкой мыши и вставить; сочетание клавиш ctrl + v не будет работать здесь в командной строке.

ШАГ 9

Если все вышеперечисленные шаги выполнены правильно, вы увидите, что загрузка прошла успешно. с сообщением в конце «avrdude done. Спасибо.

КАК ЗАГРУЗИТЬ ФАЙЛ .bin В ESP8266 С ИСПОЛЬЗОВАНИЕМ КОМАНДНОЙ СТРОКИ

Чтобы загрузить файл .bin на ESP8266, следуйте тем же инструкциям с 1 по 3, что и для Arduino, за исключением выбора платы и порта, на этот раз они будут другими. Например, плата может быть NodeMCU 0.9 (модуль ESP-12), а порт — COM11.

ШАГ 1

После того, как вы успешно загрузите код, до того, как начнется красный текст, что-то вроде «esptool.py v2.8», как показано на снимке экрана

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

Скопируйте эту строку и вставьте в любой текстовый редактор, например notepad++, следующие 2 шага очень важны.

ШАГ 2

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

ШАГ 3

Поскольку приглашение CMD не распознает пробелы между путями, см. здесь в Program Files (x86), используйте двойной курс «» для пути, если в пути присутствует пробел. Вот как будет выглядеть приведенная выше команда. (см. ниже).

ШАГ 4

Теперь откройте командную строку (Windows+r), введите cmd в мастере запуска и нажмите OK.

Выполнить окно - cmd

ШАГ 5

Путь из шага 3 следует скопировать, щелкнуть правой кнопкой мыши и вставить; сочетание клавиш ctrl + v не будет работать здесь в командной строке.

ШАГ 6

Если все вышеперечисленные шаги выполнены правильно, нажмите «Ввод», и вы увидите, что загрузка прошла успешно, а в конце появится сообщение «Аппаратная перезагрузка через пин-код RTS…»


< /p>

Если у вас есть несколько плат Arduino для прошивки с помощью одной и той же программы, может быть интересно напрямую прошить скомпилированный файл HEX. Это имеет два интереса. Это экономит ваше время при загрузке и позволяет третьим лицам загружать программу без использования Arduino IDE.

Вам не нужно это каждый день, но я покажу вам, как сгенерировать HEX-файл и загрузить его в микроконтроллер Arduino. Этот метод можно адаптировать для других микроконтроллеров, таких как ESP8266 и ESP32, с помощью других инструментов.

Создайте HEX-файл с помощью Arduino IDE

В программном обеспечении Arduino перейдите в меню «Файл», затем «Настройки».

Отметьте флажками «подробные результаты во время» для компиляции и загрузки (подробный режим)


Выберите порт и тип карты, на которую вы хотите загрузить программу.

Когда вы нажимаете Compile или Upload, Arduino IDE создает файл сборки в папке AppData\Local\Temp\, в которой находится HEX-файл. Вы можете найти имя файла в консоли IDE во время компиляции или загрузки.

После компиляции:


После загрузки:


Вы можете скопировать сгенерированный HEX-файл в другое место на своем компьютере.

Загрузить HEX-файл с помощью командной строки Windows

После запуска загрузки в Arduino IDE вы получаете команду загрузки.


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


< /p>

Затем нажмите клавишу «Ввод», чтобы загрузить программу. (Совет: как только вы узнаете команду, вы можете создать файл bash для автоматизации процесса).


< /p>

Примечание. Если вы хотите загрузить HEX-файлы с другого компьютера (особенно если не установлена ​​среда разработки Arduino IDE), не забудьте установить драйверы, необходимые для распознавания микроконтроллеров.

Загрузить HEX-файл с помощью XLoader

Загрузите программное обеспечение XLoader.

Запустите исполняемый файл XLoader.exe


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

У меня есть Rostock Max 3d с Arduino Uno в качестве контроллера. У OEM-производителя есть версия прошивки, которую я хотел бы загрузить, но она в шестнадцатеричном формате.

Я просмотрел всю среду разработки Arduino IDE, но не нашел способа загрузить шестнадцатеричный файл в Arduino. Я пытался использовать AVRDUDE, но Arduino связывается с моим ПК только тогда, когда я устанавливаю «Программист» на AVRISP. Я загрузил другие коды для blink и hello_world, но не смог скомпилировать исходный код прошивки. Я надеялся, что смогу просто использовать шестнадцатеричный файл, включенный в пакет прошивки.

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

4 ответа 4

Я использую автономный программатор, который загружает файл .hex с SD-карты через интерфейс ICSP.

введите здесь описание изображения

Я рекомендую просмотреть файлы IDE arduino, расположенные в "(путь установки)/hardware/arduino/avr/" (во всяком случае, в Windows, я должен предположить, что в Linux то же самое).

Я не уверен, что следующие файлы имеют расширение .txt, но если нет, используйте только имя файла.

Откройте и посмотрите в "boards.txt" и найдите связанные записи, начинающиеся с "uno", оставив этот файл открытым.

Затем откройте «platform.txt», найдите записи «tools.avrdude» (часть avrdude взята из записи «uno.upload.tool» в boards.txt) и скопируйте в новый текстовый редактор значение «tools. avrdude.upload.pattern" вы можете заполнить параметры позже.

Скопированной командой замените следующее:

теперь из boards.txt

  • " "
  • " " = Ваш последовательный порт (согласно исследованию что-то вроде /dev/ttyS0)
  • " "
  • " " и " = путь к файлу, который вы пытаетесь загрузить

Итак, с вышеизложенным для меня, чтобы загрузить программу в Arduino uno, я бы использовал что-то вроде следующего в Windows:

при условии, что путь установки был "C:\Arduino\"

"C:\Arduino\hardware\tools\avr\bin\avrdude.exe" "-CC:\Arduino\hardware\tools\avr\etc\avrdude.conf" -v -patmega328p -carduino " -PCOM1" -b115200 -D "-Uflash:w:C:\MyArduinoProject\build.hex:i"

для Linux это может быть (я действительно не уверен):

при условии, что путь установки был "/opt/Arduino/"

"/opt/Arduino/hardware/tools/avr/bin/avrdude" "-C/opt/Arduino/hardware/tools/avr/etc/avrdude.conf" -v -patmega328p -carduino "- P/dev/ttyS0" -b115200 -D "-Uflash:w:/usr/MyArduinoProject/build.hex:i"

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

В этом уроке вы точно узнаете, что такое AVR DUDE? Как установить? и как загрузить HEX-файл на любую плату Arduino или микроконтроллер AVR с помощью AVRDUDE.

Сначала давайте подробно рассмотрим AVRDUDE!

АВРДУД:

AVRDUDE – это аббревиатура от AVR-загрузчика. Это программное обеспечение с открытым исходным кодом, используемое для программирования микроконтроллеров AVR. Вы также можете использовать его для программирования EEPROM, флэш-памяти и даже фьюзинговых и блокировочных битов.

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

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

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

AVRDUDE можно эффективно использовать через командную строку для чтения или записи встроенной памяти, включая EEPROM, флэш-память, биты предохранителей, биты блокировки и байты подписи.

Если вы хотите загрузить шестнадцатеричный файл во флэш-память вашего микроконтроллера, вы можете легко сделать это с помощью командной строки. С другой стороны, интерактивный режим терминала упрощает изучение содержимого памяти, изменение отдельных байтов EEPROM или программирование фьюзов/блокировок.

Параметры AVRDUDE:

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

-C (файл конфигурации)

– (заглавная) C используется для указания файла конфигурации для данных конфигурации. Файл содержит все определения программаторов и микроконтроллеров, поддерживаемые AVRDUDE. Если у вас есть программатор или микроконтроллер, о которых Avrdude не знает, вы можете добавить детали его конфигурации в этот файл.

В Windows он ищет файл конфигурации в папке, где установлен AVRDUDE. Мы также увидим, как установить AVRDUDE позже в этом руководстве.

-c (идентификатор программиста)

-(small)c сообщает AVRDUDE о типе программатора, который используется для программирования микроконтроллера. AVRDUDE знает о нескольких распространенных программаторах, поэтому используйте эту опцию, чтобы указать, какой из них вы используете. Для каждого из поддерживаемых программаторов параметр Programr-id указан в файле конфигурации.

Для получения полного списка программистов введите «avrdude -c help» в командной строке. Вы увидите полный список программаторов, поддерживаемых AVRDUDE. Здесь help — это просто какой-то бессмысленный параметр, чтобы заставить его выдать список программистов.

-p (идентификатор части)

-(small)p сообщает AVRDUDE о типе микроконтроллера, который подключен к программатору. Его параметр должен быть идентификатором детали, указанным в файле конфигурации. Вот идентификаторы частей микроконтроллеров, поддерживаемых AVRDUDE.

< td>m328< /tr>
ID PRTИМЯ UC ID PRTИмя UC
c128AT90CAN128 m32ATmega32
pwm2AT90PWM2 m324ATmega324
pwm3AT90PWM3ATmega328
1200AT90S1200 m3290ATmega3290
2313AT90S2313 m48ATmega48
2333AT90S2333 m64ATmega64
2343 AT90S2343 (*) m640ATmega640
4414AT90S4414 m644ATmega644
4433AT90S4433 m649ATmega649
4434AT90S4434 m6490ATmega6490
8515AT90S8515 m8ATmega8
8535AT90S8535< /td> m8515ATmega8515
m103ATmega103 m8535ATmega8535
m128ATmega128 m88ATmega88
m1280ATmega1280 t12ATtiny12
m1281< /td>ATmega1281 t13ATtiny13
m16ATmega16 t15ATtiny15
m161ATmega161 t2313 ATtiny2313
m162ATmega162 t25ATtiny25
m163ATmega163 t26ATtiny26
m164ATmega164 t45ATtiny45
m169ATmega169 t85< /td>ATtiny85

Для получения полного списка поддерживаемых устройств введите «avrdude -c arduino -p help» в командной строке. Здесь help — это просто какой-то бессмысленный параметр, чтобы заставить его выдать список поддерживаемых микроконтроллеров.

-b (скорость передачи)

– опция (small)b переопределяет скорость передачи данных последовательной связи, указанную для этого программатора в файле конфигурации.

-P (порт)

– (заглавная)P используется для обозначения порта, к которому подключен программатор. Позже в этом руководстве я расскажу вам, как определить этот порт.

-v (подробный вывод)

– опция (small)v включает подробный вывод. Когда вы включите эту команду, вы увидите дополнительную информацию о выполненной вами команде.

-U тип_памяти:OP:имя_файла:формат

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

Эта опция принимает различные параметры: «memtype» указывает тип памяти, который необходимо запрограммировать, «op» определяет операцию, которую нужно выполнить, «filename» — это исходный или конечный файл для чтения или записи, а «format» Параметр указывает формат файла.

тип памяти:

AVRDUDE поддерживает различные типы памяти, присутствующие в микроконтроллере. Параметр memtype используется для указания типа программируемой встроенной памяти. Это типы памяти, к которым может получить доступ AVRDUDE.

  • eeprom: EEPROM устройства.
  • efuse: расширенный байт предохранителя.
  • flash: флэш-память устройства.
  • fuse: байт предохранителя в устройствах, которые имеют только один байт предохранителя.
  • hfuse: старший байт предохранителя.
  • lfuse: младший байт предохранителя.
  • lock: байт блокировки.

Параметр OP указывает тип выполняемой операции. Это поле принимает один символ, который может быть «r», «w» или «v» для операций чтения, записи или проверки.

  • r: чтение указанной памяти устройства и запись в указанный файл
  • w: прочитать указанный файл и записать его в указанную память устройства
  • v: прочитать указанную память устройства и указанный файл и выполнить операцию проверки.

имя файла:

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

формат:

Параметр формата является необязательным и содержит формат файла для чтения или записи. Возможные значения этого параметра: «i, s, r и a». Подробная информация о каждом из этих форматов представлена ​​на этом слайде. Формат Intel HEX является наиболее популярным и часто используется среди них.

Это был обзор AVRDUDE, мы будем использовать все эти опции в руководстве по примерам AVRDUDE, приведенном ниже. Давайте сначала посмотрим, как установить AVRDUDE.

Как установить AVRDUDE В Windows:

Во второй части этой статьи я также расскажу вам об установке AVRDUDE на ваш компьютер с Windows.

Если на вашем ПК с Windows установлена ​​среда Arduino IDE, то наверняка на вашем компьютере уже установлен AVRDUDE. Вы можете проверить это, открыв командную строку и набрав там «AVRDUDE».

Введите «командная строка» в поле поиска на панели задач и откройте его, нажав клавишу ввода. Затем наберите там «avrdude».

Если вы видите это сообщение

‘avrdude’ не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл.

Тогда AVRDUDE не установлен на вашем компьютере, и вы должны следовать этому руководству, чтобы установить AVRDUE на свой компьютер.

С другой стороны, если вы видите список доступных параметров для AVRDUDE при вводе его в командной строке. Тогда это означает, что AVRDUDE уже установлен на вашем компьютере, и вы можете просто использовать его для загрузки программ на свои платы Arduino.

Давайте посмотрим, как установить AVRDUDE:

Откройте эту ссылку и загрузите программное обеспечение отсюда AVRDUDE ZIP.

Перейдите на диск C или любой другой диск, который вам нравится. Создайте новую папку с именем «AVRDUDE» и скопируйте zip-файл в эту папку.

Распакуйте содержимое ZIP-файла в эту папку. Там должно быть два файла «avrdude.exe» и «avrdude.conf». Первый файл — это исполняемая программа AVRDUDE, а второй — файл конфигурации для AVRDUDE. Содержит определения всех программаторов и микроконтроллеров, поддерживаемых программным обеспечением.

Далее вам нужно добавить эту папку в переменную пути. Для этого перейдите на рабочий стол и щелкните правой кнопкой мыши «Этот компьютер». Затем нажмите на свойства.

Нажмите на дополнительные параметры системы справа. Появится всплывающее окно со «Свойствами системы».

Нажмите кнопку переменных среды в правом нижнем углу. В разделе системных переменных вы увидите переменную с именем «путь». Выберите переменную и нажмите «Изменить».

Нажмите новую кнопку, вставьте путь и нажмите "ОК". Теперь путь к программе указан в переменных среды, и установка завершена.

Для успешной установки AVRDUDE снова откройте командную строку и введите «AVRDUDE». если вы видите список всех параметров, связанных с AVRDUDE, значит, ваша программа AVRDUDE настроена и работает.

Теперь вы можете использовать эту программу для прошивки плат Arduino и микроконтроллеров AVR.

Есть еще один метод, с помощью которого вы можете установить AVRDUDE на свой компьютер с Windows. AVRDUDE также входит в цепочку инструментов WINAVR. Этот набор инструментов включает инструменты разработки программного обеспечения с открытым исходным кодом для микроконтроллеров AVR.

Вы также можете загрузить и установить набор инструментов WinAVR. Он имеет компилятор AVR-GCC вместе с другими инструментами, которые помогут вам скомпилировать и сгенерировать шестнадцатеричные файлы из вашего кода. В следующих публикациях мы опубликуем полные руководства по использованию этих инструментов.

AVRDUDE в действии:

В третьей части этого руководства мы увидим, как использовать AVRDUDE для выполнения различных операций.

Как использовать AVRDUDE в интерактивном режиме:

Интерактивный режим AVRDUDE очень удобен, если вы хотите читать и записывать в предохранитель, биты блокировки или фрагмент памяти. Чтобы перейти в интерактивный режим, введите AVRDUDE в командной строке. Затем введите идентификатор программиста, который вы используете. В моем случае я использую плату Arduino Uno в качестве ISP-программатора, поэтому я набрал «avrisp».

Далее вам нужно указать название микротроллерного чипа, с которым вы работаете. Я программирую Arduino Pro Mini, и он имеет микросхему микроконтроллера «atmega328p», поэтому для этой опции я использовал «m328p».

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

Перейдите в поле поиска на панели задач, введите «диспетчер устройств» и нажмите клавишу ввода. Вы увидите список всех подключенных устройств. Разверните раздел «Порты», вы должны увидеть COM-порт для вашей платы Arduino. В моем случае это COM8, поэтому я упомянул его с помощью параметра -C (дефис C с заглавной буквы).

Теперь поговорим о скорости передачи данных. У большинства программаторов скорость передачи указана в файле «avrdude.config». В моем случае я использую ARDUINO UNO в качестве ISP-программатора со скоростью передачи данных 19200 бод. В моем случае скорость передачи данных для «avrisp» в файле конфигурации установлена ​​неправильно, и скорость передачи данных по умолчанию не работает, как показано.

Есть два решения этой проблемы, давайте обсудим их оба.

Во-первых, я могу переопределить скорость передачи данных по умолчанию, используя параметр -b и задав программе правильную скорость передачи данных 19200. Это будет работать, и программа будет показана здесь.

Или я могу добавить информацию о скорости передачи данных в файле конфигурации. Это также очень легко сделать, так что давайте сделаем это. Откройте файл конфигурации и найдите «avrisp», так как этот программатор имеет указанную скорость передачи данных, как и некоторые другие. Давайте зададим скорость 19200 бод, сохраним и закроем файл. Это будет работать так же хорошо, как показано.

Наконец, введите «-t», чтобы перевести Arduino в интерактивный режим. Затем AVRDUDE проверит подпись устройства, чтобы проверить, правильно ли подключено устройство. Вы увидите «avrdude>», который показывает, что AVRDUDE теперь находится в терминальном режиме.

Да! Работает как часы. Теперь вы можете ввести help, чтобы увидеть все доступные команды в интерактивном режиме, как показано ниже.

  • дамп: дамп памяти : дамп
  • чтение: псевдоним для дампа
  • запись: запись в память: запись…
  • erase: выполнить стирание чипа
  • sig: отображать байты подписи устройства
  • часть: отображать текущую информацию о части.
  • отправить: отправить необработанную команду: отправить
  • parms: отображать настраиваемые параметры (только для STK500)
  • vtarg: установить (только STK500)
  • varef: установить (только для STK500)
  • fosc: установить (только для STK500)
  • sck: установить (только для STK500)
  • spi: вход в прямой режим SPI
  • pgm: вернуться в режим программирования
  • подробный: изменить уровень детализации
  • помощь: помощь
  • ?: помощь
  • выйти: выйти

Как прочитать значения efuse, hfuse, lfuse и lock byte в интерактивном режиме?

Чтобы прочитать значения фьюзов, введите команду чтения, за которой следует название фьюза. Давайте сначала продемонстрируем это для efuse. Введите read, затем введите efuse и нажмите Enter. Вы можете видеть, что значение efuse установлено на 0xfd. Точно так же давайте продемонстрируем это для других байтов fuse и lock.

  • read efuse : чтение расширенного байта предохранителя.
  • read hfuse: чтение старшего байта предохранителя.
  • read lfuse: чтение младшего байта предохранителя.
  • чтение блокировки: чтение байта блокировки.

Как записать значения efuse, hfuse, lfuse и lock byte в интерактивном режиме?

давайте посмотрим, как мы можем записать новое значение в efuse. Я запишу то же значение на Atmel atmega328p, потому что я не хочу менять настройки предохранителей моего Arduino Pro Mini. Тем не менее, мы подробно обсудим, что делают каждый предохранитель и бит блокировки, и мы изменим их, чтобы изменить настройки микроконтроллера AVR.

Затем вы можете снова прочитать содержимое efuse, чтобы проверить изменения. Я не хочу менять настройки моего Arduino Pro Mini, поэтому я изменю байт efuse обратно на 0xfd. Но в будущих уроках мы узнаем о каждом бите предохранителя и изменим его.

  • записать efuse 0x0000 0xfd
  • записать hfuse 0x0000 0xda
  • написать lfuse 0x0000 0xff
  • блокировка записи 0x0000 0x3f

Как читать флеш-память в интерактивном режиме?

Вы можете легко читать фрагменты памяти в интерактивном режиме. Давайте прочитаем 8 байт флэш-памяти с адреса 0x0000 до 0x0008. Просто в терминале введите «read», затем введите «flash», а затем введите начальный адрес, за которым следует количество битов, которые вы хотите прочитать, в моем случае это 8.

Когда вы нажмете ввод, вы увидите содержимое флэш-памяти для этих адресов на терминале.

  • чтение флэш-памяти 0x0000 8
  • чтение флэш-памяти 0x0040 16

Как прочитать память EEPROM в интерактивном режиме?

Как и в случае с флэш-памятью, вы можете прочитать содержимое памяти EEPROM в интерактивном режиме, набрав write, а затем EEPROM, а затем начальный адрес и количество битов. Вы увидите содержимое EEPROM для этих адресов на своем терминале.

  • прочитать eeprom 0x0000 8
  • прочитать eeprom 0x0010 4

Как использовать AVRDUDE:

Теперь давайте посмотрим, как мы можем использовать AVRDUDE для чтения и записи из Arduino.

Как загрузить HEX-файл на Arduino с помощью AVRDUDE?

Вы можете легко загрузить любой HEX-файл на любую из ваших плат Arduino с помощью AVRDUDE. Чтобы выполнить эту задачу, введите в командной строке AVRDUDE, затем укажите идентификатор программиста (в моем случае это AVRISP), затем введите идентификатор микроконтроллера (я использую arduino pro mini, поэтому в моем случае это m328p). После упоминания порта и скорости передачи для меня порт COM8 и скорость передачи 19200.

Затем введите -U, чтобы указать, что вы выполняете операцию с памятью, затем установите двоеточие w, чтобы указать, что это операция записи, затем имя файла с двоеточием (в моем случае имя файла — adduino.hex) и, наконец, введите двоеточие, за которым следует «I», чтобы указать, что это шестнадцатеричный файл Intel.

  • avrdude -c avrisp -p m328p -P com8 -b 19200 -U flash:w:adduino.hex:i

Это простая программа мигания, в которой желтый светодиод подключен к контакту 8 моей платы Arduino Pro Mini. Вот моя установка: я использую плату Arduino Pro Mini в качестве программатора ISP, и она подключена к Arduino Pro Mini с помощью коммуникационного модуля SPI. Желтый светодиод подключен к PB0 или контакту 8 Arduino Pro Mini.

Как загрузить программу из флэш-памяти Arduino с помощью AVRDUDE?

Вы также можете легко загрузить содержимое флэш-памяти с помощью avrdude. Чтобы выполнить эту задачу, введите -U, чтобы указать операцию с памятью, а затем введите flash, затем двоеточие, затем «r», затем имя выходного файла, а затем двоеточие «i».

  • avrdude -c avrisp -p m328p -P com8 -b 19200 -U flash:r:adduinoDownload.hex:i

После этого в текущей папке вы найдете HEX-файл с именем «arduinoDownload». Это шестнадцатеричный код, который мы скачали с платы Arduino Pro Mini.

Как загрузить данные из EEPROM Arduino с помощью AVRDUDE?

Вы также можете легко загрузить содержимое EEPROM с помощью avrdude. Чтобы выполнить эту задачу, введите -U, чтобы указать операцию с памятью, затем введите eeprom, затем двоеточие, затем «r», затем имя выходного файла, а затем двоеточие «i».

  • avrdude -c avrisp -p m328p -P com8 -b 19200 -U flash:r:adduinoEEPROM.hex:i

После этого в текущей папке вы найдете HEX-файл с именем «arduinoDownload». Это данные EEPROM в шестнадцатеричном формате Intel, которые мы скачали с платы Arduino Pro Mini.

Я надеюсь, что вы многому научились из этого руководства. Оставайтесь на связи, потому что очень скоро мы обсудим более интересные темы.

Эксперимент: как загрузить файл .hex с помощью Arduino IDE и эскиза ArduinoISP. Почему в Arduino IDE нет опции «Загрузить файл .hex». Многие микропроекты в Интернете предоставляют только файл .hex. Не желая устанавливать другую программу для загрузки .hex-кода, «хотя» Arduino IDE использует (Avrdude) для загрузки .hex-файла. Так почему бы не запустить внешний файл .bat для загрузки кода .hex через ArduinoISP.

Задача: выяснить, как использовать COM-порт Arduino UNO для загрузки .hex-кода через эскиз ArduinoISP.

Как запрограммировать ATtiny из Arduino ISP с помощью файла .hex

Необходимое программное обеспечение Arduino IDE
Если Arduino IDE уже установлена, пропустите шаг 1.

Шаг 1. Загрузите и установите среду разработки Arduino (последняя загрузка среды разработки Arduino), следуя инструкциям по установке на веб-сайте Arduino.

Шаг 2. Найдите папку Arduino IDE и создайте новую папку с именем (hexFiles).

Шаг 3. Запустите Arduino IDE

Шаг 4. Для тестирования загрузите скетч Blink (Файл>Примеры>Основные>Blink), не забудьте выбрать правильную плату в Инструментах.

Шаг 5. Нажмите значок (Проверить), чтобы проверить и скомпилировать эскиз.

Шаг 6. Найдите файл Blink.cpp.hex, который обычно находится в папке Temp пользователя. Скопируйте Blink.cpp.hex в папку (hexFile).

Шаг 7: Загрузите ArduinoISP в Arduino UNO (Файл>Примеры>ArduinoISP), не забудьте выбрать правильную плату/com-порт в Инструменты.

Шаг 8. Щелкните значок (проверьте) Проверьте эскиз

Шаг 9. Щелкните значок (стрелка) и скомпилируйте эскиз

.

Шаг 10. Закройте Arduino IDE (Файл>Закрыть)

Шаг 11. Отключите Arduino UNO ISP от USB-порта.

Как загрузить файл .hex с помощью Arduino IDE / Arduino ISP

Шаг 1. Создайте копию файла (hexUpload.bat) и вставьте в него следующее:

Внимание при копировании/вставке команда это одна строка с пустой строкой между pause
Обновление: параметры выделены курсивом в Arduino IDE установленный путь/папки

C:\arduino-1.0.3\hardware/tools/avr/bin/avrdude -CC:\arduino-1.0.3\hardware/tools/avr/etc/ avrdude.conf -v -v -v -v -pattiny85 -cstk500v1 -P\\.\COM11 - b19200 -Uflash:w:C:\arduino-1.0.3\hexFiles\Blink.cpp.hex:i

Проверьте путь к avrdude.exe :
C:\arduino-1.0.3\hardware/tools/avr/bin/avrdude
Проверьте путь к avrdude.conf:
C:\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf
Подтвердите Micro:
attiny85 (см. документацию по -p avrdude)
stk500v1 (см. - c документацией avrdude)
Проверьте COM-порт:
COM11
Проверьте путь к hex файл Путь\HEX имя файла
C:\arduino-1.0.3\hexFiles\Blink.cpp.hex

Шаг 2: (если вся информация верна) Сохраните файл hexUpload.bat

Шаг 3. Запустите Arduino IDE.

Шаг 4. Проверьте доску (инструменты>Доска)

Шаг 5. Проверьте COM-порт (инструменты>Последовательный порт)

Шаг 6. Подключите Micro к экрану программирования

Шаг 7. Подключите плату Arduino UNO/ArduinoISP/Programming Shield к USB-порту

Шаг 8. Запустите пакетный файл hexUpload.bat

Если все правильно, шестнадцатеричный код будет загружен в Micro.

Примечания:
Индикатор Watch TX/RX должен мигать во время загрузки.
Только проверенный процесс с Arduino UNO

Читайте также: