Как загрузить hex файл в arduino ide: Как загрузить HEX прошивку Ардуино

Содержание

104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader). — GetChip.net

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

Нас, прежде всего, интересуют три платы Arduino:
Arduino Uno – как самый распространенный вариант
Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.

Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).

Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf (8640 Загрузок)

Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).

Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!

Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.

Начнем, конечно, с моей программы загрузчика
GC-Uploader

gcUploader.zip (12456 Загрузок)

Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.

 

Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)

XLoader.zip (21592 Загрузки)

Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload

Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.

XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.

Автоматизация XLoader.

При разработке ПО для микроконтроллера производится очень много прошивок и всегда нужно стремиться автоматизировать этот процесс после сборки проекта — это экономит время и нервы. В данном случае автоматизация усложнена, так как программа не показывает командную строку для AVR Dude (разве что подбирать опытным путем), но некоторое упрощение процесса возможно. Делается это следующим способом – после первой прошивки не закрываем окно программы (COM порт после прошивки программа отпускает) и после следующей сборки проекта просто жмем кнопку «Upload». Конечно, сборка должна осуществляться в один и тот же Hex-файл.

 

Еще одна программка
ARP Uploader (Arduino Hex Uploader and Programmer)

ArduinoUploader.zip (19060 Загрузок)

Как и предыдущая, программка имеет простой интерфейс.

Процесс прошивки тот же:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт
— жмем Upload

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

При попытке прошить Arduino Nano программа отказывалась видеть МК. Причиной стала неправильная установка скорости COM порта. По умолчанию скорость стоит 19200, а нужно 57600. Скорость порта в программе не задается явно, она прописывается в строчке «AVR Dude Params» — поменяйте в ней значение 19200 на 57600.

Автоматизация ARP Uploader.
ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.

 

Дополнительные материалы.
Драйвера Arduino.

Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»

Arduino_drivers.zip (10576 Загрузок)

Стали появляться недорогие китайские Ардуины с драйвером Ch440G
Driver-Ch440G.zip (8710 Загрузок)

 

Загрузчики Arduino

Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.

ATmegaBOOT_168_atmega328.zip (11240 Загрузок)
Для правильной работы нужно установить фьюзы следующим образом Low: FF   High: DA   Ext: 05

ATmegaBOOT_168_diecimila.zip (5547 Загрузок)

Фьюзы Low: FF   High: DD   Ext: 00

 

Схемы Arduino

Cхемы вышеописанных Ардуин.
Arduino_Uno_Rev3-schematic.pdf (10139 Загрузок)
ArduinoNano30Schematic.pdf (9125 Загрузок)
Arduino-Pro-Mini-schematic.pdf (8096 Загрузок)

 

Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05

LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

(Visited 156 048 times, 26 visits today)

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

РадиоКот >Статьи >

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Для предметности разговора начну с картинки

Нет худа без добра (с).
Пока использовал заводские платы «Arduino UNO» и «Arduino MiniPRO», я не задумывался о том, как работает система в целом. Я просто писал код, нажимал кнопку «Вгрузить» и всё заливалось в микроконтроллер, далее МК, установленный на плате (ATmega328). В этом и заключается прелесть экосистемы «Arduino».
Сподвигла написать данный опус проблема. Никак мне удавалось залить исходную программу, далее СКЕТЧ, из Arduino IDE в нестандартный для неё МК «ATmega8L» с кварцем 8МГц стандартным способом, т.е. через USB-порт (на самом деле через преобразователь USB- UART). Это кратко. Теперь начну рассказывать, какую важную информацию я «наковырял» и как решил свою проблему.

Немного общей теории.
Для того, что бы залить (прошить, загрузить, UPLOAD) скетч в ATmega8L из Arduino IDE через USB-порт, нужен преобразователь, который преобразует информацию, передаваемую по USB-интерфейсу(каналу, дороге, линиям) в сигналы последовательного канала UART. Т.е. должны получиться определенные уровни сигналов – интерфейс (RS232, RS485) и определенные длительности сигналов (протокол).
Что бы принять информацию, поступающую в ATmega8L по UART (физически через выводы Rx, Tx) в МК должна быть ПРЕДВАРИТЕЛЬНО загружена программа, которая настраивает определенные выводы МК как Rx и Tx, и умеет обрабатывать полученную через них информацию. Эта программа называется ЗАГРУЗЧИК или по англицки BOOTLOADER.

(Отступление. ЗАГРУЗЧИКи бывают для разных интерфейсов и, соответственно, протоколов. Программа-программатор, заливающая информацию, должна соответствовать имеющемуся ЗАГРУЗЧИКу. И наоборот — прошитый ЗАГРУЗЧИК должен соответствовать управляющей программе-программатору. Грубо говоря — это «папа» и «мама» одного разъема. Очень часто для МК фирмы ATMEL «папой» является программа avrdude.exe).

Итак, посредством USBasp-платы и avrdude.exe я залил ЗАГРУЗЧИК в ATmega8L. Залитый ЗАГРУЗЧИК должен учитывать определенные физические характеристики МК. В моем случае это то, что МК работает с внешним кварцем на частоте 8МГц (в рамках данной статьи этой характеристики достаточно). Заливка ЗАГРУЗЧИКа происходит просто и жестко – как указал разработчик МК. Не залить HEX-файл (FIRMWARE) ЗАГРУЗЧИКа при минимальном количестве извилин, прямых руках, исправных деталях и правильном соединении просто невозможно.

А почему же тогда возникает проблема залить скетч? Ответ есть выше. Предварительно прошитый ЗАГРУЗЧИК должен соответствовать настройкам «программы-заливатору» (от слова «программатор») и, конечно же, преобразователю интерфейса (плате-программатору). Если идиот подключит два проводка от Rx и Tx ATmega8 к двум выводам разъема USB, то ничего не прошьется. Поэтому на платах-преобразователях останавливаться не буду. Единственно напомню, что ISP-программаторы — это программаторы «железа», которые работают на самом низком уровне и позволяют настраивать МК почти как угодно в пределах возможного.

Вот и нарисовался главный вопрос: Как определить, что имеющийся в МК ЗАГРУЗЧИК соответствует программе-программатору (в рамках данной статьи – Arduino IDE)? Если кратко – то никак!!! И не поможет вам ни осциллограф, ни анализатор. С помощью анализатора можно увидеть длительности каких-то сигналов и максимум, что можно определить – используемую ЗАГРУЗЧИКом скорость, если он будет что-нибудь выдавать по линии Tx. Но даже если скорость будет согласованная, а считанная информация читабельна, это не скажет нам ровным счетом ничего. Единственный способ подружить ЗАГРУЗЧИК в МК и «программу-заливатор» – это читать и следовать информации разработчика ЗАГРУЗЧИКа.

И вот здесь мы подходим к главному плюсу и недостатку одновременно Arduino IDE – дружелюбному интерфейсу для начинающего пользователя. Читай: скрытие всех системных настроек программы от пользователя.
Продолжаю. Итак, мы прочитали информацию от разработчика ЗАГРУЗЧИКа как прошивать его ЗАГРУЗЧИК и как потом загружать HEX-файлы в МК. НО СТОП! В Arduino IDE нет понятия «ЗАГРУЗЧИК», «HEX-файл». Здесь я вынужден прервать рассказ, вернуться к первой картинке и рассказать «с высоты птичьего полета» как устроена Arduino IDE.

1) Грубо говоря, программная платформа «Arduino IDE» предоставляет нам только убогий (для профи) и замечательный для экосистемы «Arduino» интерфейс для написания скетчев и легкой настройки (плата, порт, программатор). При нажатии кнопки «Проверить»(скетч) в дело вступает «наемный профессионал» — компилятор avr-gcc.exe, который преобразует нашу гениальную программу в вид, принимаемый программой-программатором – HEX-файл. Если скетч преобразовался (скомпилировался) и получился HEX-файл, то можно приступить ко второму шагу(смотри картинку1).
2) Запустить программу-программатор с определенными параметрами, что бы HEX-файл «скормить», например, через преобразователь USB-UART, ЗАГРУЗЧИКу МК. Из данной схемы видно, что если автор ЗАГРУЗЧИКа использует в качестве программы-программатора, например, классическую «дудку» (avrdude.exe), то нам вовсе необязательно мучится с настройками платформы «Arduino IDE», спрятанными в фиг знает каких файлах и фиг знает в каком формате. Мы можем просто написать свой bat(cmd, скрипт)-файл и запускать его как для компиляции проекта (avr-gcc.exe), так и для заливки HEX-файла в МК (avrdude.exe). А дальше процесс происходит практически на уровне железа.
3) Драйверы операционной системы преобразуют информацию так, что бы она была понятной подключенным USB-устройствам. В представленной схеме я показал два варианта:
4) 1-й вариант с USB-UART -преобразователем и МК с обязательным (5.1) ЗАГРУЗЧИКом. 2-й вариант с аппаратным USBasp-программатором и (5.2)МК (ЗАГРУЗЧИК не нужен, хотя может иметься).

Какие можно сделать выводы, глядя на представленную картинку?
1. НЕ НАДО устраивать танцы с бубном, если не происходит в Arduino IDE компиляция проекта. Заходим на сайт разработчика компилятора для требуемого МК (ATmega, ESP8266 и т.п.) и читаем, какая среда требуется для компиляции проекта, и с какими опциями надо запустить компиляцию. Часто это будет быстрее и проще, чем пытаться подружить Arduino IDE с нужным МК. Да, для этого надо обладать определенным уровнем знаний не на уровне электрика.
2. Тоже самое можно сказать и о случае, если не происходит заливка HEX-файла в МК через ЗАГРУЗЧИК. Вводим в командной строке рекомендуемую для данного ЗАГРУЗЧИКа команду и получаем результат. Если результат отрицательный, то почти сразу знаем куда «копать». Либо проблема с драйверами ОС, либо дохлая ножка Rx, либо косяк разработчика и на худой конец – проблема в ДНК пользователя.
Вроде всё, о чем я рассказал, есть в интернете, но часто для начинающего ардуинщика непонятно, нужна ли ему некая информация и как ею воспользоваться. Это как на первом курсе универа нас пичкают производными, интегралами, матрицами и у студента растет естественное чувство «А нафига нам это надо?». А потом какой-нибудь практик возьмет и покажет, как использовать для решения реальных задач эту «вышку». И наступает «дзен». Вдруг резко всё, что валялось в голове в виде ненужного хлама, раскладывается по полочкам и ты понимаешь, что стал ИНЖЕНЕРОМ.

К сожалению это не всё, что надо бы знать начинающему ардуинщику. Кое-что расскажу о ЗАГРУЗЧИКЕ (bootloader) подробней.
Что же надо знать о ЗАГРУЗЧИКе, что бы осознанно им пользоваться?
1)Размер загрузчика.
2)Область памяти, в которую он загружается.
3)Фьюзы, которые должны быть использованы с загрузчиком.
4)Скорость для UART.
5)Частоту МК, под которую рассчитан ЗАГРУЗЧИК.
6)Ну и конечно же, под какой МК рассчитан ЗАГРУЗЧИК.
7)Внешнее проявление работающего ЗАГРУЗЧИКа.
8)Критерий для запуска ЗАГРУЗЧИКА.

1) Загрузчик имеет некий размер. Есть МК, у которых мало памяти, и разместить ЗАГРУЗЧИК просто нет места. Или место есть, но не останется места для программы пользователя. Загрузчик – это все таки только программа-посредник для нашего удобства.
2) В МК ATmega Загрузчик может заливаться (условно говоря) в одну из 4х верхних областей Flash-памяти.
3) Соответственно фьюзами задаем область памяти МК, в которой находится ЗАГРУЗЧИК, что бы МК знал, с какого адреса запускать программу в МК после «Reset» или другого события.
4) В экосистеме «Arduino» используется ЗАГРУЗЧИК по UART. А для этого протокола важна скорость. Если Загрузчик настроен на одну скорость обмена информацией, а программа-программатор(avrdude.exe) на другую, то загрузки HEX-файла в память МК не произойдет.
5) МК может работать с разными тактовыми частотами. Чем ниже частота – тем меньше потребляемая мощность. Если залить ЗАГРУЗЧИК, не рассчитанный на используемую МК тактовую частоту, то как минимум будет проблема в несогласованной скорости UART. Т.е. скетч вряд ли загрузится в МК, а если ЗАГРУЗЧИК без контроля ошибок, то может загрузиться черт знает что.
6) Типов МК очень много. ЗАГРУЗЧИК для МК AVR не подходит для МК PIC. Проблемы могут возникнуть даже для одинаковых МК, но в разных корпусах.
7) Очень не мешает знать, как ведет себя загрузчик в МК без пользовательской программы. Вот получили вы посылку из Китая с Arduino ProMini и как узнать есть в ней загрузчик или нет? А если есть описание, то можно прочитать, что при подаче питания или сбросе должен 5 раз мигнуть желтый светодиод. Не мигает? Значит нет загрузчика или у вас проблемы с платой.
8) Вообще-то ЗАГРУЗЧИК может активизироваться (начать свою работу, прервав работу основной программы) не только по сигналу сброса, но любым другим способом, который реализовал разработчик, например, замыканием выв. 5 МК на землю.

А теперь переведем полученную информацию в практическую плоскость.

1) Как узнать размер ЗАГРУЗЧИКА, находящегося в МК?
Если речь о загрузчике, залитом в плату ардуино (читай в МК ATmega8/168/328), то можно прочитать с помощью программы-программатора, например, AVRDUDESS и платы-программатора USBasp, Flash-память и фьюзы BOOTSZ0 и BOOTSZ1. Открыв сохраненный HEX-файл текстовым редактором, можно увидеть в младших адресах код пользовательской программы, потом незанятую память (FF) и в самых верхних адресах памяти (см строку 225) код загрузчика с адреса 1C00 и до признака конца 01FF. Таким образом можно узнать длину загрузчика в байтах, а потом перевести в длину в словах.

 

2)Как узнать размер ЗАГРУЗЧИКА, который мы хотим разместить в МК?
Открываем в текстовом редакторе HEX-файл, в котором хранится интересующий нас загрузчик. Видим приблизительно такую куртинку

Здесь пояснения как понимать полученные цифры

3)Что будет, если залить загрузчик и неправильно выставить фьюзы BOOTSZ0 и BOOTSZ1?
Надо иметь ввиду, что не любой загрузчик способен перезаписать сам себя. Почему так? Этот вопрос выходит за рамки данной статьи. Более того, вопрос поставлен не «как перезаписать загрузчик в МК средствами платформы Arduino IDE?», а о первичной записи в новый МК загрузчика и установке конкретных фьюзов BOOTSZ0 и BOOTSZ1, предполагая, что остальные фьюзы установлены гарантированно правильно.
Итак, первый раз загрузчик всегда прошивается аппаратным программатором (ISP), поэтому выставим ли сначала фьюзы BOOTSZ0 и BOOTSZ1, а потом зальем ЗАГРУЗЧИК или наоборот, значения не имеет, так как ISP-программатор будет загружать данные по адресам, указанным в HEX-файле. Но вот потом, после Reset, ATmega8 начнет выполнение программы с адреса 000, если фьюз BOOTRST=1, независимо от BOOTSZ0 и BOOTSZ1


Из таблицы видно, что если Загрузчик разместим не с нужного адреса или неправильно установим фьюзы, то Загрузчик не запустится должным образом. Под должным образом я подразумеваю запуск нештатным способом за счет других ошибок, которые «исправляют» начальные ошибки. Например, залили в ATmega8 ЗАГРУЗЧИК длиной 510 слов с адреса E02, т.е. как фьюзы BOOTSZ1 и BOOTSZ0 не выставляй, а при сбросе ЗАГРУЗЧИК не запустится (не получит управление МК). Или прошили ЗАГРУЗЧИК размером в 1000 слов с адреса C00, но фьюзы BOOTSZ1 и BOOTSZ0 выставили в 0 и 1. Тогда при сбросе счетчик команд будет установлен в E00 и какой-то участок кода ЗАГРУЗЧИКа запустится, но такой запуск может привести к непредсказуемым результатам.
4)Что будет, если ЗАГРУЗЧИК от ATmega8 залить в ATmega328?
С одной стороны ATmega8 и ATmega328 выводно совместимы, с другой – у них разный объем памяти, а ЗАГРУЗЧИК всегда размещается в конце памяти (в старших адресах). Поэтому, если мы перекомпилируем исходник загрузчика для ATmega8 под ATmega328, то нельзя говорить о том, что мы пытаемся залить ЗАГРУЗЧИК от ATmega8 в ATmega328. Другое дело, если мы попытаемся HEX-файл с ЗАГРУЗЧИКом от ATmega8 залить в ATmega328. Здесь ответ однозначный – данные зальются вовсе не в конец памяти ATmega328, где должен располагаться ЗАГРУЗЧИК, а в область пользовательской программы и никогда штатным образом ЗАГРУЗЧИК не получит управление (не запустится).

И о результате осознания и конечном итоге.
Теперь я знаю, что ЗАГРУЗЧИК optiboot_flash_atmega8_UART0_57600_8000000L.hex из проекта MiniCore, который я хочу залить в свою ATmega8L зальется с адреса 1E00, т.е. займет сектор памяти 1FFF-1E00=1FF (512байт или 256 слов). Соответственно я должен установить (в ноль) три фьюза следующим образом: BOOTRST=0, BOOTSZ1=0 и BOOTSZ0=1 (см таблицу выше)

Залил с помощью программы AVRDUDESS и USBasp-программатора
Как я говорил выше, ЗАГРУЗЧИК и Программа-программатор – это мама и папа одного разъема. И коль я прошил ЗАГРУЗЧИК (маму), то теперь надо настроить «папу»-ArduinoIDE, которой я должен «рассказать» 1) скорость UART, 2)марку МК, 3)Частоту тактирования процессора МК (требуется для правильной компиляции, а не для загрузки), 4)Место, где лежит HEX-файл прошитого ЗАГРУЗЧИКА. Зачем? Не знаю.
Отредактируем файл boards.txt. В разных версиях ArduinoIDE он имеет разный формат!!!
1)Название платы для меню в ArduinoIDE задаётся в строке с «.name=», например: 328.name=ATmega328 или atmegang.name=Arduino NG or older

2)За выбор названия МК для меню отвечает строка вида «.menu.cpu.atmega8=», например: atmegang.menu.cpu.atmega8=ATmega8 или 8.build.mcu=atmega8
К сожалению, все параметры для всех версий ArduinoIDE описать невозможно. Поэтому я показал соответствующие разделы файла boards.txt двух версий. Думаю по образцу и подобию Вы сможете доработать свою версию ArduinoIDE под свои ЗАГРУЗЧИКИ.

Проверим теорию на практике, для чего:
1)Зальем посредством USBasp в ATmega8 (на беспаечной плате) с кварцем 16МГц штатный загрузчик из состава ArduinoIDE «ATmegaBOOT-prod-firmware-2009-11-07.hex» (размер файла 2,8кБ), загрузка с адреса 1C00. Разъемы от плат-программаторов USBasp и USB-UART от беспаечной платы отключать не буду, что бы не перепутать при подключении. Проще отсоединить/присоединить к программаторам, которые надо обязательно отсоединять. Устанавливаю фьюзы L=FF, H=C0. Отключаю USBasp, смотрю на светодиод, подаю питание. Несколько раз быстро мигнул и более не светится. Значит загрузчик работает. Теперь зальем скетч BLINK штатным способом. Подключаюсь USB-UART и светодиод начинает вести себя совсем по другому- раз в 8 сек светится. Запускаю ArduinoIDE 1.6.6.0, устанавливаю Arduino NG…, ATmega8, порт, программатор AVRISP mkII. AVRDUDE 6.0.1 выдает кучу всякой информации (у меня так настроено), скорость 19200. Скетч прошивается и сразу начинает выполняться. Т.е. провода, фьюзы, настройки выполнены правильно.
2)По такой же методике выполним заливку загрузчика optiboot_flash_atmega8_UART0_115200_16000000L.hex, переименовав в «01.hex» и положив в каталог optiboot (размер файла 1,34кБ), загрузка с адреса 1E00. Поэтому фьюзы L=FF, H=C2. После заливки загрузчика светодиод начинает мигать несколько раз в секунду. Без программаторов (только питание) не светится, т.е. загрузчик не выдает своего присутствия. Добавляю секцию в файл boards.txt
##############################################################
#поместите HEX-файл в каталог optiboot

a8_16MHz_E.name=atmega8 (16 MHz_ExtOsc_115k)
a8_16MHz_E.upload.tool=avrdude
a8_16MHz_E.upload.protocol=arduino
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_size=7680
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_data_size=512
a8_16MHz_E.upload.speed=115200
a8_16MHz_E.bootloader.unlock_bits=0x3F
a8_16MHz_E.bootloader.lock_bits=0x0F
a8_16MHz_E.menu.cpu.atmega8.bootloader.low_fuses=0xff
a8_16MHz_E.menu.cpu.atmega8.bootloader.high_fuses=0xc2
a8_16MHz_E.bootloader.tool=avrdude
a8_16MHz_E.bootloader.path=optiboot
a8_16MHz_E.bootloader.file=01.hex
a8_16MHz_E.build.mcu=atmega8
a8_16MHz_E.build.f_cpu=16000000L
a8_16MHz_E.build.core=arduino
a8_16MHz_E.build.variant=standard
a8_16MHz_E.build.board=AVR_NG

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

3)Когда попытался повторить вышеописанное для загрузчика optiboot_flash_atmega8_UART0_115200_8000000L.hex потерпел неудачу. Штатным способом скетч не заливался. После долгих танцев с бубном, на основании которых и появился данный трактат, пришел к выводу, что косяк разработчика, так как те же действия для optiboot_flash_atmega8_UART0_38400_8000000L.hex привели к загрузке скетча штатным способом. Кроме того, посмотрев файл boards.txt, нашел в нем ошибки, например:
###################
#### ATmega8/A ####
###################

8.name=ATmega8
8.upload.tool=avrdude
8.upload.protocol=arduino
8.upload.maximum_size=7680
8.upload.maximum_data_size=1024!!!!!!!!!!!!!!!! Ошибка
8.menu.clock.16MHz_external.bootloader.high_fuses=0xc4!!!!!!!!!!!!ошибка
И нет для 8МГц скорости 115200, а нерабочий HEX-файл есть. Вот и верь разработчикам.

Извините, что не могу привести отличия форматов файла boards.txt в разных версиях ArduinoIDE, так как этим вопросом не занимался. Попробовал сделать под имеющуюся версию по образцу и подобию – получилось. Глубже не «копал».

Спасибо за внимание. Буду рад, если кому-то мои исследования оказались полезными.

P.S. В последних версиях в конфигурацию (boards.txt) начали прописывать vid и pid. Видимо жаба душит итальянцев. Берегите старые версии ArduinoIDE. А то будет как с хромом – негде скачать старую версию.

P.S.2 При прошивке скетча в МК в сообщениях об ошибках ArduinoIDE, а правильнее сказать AVRDUDE, может упоминаться протокол STK500. В штатном режиме работы мы выбираем программатор AVRISP mkII. А в меню еще есть AVR ISP, Arduino ISP, Arduino as ISP. В русскоговорящем интернете я не встречал объяснения «на пальцах» зачем такое обилие типов программаторов в ArduinoIDE и главное, чем они отличаются и когда какой использовать. Поэтому чувствую себя как лох в хорошем ресторане, перед которым положили 5 ложек и 5 вилок…. И все смотрят только на меня. Кое-что я нашел на сайте microsin, но у автора есть проблема с обозначением объекта. Это как безобъектный праздник «день независимости». Независимости кого, от чего? Каждый волен понимать как хочет. И многие этим пользуются. Но в технике нужна однозначность. Попробую объяснить «на пальцах» как понял я. Если не прав, то прошу поправить.
Итак, AVRISP mkII это плата-программатор от AVR для своих микроконтроллеров серий ATtinyXX, ATmegaXX и других с последовательным (не UART ) интерфейсом ISP (4 сигнальных провода MOSI, MISO, SCK, GND) (режим последовательного программирования на основе интерфейса SPI). Интересно, зачем нужны эти два интерфейса ISP и SPI в одном программаторе? Так как обмен данными между AVRISP mkII и компьютером PC происходит через интерфейс USB, а плата-программатор AVRISP mkII построена на основе AVR-USB162, AVR-USB162MU, AVR-USB32U4 и других, то требуется прошивка для используемого МК. Firmware для программатора AVRISP mkII, распространяется свободно. Понятно, что количество типов МК растет и хотелось бы, что бы плата-программатор AVRISP mkII умел с ними работать. Соответственно надо дорабатывать прошивку AVRISP mkII. Но AVRISP mkII должен общаться не только с программируемым (целевым) МК, но и компьютером. Так вот этот набор «слов для общения» называют протоколом. И эти протоколы тоже развиваются (STK500, STK600. AVRISP mkII во многом совпадает с протоколом STK600). До сих пор вроде понятно, если вспомнить, что на плате Arduino UNO использовался преобразователь-программатор на основе ATmega8U2. Но всякое понимание улетучивается, когда вспоминаем, что платы Arduino продаются с прошитым в основной МК загрузчиком. И нет никакого ISP (MOSI, MISO, SCK, GND). Всё общение происходит по интерфейсу UART, и даже нет необходимости эмулировать сигналы ISP. Тогда при чем AVRISP mkII?
А вот если мы обратим свой взор на стартеркит STK500 (что это такое?), то увидим, что обмен между STK500 и PC происходит через интерфейс RS232 (PC COM-порт)(тот же UART, только уровни сигналов +/- 12в, а не 0-5в). При этом STK500 использует следующие настройки порта: 115.2kbps, 8 data bits, 1 stop bit, no parity. Интерфейс на выходе программатора STK500 – ISP и PP. STK500 и AVRISP поддерживают тактовые частоты ISP от 4 кГц до 1.8 МГц.
Про UART и загрузчик – ни слова. Так почему AVRISP mkII?

Файлы:
ATmega8 Addressing the Flash
распределение памяти в атмега8
ATmega8 фьюзы Заводские и как должно стать
ATmega8 зависимость частоты от напряжения питания
AVRDUDESS фьюзы
Последовательное программирование
преобразователь usb-uart
Штатный загрузчик от Ардуино
03.hex
01.hex
04.hex
FLASH память-RWW-NRWW
USBasp-atmega8A-pin
Эта статья в ворд-формате
Работа с представленными загрузчиками
проверенная Blink РАБОЧАЯ секция
проверенная Blink РАБОЧАЯ секция3
проверенная Blink РАБОЧАЯ секция1
сообщения при удачной заливке скетча новым загрузчиком на 16МГц
сообщения при удачной заливке скетча штатным загрузчиком

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?


Эти статьи вам тоже могут пригодиться:

Proteus. Как добавить платы Arduino и получить прошивку hex в IDE

Наверное, если вы только начали изучать микроконтроллеры, вам тяжело сделать печатную плату и запрограммировать её usbasp, к примеру. Для этого есть много отладочных плат или ещё проще – Arduino. Но чтобы попробовать, есть совсем простые пути, и они такие же наглядные.

Попробуем некий такой hello_world на микроконтроллере – помигаем светодиодом, не имея в наличии реальной платы. Для этого понадобится Proteus – как мне кажется, лучшая программа для эмуляции электронных процессов. В 8 версии Proteus есть уже встроенные библиотеки arduino, но мне они не очень нравятся в плане удобства работы. Найти их просто, при создании нового проекта, нужно перейти на вкладку “from development board”.

Где arduino в proteus

Как я уже и сказал, я использую более удобную и визуально красивую библиотеку, для которой можно создать обычный проект. Это платы от проекта theengineeringprojects. Качаем библиотеки по ссылке

На странице нужно найти жирную кнопку “Download Library for Proteus” и скачать архив. В нём будут два файла –
ArduinoTEP.LIB and ArduinoTEP.IDX. В случае с версией Proteus 8, чтобы установить библиотеки Arduino, необходимо будет пройти в папку программы, а конкретно Proteus 8 Professional\LIBRARY и туда положить эти два файла. Путь самой программы конечно у вас будет отличаться от моего

Как установить библиотеки в proteus

Теперь запускаем программу, создаём новый проект и открываем библиотеку компонентов. Там в поиске, вводим название библиотеки – arduinotep и выбираем понравившийся чип.

Nano в proteus

Теперь вернёмся к Arduibo IDE. Откроем самый простой пример мигания светодиода, и сделаем некоторые настройки, чтобы понять, куда программа сохраняет hex файл. Пройдём в настройки

Nano в proteus

И выберем пункт “Компиляция” в подробно выводе. Кстати ещё тут можно включить другие полезные плюшки – например вывод номера строк или сворачивание отдельных кусков кода.

Nano в proteus

Я решил, что буду в Proteus использовать NANO, поэтому выбираю её в компиляторе, а в примере мигания диода заменяю вывод диода со встроенного на ножку 12. Жму компиляция, и теперь в окне информации можно увидеть, куда сохранился hex файл.

Путь и место hex кода arduino

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

Путь и место hex кода arduino

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

Путь и место hex кода arduino

Как мы увидели выше, путь hex файла находится во временных пользовательских папках. Жмём на кнопку “Program File” – и ищем наш hex. Выбираем, который без bootloader’а.

Путь и место hex кода arduino

Ну теперь жмём кнопку play снизу, слева – и видим, что всё работает.

Путь и место hex кода arduino

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

Путь и место hex кода arduino

Можно нажать на контроллер и увидеть меню настроек. Точно также в поле Program File выбирается прошивка, работает всё аналогично.

Путь и место hex кода arduino

Также здесь будет один небольшой нюанс – нужно выставить частоту 16Мгц, потому-что по-умолчанию выставлено 8Мгц от внутренней RC цепочки.

Путь и место hex кода arduino

Естественно, можно поставить и голый МК AtMega328, и всё тоже заработает. Только нужно найти какому пину будет соответствовать на голом МК, тот, что вы выбрали в среде Arduino. Для этого смотрим распиновку Arduino Nano. Например 12, который выбрали мы, будет соответствовать 16 пину голого МК (PB4).

Путь и место hex кода arduino

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

Пробуйте, тестируйте, пока ваши отладочные платы едут с Китая.

104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader). — GetChip.net

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

Нас, прежде всего, интересуют три платы Arduino:
Arduino Uno – как самый распространенный вариант
Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.

Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).

Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf (8640 Загрузок)

Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).

Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!

Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.

Начнем, конечно, с моей программы загрузчика
GC-Uploader

gcUploader.zip (12456 Загрузок)

Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.

 

Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)

XLoader.zip (21592 Загрузки)

Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload

Это все! Ничего сложного. Прошивка через несколько секунд будет записана в МК и автоматически запустится. Один минус – программа никак не сообщает о том, что прошивка уже записана, но это можно увидеть по прекращению мерцания светодиодов RXD и TXD на Ардуине.

XLoader использует для записи прошивки AVR Dude и в качестве протокола программирования используется STK500. Но, похоже, в настройках AVR Dude, произведена коррекция, так как использование стандартного AVR Dude с такими же настройками не дает результатов.

Автоматизация XLoader.

При разработке ПО для микроконтроллера производится очень много прошивок и всегда нужно стремиться автоматизировать этот процесс после сборки проекта — это экономит время и нервы. В данном случае автоматизация усложнена, так как программа не показывает командную строку для AVR Dude (разве что подбирать опытным путем), но некоторое упрощение процесса возможно. Делается это следующим способом – после первой прошивки не закрываем окно программы (COM порт после прошивки программа отпускает) и после следующей сборки проекта просто жмем кнопку «Upload». Конечно, сборка должна осуществляться в один и тот же Hex-файл.

 

Еще одна программка
ARP Uploader (Arduino Hex Uploader and Programmer)

ArduinoUploader.zip (19060 Загрузок)

Как и предыдущая, программка имеет простой интерфейс.
Процесс прошивки тот же:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт
— жмем Upload

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

При попытке прошить Arduino Nano программа отказывалась видеть МК. Причиной стала неправильная установка скорости COM порта. По умолчанию скорость стоит 19200, а нужно 57600. Скорость порта в программе не задается явно, она прописывается в строчке «AVR Dude Params» — поменяйте в ней значение 19200 на 57600.

Автоматизация ARP Uploader.
ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.

 

Дополнительные материалы.
Драйвера Arduino.

Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»

Arduino_drivers.zip (10576 Загрузок)

Стали появляться недорогие китайские Ардуины с драйвером Ch440G
Driver-Ch440G.zip (8710 Загрузок)

 

Загрузчики Arduino

Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.

ATmegaBOOT_168_atmega328.zip (11240 Загрузок)
Для правильной работы нужно установить фьюзы следующим образом Low: FF   High: DA   Ext: 05

ATmegaBOOT_168_diecimila.zip (5547 Загрузок)
Фьюзы Low: FF   High: DD   Ext: 00

 

Схемы Arduino

Cхемы вышеописанных Ардуин.
Arduino_Uno_Rev3-schematic.pdf (10139 Загрузок)
ArduinoNano30Schematic.pdf (9125 Загрузок)
Arduino-Pro-Mini-schematic.pdf (8096 Загрузок)

 

Фьюзы установленные по умолчанию в Arduino (только с ATmega328)
Arduino Uno
Low Fuse 0xFF
High Fuse 0xDE
Extended Fuse 0x05

Arduino Duemilanove or Nano w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino BT w/ ATmega328
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0x05

LilyPad Arduino w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
Low Fuse 0xFF
High Fuse 0xDA
Extended Fuse 0x05

(Visited 156 048 times, 26 visits today)

Прошивка Ардуино ATmega328 через Arduino IDE и программатор

Загрузка скетча или прошивка контроллера Ардуино – основная операция, с которой рано или поздно сталкивается любой ардуинщик. Именно возможность быстро и без лишних проблем загрузить в память контроллера управляющую программу и стала одной из основных причин успеха платформы Arduino. В этой статье мы узнаем, как прошиваются Arduino Uno, Nano, Mega и другие платы на основе Atmega с использованием Arduino IDE, программатора или другой платы Ардуино.

Загрузка скетча в плату Ардуино

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

Что происходит, когда мы жмем кнопку «Загрузить»

Плата Ардуино – это микроконтроллер AVR (Atmega8/168/328 или Atmega1280/2560), который прошивается загрузчиком. В микроконтроллер записывается программа, называемая прошивкой, которая позволяет получать сигналы с датчиков, обрабатывать нажатия кнопок, общаться с различными устройствами через интерфейсы, управлять исполнительными процессами.

Обычно прошивка записывается в кристалл микроконтроллера при помощи специальных устройств, называемых программаторами. Для разных микроконтроллеров существуют различные программаторы – от специализированных до универсальных. Важным отличием Ардуино от других контроллеров является возможность залить прошивку через обычный USB кабель. Это достигается при помощи специальной программы – загрузчика (Bootloader). Для прошивки не требуются лишние провода, не нужно подключать дополнительные устройства или нажимать что-то на плате. Также при работе через загрузчик нельзя добраться до опасных настроек, которые выведут из строя Ардуино.

При подключении платы Ардуино к источнику питания, внутри него начинается активная деятельность микропрограмм. При запуске микроконтроллера управление получает загрузчик. Первые 2 секунды он проверяет, поступил ли новый код от пользователя.  Кроме того загрузчик подает импульсы на пин, к которому подключен светодиод, и он начинает мигать. Это означает, что загрузчик установлен и работает исправно. Когда подается скетч, загрузчик записывает его во флеш-память микроконтроллера. Затем эта программа подается на выполнение.  Если данные не поступили, загрузчик запускает предыдущую программу. Во время выполнения программы внутри Ардуино выполняется ряд операций по инициализации и настройке среды окружения, и только после этого начинается выполнение кода.

Вызов setup и loop при загрузке

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

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

Функция void loop – в нее помещаются команды, которые должны выполняться, пока включена плата. Микроконтроллер начнет выполнять программы, начиная с первой, и когда дойдет до конца, сразу вернется в начало, чтобы повторить эту же последовательность бесконечное число раз.

Загрузка скетча в Arduino IDE

В Ардуино IDE компиляция скетча начинается при нажатии кнопки Verify, после этого скетч может быть загружен в память Ардуино через USB с помощью кнопки Upload. Перед загрузкой кода программы нужно установить все параметры в меню Tools. В этом меню выбираются порт, к которому подключена плата, и платформу. В окне Arduino IDE внизу будет отображен ход компиляции скетча. При успешной выгрузке скетча будет получено сообщение «Done uploading».  Запуск скетча начинается сразу после окончания загрузки. Для расширения возможностей можно подключать дополнительные внешние библиотеки, разработанные командой Ардуино или сторонними авторами.

Обзор возможных вариантов загрузки скетча

Кратко весь алгоритм можно записать следующим образом: Написание кода >> компиляция >> загрузка в микроконтроллер. При загрузке скетча используется Bootloader (Загрузчик). Он представляет собой небольшую программу, которая загружается в микроконтроллер на Ардуино. С помощью этой программы можно загружать скетч, не используя дополнительные аппаратные средства. При работе загрузчика на плате будет мигать светодиод.

1. Загрузка в Arduino IDE. Самый простой и удобный вариант загрузки кода. Все, что        нужно сделать – это написать или найти нужный скетч и загрузить его.

  1. Ускоренная загрузка скетча в Arduino IDE. С помощью этого метода можно увеличить скорость загрузки в микроконтроллер в два раза. Для этого нужно лишь зайти в Настройки и снять галочку с пункта Проверка кода. Пропуская шаг проверки, будет уменьшено количество байтов, которые передаются во время загрузки. При этом все равно некоторые из видов проверок будут осуществлены, но они не занимают долгого времени. Отключать проверку кода не рекомендуется, если Ардуино помещается в какой-либо ответственный проект (например, в спутник). Также можно провести проверку, если подключение производится через очень длинный USB кабель (порядка 10 метров).

Уменьшение времени загрузки при помощи отключения проверки работает с любой платой Ардуино, которая использует USB соединение. Все эти микроконтроллеры используют загрузчик avrdude. Платы, которые используют загрузчик Catarina, не нуждаются в отключении проверки кода, так как этот загрузчик работает быстрее.

  1. Загрузка скетча в Ардуино через Bluetooth. Этот способ используется, когда нужно обойтись без физического соединения Ардуино и компьютера – например, в силовых цепях или радиочастотных цепях. Для реализации загрузки потребуется Bluetooth-модуль, который оснащен платой-адаптером для Ардуино. Этот модуль нужно подключить к компьютеру через переходник USB-UART-TTL. Работа с модулем осуществляется с помощью AT-команд.
  2. Загрузка при помощи Андроид-устройства. Для осуществления такого типа загрузки кода понадобятся провода USB-A – USB-B и USB-Host (OTG-кабель), Ардуино и устройство на базе Андроид с поддержкой режима host. На Андроид-устройство нужно установить программу ArduinoDroid или ArduinoCommander из Google Play. Все устройства нужно соединить при помощи кабелей, после этого можно включать Ардуино и загружать на него код. Нужно запустить установленную программу. При включении начнется обновление IDE, на что понадобится некоторое время.

Сначала работа будет рассмотрена на примере программы ArduinoCommander. После ее запуска нужно нажать USB-Device. Затем нужно наддать Autodetect, чтобы Андроид-устройство выполнило поиск Ардуино и отобразило его на экране. Как только Ардуино появится на экране, нужно на него нажать. Чтобы перейти в меню, нужно щелкнуть в нижнем правом углу. В этом меню можно загрузить скетч с SD-карты.

ArduinoDroid представляет собой среду разработки, компилятор и загрузчик одновременно. Начать компиляцию скетча нужно нажав на кнопку Lightning-Button. После завершения компиляции нужно нажать на кнопку загрузки. Загрузка занимает несколько секунд. По окончании загрузки ардуино запустит на выполнение новый код.

  1. Программирование при помощи Raspberry Pi. Можно загружать скетчи двумя способами – при помощи Arduino IDE и при помощи пакета arduino-mk. Пакет позволяет собирать и загружать скетчи Ардуино из командной строки.

Структура памяти Ардуино, где располагается скетч и данные

На микроконтроллере Ардуино имеется 3 вида памяти – флеш-память, которая используется для хранения скетчей, ОЗУ для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флеш-память и EEPROM являются энергонезависимыми, то есть информация сохраняется при выключении питания. ОЗУ используется только для хранения данных, которые имеют отношение к исполняемой программе.

Микроконтроллер ATmega168, который используется на части плат Ардуино, имеет 16 Кб флеш-памяти, 1024 байта для ОЗУ и 512 байт EEPROM. Важно обратить внимание на малый объем ОЗУ. Большие программы могут полностью ее израсходовать, что приведет к сбою в программе. По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее. Уменьшить объем кода можно несколькими способами:

  • Можно отправить часть информации на компьютер.
  • Для таблиц и других крупных массивов использовать минимальный тип данных для хранения.
  • Данные, которые остаются неизменными, можно объявить константами при помощи слова const перед объявлением переменной.
  • Меньше использовать рекурсию. При ее вызове в памяти, называемой стеком, выделяется фрагмент, в котором хранятся различные данные. Если часто вызывать рекурсию, стеки будут занимать большой объем памяти и могут израсходовать ее.
  • Неизменяемые строки можно сохранять во флеш-памяти во время работы программы. Для этого используется функция PROGMEM.

На объем памяти не влияют размер имени переменных и комментарии. Компилятор устроен таким образом, что не включает эти данные в скомпилированный скетч.

Для измерения объема занимаемой памяти ОЗУ используется скетч из библиотеки MemoryFree. В ней имеется специальная функция free­Memory, которая возвращает объем доступной памяти. Также эта библиотека широко используется для диагностики проблем, которые связаны с нехваткой памяти.

Оптимизация флеш-памяти. Как только будет окончена процедура компиляции, в окне появится информация о занимаемой памяти кодом. Если скетч занимает большую часть памяти, нужно произвести оптимизацию использования флеш-памяти:

  • Использование констант. Аналогично как и для ОЗУ задавать неизменяющиеся значения константами.
  • Удалить ненужные Serial.println. Эта команда используется, когда нужно увидеть значения переменных в разных местах программы, нередко эта информация просто не нужна. При этом команды занимают место в памяти, поэтому, убедившись в корректной работе программы, некоторые строки можно удалить.
  • Отказ от загрузчика – можно программировать микроконтроллер через контакты ICSP на плате с использованием аппаратных программаторов.

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

EEPROM память используется для хранения всех данных, которые потребуются после отключения питания. Для записи информации в EEPROM нужно использовать специальную библиотеку EEPROM.h, которая входит в число стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, порядка 3 мс. Также гарантируется надежность хранения данных для 100000 циклов записи, потому лучше не выполнять запись в цикле.

Варианты прошивки Ардуино

Прошивка с помощью Arduino IDE

Прошить плату при помощи среды разработки Arduino IDE можно в несколько шагов. В первую очередь нужно скачать и установить саму программу Arduino IDE. Также дополнительно нужно скачать и установить драйвер Ch441. Плату Ардуино нужно подключить к компьютеру и подождать несколько минут, пока Windows ее опознает и запомнит.

После этого нужно загрузить программу Arduino IDE и выбрать нужную плату: Инструменты – Плата. Также нужно выбрать порт, к которому она подключена: Инструменты – Порт. Готовая прошивка открывается двойным кликом, чтобы ее загрузить на плату, нужно нажать кнопку «Загрузить» вверху панели инструментов.

В некоторых ситуациях может возникнуть ошибка из-за наличия кириллицы (русских букв) в пути к папке с кодами. Для этого файл со скетчами лучше создать и сохранить в корне диска с английским наименованием.

Прошивка с помощью программатора

Одни из самых простых способов прошивки платы – при помощи программатора. Заливка будет производиться в несколько этапов.

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

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

Загрузчик Ардуино и прошивка через Arduino IDE и программаторЗагрузчик Ардуино и прошивка через Arduino IDE и программатор

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

Загрузчик Ардуино и прошивка через Arduino IDE и программаторЗагрузчик Ардуино и прошивка через Arduino IDE и программатор

Последний шаг – нажать на «записать загрузчик» в меню Сервис.

ПрошивкаПрошивка

После этого начнется загрузка. Завершение произойдет примерно через 10 секунд.

Прошивка Arduino через Arduino

Для того чтобы прошить одну плату с помощью другой, нужно взять 2 Ардуино, провода и USB. В первую очередь нужно настроить плату, которая будет выступать в качестве программатора. Ее нужно подключить к компьютеру, открыть  среду разработки Arduino IDE и найти в примерах специальный скетч ArduinoISP. Нужно выбрать этот пример и прошить плату.

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

Можно начать прошивать устройство. Как только прошивка будет открыта или написана, нужно перейти в меню Скетч >> загрузить через программатор. Для заливания прошивки не подходит стандартная кнопка загрузки, так как в этом случае прошивка будет загружена на первую плату, на которой уже имеется прошивка.

Заключение

В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 Ch440, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

 

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

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

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

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

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

gcUploader.zip (12456 Загрузок)

 

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 21 748 times, 8 visits today)

Разбираемся с Arduino IDE | AlexGyver Technologies

Работа с Arduino IDE


Рассмотрим основную программу, с которой будем работать – Arduino IDE. IDE расшифровывается как интегрированная среда разработки, и в нашем случае представляет собой блокнот, в котором мы пишем код, препроцессор и компилятор, которые проверяют и компилируют код, и инструменты для загрузки, которые загружают код выбранным способом. IDE написана на java, поэтому не удивляйтесь её долгому запуску, большому объему занимаемой оперативки и медленной работе. Несмотря на огромный опыт работы с ардуино я до сих пор продолжаю писать код в Arduino IDE, потому что я к ней привык. Помимо перечисленных проблем стандартная IDE выделяется на фоне “взрослых” сред разработки отсутствием дерева/файловой структуры проекта (что не нужно для простых проектов), отсутствием рефакторинга, отсутствием автоматического дополнения кода (хотя его обещают вот-вот добавить и уже есть beta) и очень медленной компиляцией кода. Этих недостатков лишены аналоги Arduino IDE, о них поговорим в конце урока. Помимо отсутствия озвученных недостатков там есть некоторые полезные фишки, например все define-ы файла с кодом отображаются в отдельном блоке и с ними очень удобно работать.

Интерфейс


Сначала рассмотрим общий вид программы, т.е. как она выглядит после запуска. В самом центре – блокнот, то самое место, где пишется код. По умолчанию уже написаны два стандартных блока, setup и loop. К ним вернёмся в разделе уроков программирования. Всё остальное можно увидеть на скриншоте ниже.

  • Проверить – компиляция (сборка, проверка на ошибки…) кода без его загрузки в плату. То есть код можно написать и проверить на ошибки даже не подключая плату к компьютеру
  • Загрузить – компиляция и загрузка прошивки в плату
  • Создать/открыть/сохранить – тут всё понятно
  • Монитор порта – кнопка открывает монитор последовательного пора для общения с платой
  • Меню вкладок – работа с вкладками, о них поговорим ниже
  • Текущее состояние – тут выводится краткая информация о последнем действии: загрузка завершена, ошибка загрузки, автоформатирование завершено и т.д.
  • Лог работы – тут выводится лог компиляции и вообще все системные сообщения, отчёты об ошибках и размере скомпилированного кода
  • Конфигурация оборудования – выводится название выбранной платы, версии микроконтроллера и номер выбранного COM порта
Arduino IDE

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

Вкладка “Файл”


  • Новый
  • Открыть
  • Открыть недавние
  • Папка со скетчами – список скетчей, которые сохранены туда, куда программа предлагает их сохранять по умолчанию (Документы/Arduino)
  • Примеры – список установленных библиотек с подсписком примеров к каждой. Весьма полезная штука
  • Закрыть
  • Сохранить
  • Сохранить как…
  • Настройки страницы (для печати)
  • Печать
  • Настройки
  • Выход

Далее сразу рассмотрим окно настроек:

Окно настроек


Настройки Arduino IDE

Куча интересных настроек на свой вкус. Из них отмечу

  • Размещение папки скетчей – куда по умолчанию сохраняются скетчи
  • Показать подробный вывод – показывает подробный лог при компиляции и загрузке, нужно при поиске багов и непонятных глюков/ошибок
  • Использовать внешний редактор – запрещает редактирование кода из Arduino IDE, чтобы редактировать его в других редакторах, например Notepad++. Редактируем там, а загружаем через IDE. Зачем это? Писать код в том же Notepad++ гораздо удобнее и приятнее, чем в Arduino IDE. К сожалению.
  • Дополнительные ссылки для менеджера плат – сюда вставляются ссылки на пакеты для работы с другими платами, например такими основанными на ESP8266 или ATtiny85.

Вкладка “Правка”


Во вкладке Правка ничего такого особенного нет, всё как в других программах

Вкладка “Скетч”


Вкладка “Скетч”
  • Проверить/компилировать – то же, что кнопка галочка
  • Загрузка – то же, что кнопка загрузка
  • Загрузить через программатор – загрузить скетч напрямую в МК, минуя загрузчик
  • Экспорт бинарного файла – сохраняет скомпилированный файл, который и загружается в МК. Бинарный файл хорош тем, что содержащийся в нём код практически невозможно не то что отредактировать, но даже прочитать как вменяемый код. Именно в таком виде обычно поставляются прошивки для цифровой техники, чтобы никто не видел исходник =)
  • Показать папку скетча
  • Подключить библиотеку – подключает в код библиотеку, с директивой include, всё как нужно
    • Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка
    • Добавить .zip библиотеку – не рекомендую так делать, потом не найдёте, куда она установилась
  • Добавить файл… – подключает в код внешний файл

Вкладка “Инструменты”


Вкладка “Инструменты”
  • АвтоФорматирование – выравнивает код по табуляции. Крайне важная фишка, используйте её и комбинацию Ctrl+T как можно чаще
  • Архивировать скетч – сохраняет скетч как .zip архив
  • Исправить кодировку и перезагрузить – полезная штука, когда скачал чей-то код из интернета, а там поехала кодировка
  • Управлять библиотеками… – открывает менеджер библиотек, из которого можно установить библиотеки из официального списка 
  • Монитор порта
  • Плоттер по последовательному соединению – встроенный построитель графиков по идущим в порт данным
  • Плата – выбор платы, куда хотим загрузить прошивку
  • Процессор – выбор процессора, который стоит на плате. Обычно он один на выбор, но иногда есть варианты
  • Порт – COM порт, к которому подключена плата. Это всегда порт, отличный от COM1 (системный порт)
  • Программатор – выбор программатора для загрузки кода через программатор
  • Записать загрузчик – прошивает загрузчик, соответствующий выбранной плате и процессору в микроконтроллер при помощи программатора (который ISP)

Меню вкладок


Меню вкладок

Система вкладок в Arduino IDE работает крайне необычным образом и очень отличается от понятия вкладок в других программах:

  • Вкладки относятся к одному и тому же проекту, к файлам, находящимся с ним в одной папке
  • Вкладки просто разбивают общий код на части, то есть в одной вкладке фигурная скобка { может открыться, а в следующей – закрыться }. При компиляции все вкладки просто объединяются в один текст по порядку слева направо (с левой вкладки до правой). Также это означает, что вкладки должны содержать код, относящийся только к этому проекту, и сделать в одной вкладке void loop() и в другой – нельзя, так как loop() может быть только один
  • Вкладки автоматически располагаются в алфавитном порядке, поэтому создаваемая вкладка может оказаться между другими уже существующими. Это означает, что разбивать блоки кода по разным вкладкам (как во втором пункте, { на одной вкладке, } на другой вкладке) – крайне не рекомендуется.
  • Также не забываем, что переменная должна быть объявлена до своего вызова, то есть вкладка с объявлением переменной должна быть левее вкладки, где переменная вызывается. Создавая новую вкладку нужно сразу думать, где она появится с таким именем и не будет ли из за этого проблем. Также название вкладок можно начинать с цифр и таким образом точно контролировать их порядок. Во избежание проблем с переменными, все глобальные переменные лучше объявлять в самой первой вкладке.
  • Вкладки сохраняются в папке с проектом и имеют расширение .ino, при запуске любой вкладки откроется весь проект со всеми вкладками.
  • Помимо “родных” .ino файлов Arduino IDE автоматически подцепляет файлы с расширениями .h (заголовочный файл), .cpp (файл реализации) и .pde (старый формат файлов Arduino IDE). Эти файлы точно так же появляются в виде вкладок, но например заголовочный файл .h не участвует в компиляци до тех пор, пока не будет вручную подключен к проекту при помощи команды include. То есть он висит как вкладка, его можно редактировать, но без подключения он так и останется просто отдельным текстом. В таких файлах обычно содержатся классы или просто отдельные массивы данных.

Аналоги Arduino IDE


Всем нетерпимо относящимся к кривой официальной IDE могу посоветовать следующие аналоги, работа в которых чем-то лучше, а чем-то хуже официальной IDE:

  • Notepad++ + Arduino IDE – вполне работоспособная связка – прогерский блокнот “на максималках”, в котором ОЧЕНЬ удобно писать код, и Arduino IDE, в которой удобно выбирать железо и загружать прошивку
  • PlatformIO – очень мощная взрослая среда разработки, подробнее можно почитать даже в статье у меня на сайте. Автор – не я. Лично мне платформио не понравилась. Да, есть автодополнение кода и всякие удобные фишки, но конфигурировать проект приходится вручную (в 2019 году не сделать пару кнопок для того же выбора порта – разработчики – АУ!!!), также есть проблемы с библиотеками.
  • Programino IDE – вот эта среда мне довольно таки понравилась, есть автодополнение и другие удобные фичи. Единственный минус – она платная, но на всё платное можно нагуглить кряк =) Подробнее на официальном сайте
  • MariaMole – интересная среда, которая вроде как больше не развивается. Количество “плюшек” примерно равно количеству “багов” и недоделок, по крайней мере так было в 2017 году. Подробнее
  • B4R – среда, позволяющая программировать Арудино на языке Basic. Кому интересно – вот официальный сайт
  • Visual Studio Micro – очень мощный и взрослый инструмент, являющийся плагином к Microsoft Visual Studio. Подробнее читать здесь
  • XOD – очень интересная среда разработки, в которой программа составляется из нод (node) – блоков. Полностью другая концепция программирования, посмотрите обязательно. Официальный сайт
  • Atmel Studio – официальная среда для программирования микроконтроллеров AVR. Никаких детских ардуиновских функций – только работа напрямую с МК, только хардкор! Подробнее можно почитать на сайте амперки

Важные страницы


Как получить шестнадцатеричный файл из Arduino

pcbway pcbway

hex file arduino,arduino hex file, get hex file arduino,download hex file from arduino Здравствуйте, друзья, надеюсь, у вас все в порядке, и вы весело проводите время. В сегодняшнем посте я расскажу, как получить шестнадцатеричный файл из Arduino. Это довольно простой пост, и я уже много раз объяснял его в своих постах, но все же я получаю много сообщений об этом, поэтому я подумал написать для него отдельный пост. Прежде всего, давайте поговорим об этом. Если вы работали с микроконтроллерами PIC или Atmel и т. Д., То вы видели, что вы всегда получаете шестнадцатеричный файл из их компиляторов, а затем вы записываете этот шестнадцатеричный файл в соответствующий микроконтроллер, используя их программатор или записывающее устройство.Но это не относится к Arduino. В платах Arduino вы просто подключаете его к компьютеру, нажимаете кнопку «Загрузить», и код автоматически загружается на платы Arduino. Он не создает никаких шестнадцатеричных файлов. Вам также следует взглянуть на библиотеку Arduino для Proteus, в которую вы можете загрузить этот шестнадцатеричный файл.

Итак, теперь возникает вопрос, зачем нам вообще нужен шестнадцатеричный файл, если мы можем загрузить код без него? Ответ на этот вопрос: во многих случаях требуется шестнадцатеричный файл.Например, вместо использования платы Arduino вы просто хотите использовать микроконтроллер ATmega328 или Attiny, тогда самый простой способ — написать код в Arduino, а затем получить его шестнадцатеричный файл и загрузить его в свой микроконтроллер, что значительно упрощает задачу. Другим примером является моделирование Proteus, когда вы хотите смоделировать свою плату Arduino в программном обеспечении Proteus, вам нужно получить шестнадцатеричный файл, чтобы вы могли загрузить его в свой баорд Arduino. Другой случай — фриланс, когда вы работаете над каким-то проектом в качестве фрилансера, тогда есть много случаев, когда вы не хотите отправлять свой код клиенту, вместо этого вы хотите отправить ему шестнадцатеричный файл, чтобы он мог протестировать и проверить код, в таких случаях он тоже требуется.Итак, давайте начнем с того, как получить шестнадцатеричный файл из Arduino.

Как получить шестнадцатеричный файл от Arduino ???

  • Прежде всего, откройте программное обеспечение Arduino, напишите свой код и протестируйте его.
  • После того, как вы подтвердите, что ваш код готов и вы хотите сгенерировать шестнадцатеричный файл, затем нажмите опцию File в приведенном выше меню, а затем Preferences , как показано на рисунке ниже:
hex file arduino,arduino hex file, get hex file arduino,download hex file from arduino
  • In На приведенном выше рисунке я использовал простой пример мигания и собираюсь сгенерировать его шестнадцатеричный файл.
  • Теперь, когда вы нажмете на «Настройки», появится новое окно.
  • В этом новом окне отметьте опцию compilation , как показано на рисунке ниже:
hex file arduino,arduino hex file, get hex file arduino,download hex file from arduino
  • После установки отметки нажмите кнопку OK, и это диалоговое окно закроется.
Примечание:
  • Отметив эту опцию, вы разрешаете программному обеспечению Arduino отображать подробные выходные данные на панели вывода, присутствующей в конце программного обеспечения Arduino, которая имеет черный фон.
  • Итак, вы также можете отметить опцию загрузки, но вам нужно загрузить код для получения этих команд вывода.
  • Теперь нажмите кнопку компиляции, когда мы отметим параметр компиляции, чтобы он скомпилировал код и предоставил вам все команды, как показано ниже:
hex file arduino,arduino hex file, get hex file arduino,download hex file from arduino
  • Теперь вы можете ясно видеть на приведенном выше рисунке, что есть много команд в черной части, это подробные выходные данные, которые дает нам Arduino.
  • Последняя строка этих подробных выходных данных, которую я также выделил, — это ссылка на ваш шестнадцатеричный файл, который в нашем случае:

C: UserszainAppDataLocalTempbuild7243111610766241365.tmp / Blink.cpp.hex

  • Теперь удалите имя шестнадцатеричного файла из этой ссылки, и оно станет следующим:

C: UserszainAppDataLocalTempbuild7243111610766241365.tmp

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

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

.

Загрузка файлов .hex в ATtiny с использованием Arduino UNO в качестве ISP

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

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

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

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

Step1 : Загрузите и установите Arduino IDE (последняя загрузка Arduino IDE) следуйте инструкциям по установке на веб-сайте Arduino.

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

Step3 : Запустите Arduino IDE

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

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

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

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

Step8 : Щелкните значок (галочка) Проверить эскиз

Step9 : Щелкните значок (стрелка) для компиляции эскиза

Step10 : Закройте Arduino IDE (Файл> Закрыть)

Step11 : Отключите Arduino UNO ISP от порта USB.

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

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

 C: \ arduino-1.0.3 \ оборудование / инструменты / avr / bin / avrdude -CC: \ arduino-1.0.3 \
оборудование / инструменты / 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

пауза 

Осторожно при копировании / вставке команды — это одна строка с пустой строкой между пауза
Обновление : параметры в Курсивом до установленного пути / папок Arduino IDE

C: \ arduino-1.0.3 \ hardware / tools / avr / bin / avrdude -C C: \ arduino-1.0.3 \ hardware / tools / avr / etc / avrdude.conf -v -v -v -v -p attiny85 — c stk500v1 -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: \ ардуино-1.0.3 \ hardware / tools / avr / etc / avrdude.conf
Verify Micro :
attiny85 (см. Документацию -p avrdude )
stk500v1 (см. Документацию -c avrdude19 ) 900 Проверить COM-порт :
COM11
Проверить путь к шестнадцатеричный файл Путь \ HEX имя файла
C: \ arduino-1.0.3 \ hexFiles \ Blink.cpp. шестнадцатеричный

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

Step3 : Запустите Arduino IDE.

Step4 : Проверьте плату (инструменты> Плата)

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

Step6 : Подключите Micro к плате программирования

Step7 : Подключите Arduino UNO / ArduinoISP / Programming Shield к USB-порту

Step8 : Запустите командный файл hexUpload.bat

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

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

На стороне примечания:

Вот .bat-файл, который очищает временные файлы и папки Arduino.

 rem Очистить временные файлы и папки Arduino.
rem Сначала смените каталог на местоположение
rem временных папок ...
rem Создано Джоном Оуэном

cd c: \ users \ xxxxx \ appdata \ local \ temp

для / d %% a in (build *.tmp) do rmdir / s / q %% a
для / d %% a в (console * .tmp) выполните rmdir / s / q %% a
для / d %% a в (без названия * .tmp) выполните rmdir / s / q %% a
 
.

Arduino — Как это сделать

Руководство по Arduino

Эта страница устарела. Вместо этого вы должны увидеть Windows Howto или Mac OS X howto (оба в руководстве Arduino).

Вот шаги, которые необходимо выполнить, чтобы начать работу:

  1. Получить плату Arduino
  2. Загрузить среду Arduino
  3. Установите драйверы USB
  4. Подключить плату
  5. Загрузить программу

1 | Получите плату Arduino

Плата ввода-вывода Arduino представляет собой простую схему с процессором ATmega8 от Atmel.Плата состоит из печатной платы (PCB) и электронных компонентов.

Есть несколько способов получить плату Arduino:

  • Куплю готовую плату . Посмотрите, как можно купить плату или просто печатную плату.
  • Создайте свою собственную плату . Если вы хотите, вы можете создать свою собственную печатную плату, просто загрузив файлы САПР со страницы оборудования. Распакуйте файл .brd и отправьте его производителю печатной платы. Имейте в виду, что изготовление одной печатной платы будет очень дорогим.Лучше собраться вместе с другими людьми и зарабатывать 20 или 30 за раз. Поскольку вы получаете полные файлы САПР, вы можете создать свою собственную версию Arduino. если вы вносите изменения или исправляете ошибки, пришлите нам свои изменения!
    • покупка запчастей . приобретайте запчасти в любом магазине электроники. В частности, последовательная версия была разработана для использования самых основных компонентов, которые можно найти в любой точке мира. Версия USB, с другой стороны, требует некоторых продвинутых навыков пайки из-за микросхемы FTDI, которая является частью smd.Вот список деталей для серийной платы.
    • собрать плату . Мы составили пошаговое руководство по созданию платы Arduino. Новички: раньше не паяли? боитесь разбить тысячи плат, прежде чем правильно припаять одну? не бойтесь 🙂 научитесь овладевать искусством пайки.
    • программа загрузчика . Чтобы среда разработки могла запрограммировать чип, он должен быть запрограммирован с помощью фрагмента кода, называемого загрузчиком .См. Страницу загрузчика о том, как запрограммировать его на свой чип.

2 | Загрузите среду Arduino

Для программирования платы Arduino вам понадобится среда Arduino.

Загрузить Arduino : Со страницы программного обеспечения.

Linux note : Чтобы получить помощь по запуску IDE Arduino в Debian, см. FAQ («Как запустить IDE Arduino под Linux?»).

Mac OS X Примечание: После загрузки IDE запустите macosx_setup.команда . Он исправляет разрешения для нескольких файлов для использования с последовательным портом и запрашивает пароль. После запуска этого сценария вам может потребоваться перезагрузка.

Для получения дополнительной информации см. Руководство по среде Arduino.

3 | Установите драйверы USB

Если вы используете USB Arduino, вам необходимо установить драйверы для микросхемы FTDI на плате. Их можно найти в каталоге драйверов дистрибутива Arduino.

В Windows необходимо распаковать драйверы USB FTDI.zip . Затем, когда вы подключаете плату Arduino, укажите в мастере установки оборудования Windows каталог FTDI USB Drivers .

На Mac смонтируйте образ диска FTDIUSBSerialDriver_v2_1_6.dmg (на машинах PPC) или FTDIUSBSerialDriver_v2_2_6_Intel.dmg (на машинах Intel) и запустите прилагаемый FTDIUSBSerialDriver.pkg .

Последнюю версию драйверов можно найти на сайте FTDI.

4 | Подключаем плату

Если вы используете плату последовательного интерфейса, запитайте плату от внешнего источника питания (от 6 до 25 В постоянного тока, с положительной жилой разъема).Подключите плату к последовательному порту на вашем компьютере.

На платах USB источник питания выбирается перемычкой между USB и вилками питания. Для питания платы от порта USB (подходит для управления маломощными устройствами, такими как светодиоды), установите перемычку на два контакта, ближайших к разъему USB. Для питания платы от внешнего источника питания (необходимого для двигателей и других сильноточных устройств) установите перемычку на два контакта, ближайших к вилке питания. В любом случае подключите плату к USB-порту вашего компьютера.В Windows откроется мастер установки нового оборудования; сообщите ему, что вы хотите указать место для поиска драйверов, и укажите папку, содержащую драйверы USB, которые вы распаковали на предыдущем шаге.

Светодиод питания должен загореться.

5 | Загрузить программу

Откройте светодиод, мигает

.

Установка загрузчика Arduino — learn.sparkfun.com

Добавлено в избранное Любимый 24

Введение

Внимание! Это руководство было написано для микроконтроллеров AVR с загрузчиком Arduino, использующим выводы ICSP. Если вы используете микроконтроллер ARM с выводами SWD, вам понадобится специальный программатор (например, Atmel JTAG ICE 3 или Atmel-ICE) для подключения к порту SWD. Для получения дополнительной информации ознакомьтесь с нашим руководством по программированию на ARM.

У вас есть заблокированная Arduino, которая больше не принимает код? Или, может быть, вы написали собственную прошивку и хотите загрузить ее на свой Arduino? Или, может быть, вы просто хотите узнать больше о внутренней работе Arduino, AVR и микроконтроллеров в целом. Что ж, тебе повезло! Из этого туториала Вы узнаете, что такое загрузчик, зачем его нужно устанавливать / переустанавливать, а также рассмотрите этот процесс.

Рекомендуемая литература

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

Основы печатной платы

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

Что такое Ардуино?

Что это вообще за «Ардуино»? В этом руководстве подробно рассказывается о том, что такое Arduino, а также о проектах и ​​виджетах Arduino.

Установка Arduino IDE

Пошаговое руководство по установке и тестированию программного обеспечения Arduino в Windows, Mac и Linux.

Интегральные схемы

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

Что такое загрузчик?

AVR

Atmel — отличные маленькие ИС, но их немного сложно запрограммировать. Вам понадобится специальный программист и несколько необычных файлов .hex , и это не очень удобно для новичков.Arduino в значительной степени покончил с этими проблемами. Они поместили файл .hex на свои микросхемы AVR, который позволяет вам программировать плату через последовательный порт, то есть все, что вам нужно для программирования Arduino, — это USB-кабель.

Загрузчик — это файл .hex , который запускается при включении платы. Он очень похож на BIOS, который работает на вашем ПК. Он делает две вещи. Во-первых, он осматривается, пытается ли компьютер его запрограммировать. Если это так, он берет программу с компьютера и загружает ее в память микросхемы (в определенное место, чтобы не перезаписать загрузчик).Вот почему, когда вы пытаетесь загрузить код, IDE Arduino сбрасывает чип. Это в основном выключает и снова включает IC, чтобы загрузчик мог снова начать работать. Если компьютер не пытается загрузить код, он сообщает микросхеме выполнить код, который уже хранится в памяти. Как только он обнаруживает и запускает вашу программу, Arduino непрерывно выполняет цикл, пока на плату подается питание.

Зачем устанавливать загрузчик?

Если вы собираете свой собственный Arduino или вам нужно заменить IC, вам необходимо установить загрузчик.У вас также может быть плохой загрузчик (хотя это бывает очень редко), и вам необходимо переустановить загрузчик. Также бывают случаи, когда вы поместили свою плату в странную настройку и переустановили загрузчик и вернули его к заводским настройкам — это самый простой способ исправить это. Мы видели платы, на которых люди отключили последовательный порт, что означает, что нет возможности загрузить код на плату, хотя могут быть другие способы исправить это, переустановка загрузчика, вероятно, является самым быстрым и простым.Как я уже сказал, плохой загрузчик на самом деле встречается очень редко. Если у вас новая плата, которая не принимает код, в 99,9% случаев это не загрузчик. В остальном 1% случаев это руководство поможет вам решить эту проблему.

Выбор программиста

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

Вариант 1. Специальные программисты

Для быстрого и легкого программирования мы рекомендуем заглянуть в AVR Pocket Programmer (только для Windows).

Карманный программатор AVR

В наличии PGM-09825

В этой новой версии используется заголовок SMD 5×2. Это простой в использовании программатор USB AVR. Он дешев, прост в использовании, отлично работает…

50

Или вы можете использовать официальный программатор Atmel-ICE для ARM, SAM и AVR.

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

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

Вариант 2: Использование Arduino в качестве программиста

Другой вариант — взять Arduino Uno (или Duemilanove). Если вы войдете в IDE Arduino, вы увидите пример скетча под названием ‘Arduino как ISP.’ Если вы загрузите этот код в свой Arduino, он будет действовать как программатор AVR. На самом деле это не рекомендуется для производства плат или плат с большим количеством памяти, но, в крайнем случае, это работает довольно хорошо. Также на момент написания этой статьи код работает только на платах ATmega328. Возможно, однажды это сработает на Леонардо или Дуэ, но пока нет.

Подключение оборудования

Внутрисхемное последовательное программирование (ICSP)

Очень редко программируют микросхемы до того, как они будут припаяны к печатной плате.Вместо этого у большинства микроконтроллеров есть так называемый заголовок внутрисистемного программирования (ISP). В частности, некоторые производители микросхем, такие как Atmel и Microchip, имеют специализированный метод ISP для программирования своих микросхем. Это называется внутрисхемным последовательным программированием (ICSP). Большинство плат, совместимых с Arduino и Arduino, будут иметь 2×3-контактный разъем ICSP. У некоторых может быть даже больше одной, в зависимости от того, сколько микросхем находится на печатной плате. Он выламывает три контакта SPI (MISO, MOSI, SCK), питание, землю и сброс.Это контакты, к которым вам необходимо подключить программатор, чтобы перепрограммировать прошивку на вашей плате.

Здесь у нас есть Arduino Uno R3. Он имеет два заголовка ICSP: один для ATmega16U2 и один для ATmega328. Чтобы перепрограммировать загрузчик на этой плате, вы должны использовать только заголовок ICSP для ATmega328.

На некоторых платах меньшего размера этот разъем может не отображаться, но контакты должны быть выломаны в другом месте. Независимо от того, используете ли вы SMD IC или DIP IC, контакты ISP должны быть доступны в той или иной форме.На некоторых платах могут быть контрольные точки только для заголовка ISP. В этом случае вы можете подумать о приобретении адаптера ISP Pogo. Этот комплект позволяет вам временно установить хорошее соединение с контрольными точками, чтобы перепрограммировать вашу ИС.

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

Кабель для программирования AVR

В наличии CAB-09215

Это удобный кабель для программирования AVR, который включает в себя 10-контактный и 6-контактный интерфейс программирования ISP. Кабель…

3

Подключение карманного программатора AVR к Target

Если вы используете программатор, такой как карманный программатор AVR, ваша установка должна выглядеть примерно так, как показано ниже: соединение кабеля для программирования AVR стрелка (◄) подключено к MISO .Если вы внимательно посмотрите на отливку разъема 2×3, вы должны заметить стрелку (◄) , указывающую на контакт 1 относительно положения стандартного заголовка ICSP.

Щелкните, чтобы увеличить изображение.

Внимание! Имеется небольшое различие в ориентации кабеля программирования AVR 2×5 — 2×3 по сравнению с другими кабелями 2×3, прикрепленными к официальным программаторам Atmel. Как показано на изображении ниже с MISO, выделенным белой точкой, кабель программатора карманного AVR имеет MISO, подключенный ближе к внутренней части кабеля.Кабель AVR MKII имеет MISO, подключенный ближе к внешней стороне кабеля.
Щелкните, чтобы увеличить изображение.
Вы также можете заметить, что к одному из RedBoards не подключен кабель USB . Так как карманный программатор AVR может подавать питание 5V на целевой AVR с переключателем, установленным в положение Power Target , для RedBoard кабель USB не требуется. Однако официальный Atmel AVR MKII не может обеспечить питание целевой платы.Таким образом, для подключения к целевому AVR требуется кабель.

То же самое и для более новых программистов Atmel. На изображении ниже показан Atmel JTAG ICE3, подключенный к RedBoard. Как видите, положение кабеля AVR подключается к RedBoard аналогично изображению с AVR MKII. Поскольку программист не может обеспечить питание цели, вам понадобится дополнительный кабель, подключенный к целевому AVR.


Щелкните, чтобы увеличить изображение.

Подключение Arduino в качестве ISP к Target

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

Щелкните, чтобы увеличить изображение.

Tip Ищете другие примеры, помимо соединения двух Arduino Unos вместе? Для получения дополнительной информации посетите страницу ArduinoISP на Arduino.cc.Arduino.cc — ArduinoISP

Монтажный стол

Power Your Target Arduino! Убедитесь, что ваш целевой Arduino включен. В противном случае вы не сможете прошить файл .hex на свою цель.

Вот таблица, которая поможет прояснить, какие соединения и куда идут. В зависимости от Arduino у вас может быть доступ к контактам ICSP только на заголовке 2×3 ICSP. Обязательно обратитесь к макету платы для получения дополнительной информации о SPI-соединениях Arduino.

Программатор AVR Arduino в качестве ISP Заголовок 2×3 ICSP ATmega328 ATmega2560 ATmega32U4
Vcc / 5 В Штифт 2 Vcc Vcc Vcc
ЗЕМЛЯ ЗЕМЛЯ Штифт 6 ЗЕМЛЯ ЗЕМЛЯ ЗЕМЛЯ
MOSI MOSI / D11 Штифт 4 D11 D51 D16
MISO MISO / D12 Штифт 1 D12 D50 D14
SCK SCK / D13 Штифт 3 D13 D52 D15
Сброс D10 Штифт 5 Сброс Сброс Сброс
Предупреждение! Подключение для Arduino 5 В.Если вы подключаетесь к Arduino, который использует более низкое напряжение, убедитесь, что вы безопасно преобразовали логические уровни с помощью преобразователя между программатором и целевой Arduino. Для получения дополнительной информации ознакомьтесь с нашим руководством по логическим уровням.

Логические уровни

Узнайте разницу между устройствами 3,3 В и 5 В и логическими уровнями.

Код загрузки — Easy Way

Примечание: В этом примере предполагается, что вы используете последнюю версию Arduino IDE на своем рабочем столе.Если вы впервые используете Arduino, ознакомьтесь с нашим руководством по установке Arduino IDE.

Самый простой способ загрузить загрузчик — использовать IDE Arduino.

Загрузить Arduino как ISP

Предупреждение! Вам нужно будет загрузить ArduinoISP.ino на ваш заведомо исправный Arduino (то есть на вашу плату программирования), прежде чем вы сможете использовать его в качестве программиста.

Возьмите хорошо известный RedBoard или Arduino Uno. Откройте вашу Arduino IDE.В меню выберите Файл> Примеры> 11. ArduinoISP> ArduinoISP , чтобы открыть Arduino как эскиз ISP

.

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

Загрузите код в ваш Arduino, чтобы превратить его в AVRISP.

Запись загрузчика под вашу цель

Оставьте Arduino в качестве ISP (то есть вашего программиста), подключенного к вашему компьютеру. Если вы еще этого не сделали, подключите целевой Arduino.Затем выберите определение платы для вашей целевой Arduino в меню «Инструменты »> «Плата ».

Выберите программатор, который вы используете, в Tools> Programmer . В данном случае нашим программистом в качестве ISP выступает Arduino, поэтому выберите Arduino в качестве ISP . Вам также нужно будет выбрать COM-порт, к которому подключен Arduino как ISP, если вы еще не выбрали COM-порт.

Внимание! В списке программистов вы можете встретить несколько вариантов выбора «Arduino как ISP».Любой из них будет работать. Однако «ArduinoISP» не будет работать, если он выбран.

Наконец, выберите Burn Bootloader . Это возьмет плату, которую вы выбрали в среде Arduino IDE, и найдите соответствующий загрузчик в файле board.txt . Затем он найдет загрузчик в программной папке Arduino IDE (в частности, « … \ Arduino \ hardware \ arduino \ avr \ bootloaders ») и установит его. Это работает, только если плата правильно установлена ​​в среде IDE и у вас есть правильный загрузчик.

Если по какой-то причине вы хотите использовать загрузчик, который не установлен в Arduino IDE, посетите следующий раздел. Однако, вероятно, проще просто установить загрузчик из IDE Arduino. Не бойтесь тем, кому интересны такие настройки, как предохранители. Arduino позаботится обо всех неприятных деталях, когда вы записываете загрузчики через него.


Код загрузки — Hard Way

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

Этот процесс состоит из трех этапов:

  • Установка битов предохранителей (т. Е. Низкого, высокого и удлиненного)
  • Flash .hex Файл
  • Набор фиксирующих бит

Первый шаг включает установку плавких вставок.Предохранители — это часть микросхемы AVR, которая определяет такие вещи, как использование внешнего кристалла или необходимость обнаружения потемнения. Перечисленные ниже команды предназначены специально для Arduino Uno, использующего ATMega328, они, вероятно, будут работать на некоторых других подобных платах, таких как Duemilanove, но убедитесь, что вы знаете, что делаете, прежде чем играть с плавкими битами. Все необходимые предохранители перечислены в файле boards.txt для различных плат. Опять же, если у вас плат.txt , затем используйте Easy Way. Второй шаг — это загрузка программы. Последний шаг — установка битов блокировки.

Примечание: Эти плавкие вставки , а не , будут работать на плате 3,3 В / 8 МГц. Если вы используете другой микроконтроллер, вам также потребуется настроить параметр partno.

Карманный программатор AVR

Биты предохранителя

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

  язык: bash
avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse: w: 0x05: m -U hfuse: w: 0xD6: m -U lfuse: w: 0xFF: m
  
Шестнадцатеричный файл и биты замка

После того, как биты предохранителя установлены, мы можем прошить скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите в командной строке следующее. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex , который вы используете для прошивки для своей цели.Чтобы прошить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: … \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .

  язык: bash
avrdude -b 19200 -c usbtiny -p m328p -v -e -U flash: w: hexfilename.hex -U lock: w: 0x0F: m
  

Arduino в качестве ISP

Биты предохранителя

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

  язык: bash
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse: w: 0x05: m -U hfuse: w: 0xD6: m -U lfuse: w: 0xFF: m
  
Шестнадцатеричный файл и биты замка

После того, как биты предохранителя установлены, мы можем прошить скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите в командной строке следующее. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex , который вы используете для прошивки для своей цели.Чтобы прошить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: … \ arduino-1.8.5 \ hardware \ arduino \ avr \ bootloaders \ optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .

  язык: bash
avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash: w: hexfilename.hex -U lock: w: 0x0F: m
  

И последняя информация. Как мы заявляли ранее, загрузчик — это, по сути, .шестнадцатеричный файл . Таким образом, вы можете использовать этот метод для загрузки и кода, который вы хотите для своих IC.

Ресурсы и движение вперед

Ищете подходящую Arduino?

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

Отведи меня туда!

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

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

Установка загрузчика на MicroView

Исправьте MicroView без загрузчика! В этом руководстве рассказывается, как: разобрать MicroView, подключить его к разным программистам, запрограммировать загрузчик и протестировать его.

Pi AVR Programmer HAT Hookup Guide

В этом руководстве мы будем использовать Raspberry Pi 3 и Pi AVR Programmer HAT для программирования цели ATMega328P.Сначала мы запрограммируем загрузчик Arduino через SPI, а затем загрузим скетч Arduino через последовательный COM-порт USB.

Или ознакомьтесь с нашим руководством по программированию ARM для чипов ARM.

Программирование на ARM

Как программировать платы SAMD21 или SAMD51 (или другие процессоры ARM).

.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *