Как загрузить код в Arduino без ноутбука

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

, 👍0

Обсуждение

SD-карта возможна. вы хотите решение для Uno или тег случайный?, @Juraj

@Juraj Ну, пока я использую Uno, nano и pro mini., @Lord Voldemort

Мы говорим строго об одиночных платах Arduino? Интернет-загрузка OTA (по воздуху) может быть интересной для вас, @110mat110


1 ответ


2

Хорошим способом обновить Uno/Nano/Mini без подключения к компьютеру является использование загрузчика SD. Загрузчик SD считывает при загрузке bin-файл с обновлением с подключенной SD-карты и копирует его во флэш-память.

Для ATmega существует не так много загрузчиков SD. Я использую avr_boot от zevero. Это работает хорошо. Недостатком является то, что он не поддерживает загрузку через USB.

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

avr_boot требует bin-файл, а не шестнадцатеричный файл, но можно просто настроить Arduino IDE на создание bin-файла вместе с шестнадцатеричным файлом. Вы создаете файл platform.local.txt рядом с platform.txt в пакете avr boards и помещаете в него эту строку:

## Create output (bin file)
recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2hex.cmd}" -O binary {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"

Затем вы можете использовать "Экспортировать скомпилированный двоичный файл" из меню Sketch в Arduino IDE, и вы найдете двоичный файл рядом с вашим ino-файлом в папке Sketch.


Существуют разные способы обновления Arduino без подключения к компьютеру. Для небольших ATmega328p на Uno/Nano/Mini недостаточно места во флэш-памяти для самостоятельного обновления. Код, необходимый для выполнения обновления, занимает более половины флэш-памяти, поэтому не остается места для хранения двоичного файла обновления перед его применением. (Конечно, обновленный скетч также должен содержать код для самообновления.)

Для иллюстрации того, что возможно, вот скетч для Arduino Mega, который выполняет самообновление с SD-карты, читая шестнадцатеричный файл. Для этого требуется модифицированный Optiboot, доступный в MegaCore.

,