Кто-нибудь видел или знал о способе предварительной загрузки (с использованием компьютера или чего-либо другого) прошивки в качестве данных на один Arduino, настроенный для работы в качестве ISP, а затем с помощью этого Arduino подключите интерфейс ISP в другой и загрузить прошивку.
Чтобы быть ясным - я ищу способ сделать возможной загрузку эскизов Arduino без прямого подключения к полноценному компьютеру.
В идеале необходимо выполнить следующие шаги:
- Написать новый скетч / прошивку
- Скомпилировать прошивку
- Запишите копию прошивки на Arduino A в качестве данных (Arduino A настроен для работы в качестве интернет-провайдера)
- Отсоединить Arduino A от компьютера
- В отдельном месте подключите Arduino A к Arduino B, используя заголовки ISP
- С помощью какого-либо метода (возможно, кнопки) активируйте Arduino A для загрузки предварительно загруженной прошивки в Arduino B.
Я предполагаю, что теоретически это могло бы работать, потому что загрузка прошивки - это просто обмен байтами через интерфейс SPI, но я не уверен в реальности.
Сценарий, который я рассматриваю, заключается в том, что если бы я установил Arduino (навсегда) в месте, удаленном от моего компьютера (у меня нет ноутбука, и я не хочу его иметь), было бы проблематично перепрограммировать Это.
Другой метод, который я рассмотрел, - это использование DIL-упаковки ATMEGA, которую я могу затем удалить с платы и запрограммировать на компьютере и вернуть на плату - однако я бы предпочел не рисковать сгибанием штырьков и избавиться от необходимости удалять чип каждый раз, когда я хочу перепрограммировать.
Ответы:
Я думаю, что µProg - крошечный, быстрый, портативный AVR-программатор с SD, делает то, что вы хотите. Вы можете сохранить несколько файлов на SD-карте (hex, eep и т. Д.) И выбрать из меню устройства, какой из них записать в целевой MCU без необходимости использования ПК.
Самое приятное, что он доступен бесплатно (печатная плата, схема, прошивка и т. Д.).
Список поддерживаемых чипов
источник
У меня нет прямого решения того, что вы хотите, но да, это возможно. Вы можете взломать прошивку загрузчика, чтобы он считал флэш-код прошивки и загрузил его через ISP.
Хотя вы, очевидно, не можете загрузить 32 Кб микропрограммы на целевой AVR, если в обоих arduinos всего 32 Кбайт флэш-памяти в их микроконтроллерах, вам нужно, чтобы у флэшера было больше, чем у цели, если вы хотите это сделать (1284 п. или 2560 Мега будет достаточно далеко, или 328 / 32u4 будет хорошим, чтобы высветить 168 или аттины). Единственное исключение будет иметь прошивку, которая будет мигать намного меньше, чем общая память (как для мигающего эскиза).
В конце концов, это будет нелегко, это 100% чистый код AVR, но вы можете это сделать. Посмотри на:
Я бы реализовал так, чтобы все было вписано в загрузчик устройства-флешера, чтобы он считывал прошивку (все от 0x00 до начального адреса загрузчика) и прошивал через ISP, объединяя AVRISP с Optiboot.
В любом случае, это интересный проект для семинара о загрузчиках и AVR, который я могу предложить в своем местном хакерском пространстве! ;-)
НТН
источник