Arduino как провайдер без компьютера

12

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

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

В идеале необходимо выполнить следующие шаги:

  1. Написать новый скетч / прошивку
  2. Скомпилировать прошивку
  3. Запишите копию прошивки на Arduino A в качестве данных (Arduino A настроен для работы в качестве интернет-провайдера)
  4. Отсоединить Arduino A от компьютера
  5. В отдельном месте подключите Arduino A к Arduino B, используя заголовки ISP
  6. С помощью какого-либо метода (возможно, кнопки) активируйте Arduino A для загрузки предварительно загруженной прошивки в Arduino B.

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

Сценарий, который я рассматриваю, заключается в том, что если бы я установил Arduino (навсегда) в месте, удаленном от моего компьютера (у меня нет ноутбука, и я не хочу его иметь), было бы проблематично перепрограммировать Это.

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

m3z
источник
В результате вы сможете программировать другие Arduinos только с точным эскизом / прошивкой, загруженной в программатор (Arduino A). Так что было бы полезно делать копии, как в производственной линии, не так ли? Если вам нужно что-то изменить на эскизе, вам нужно вернуться к компьютеру, чтобы изменить и загрузить его снова. Я правильно понял?
Рикардо
1
Разве невозможно сохранить «флэш-изображение» для копирования на цель на другой поддержке (например, на SD-карте)?
jfpoilpret
Да. Я полагаю, это также было бы хорошо для производственной линии. Моя ситуация - у меня есть arduino, приклеенный к корпусу, который трудно перемещать, и он находится в другой комнате с моим компьютером (также трудно перемещаемым). Поэтому я был бы рад загрузить эскиз на Arduino A каждый раз, когда хотел его изменить.
m3z
2
Это было сделано для ограниченной цели программирования загрузчика - github.com/WestfW/OptiLoader - но оно должно работать для любой полезной нагрузки, меньшей доступной флэш-памяти, минус размер инструмента. Для прошивки с большей полезной нагрузкой должно работать внешнее запоминающее устройство (или просто Arduino Mega?).
Крис Страттон
@ChrisStratton, который выглядит идеально подходящим для меня. Спасибо
m3z

Ответы:

5

Я думаю, что µProg - крошечный, быстрый, портативный AVR-программатор с SD, делает то, что вы хотите. Вы можете сохранить несколько файлов на SD-карте (hex, eep и т. Д.) И выбрать из меню устройства, какой из них записать в целевой MCU без необходимости использования ПК.
Самое приятное, что он доступен бесплатно (печатная плата, схема, прошивка и т. Д.).

Единственный в своем роде портативный программатор AVR! Помогает везде, где вам нужно обновить прошивку устройства, когда целевое устройство находится в труднодоступном месте, и вы не можете (или не хотите) брать с собой ноутбук с кучей проводов. Простой в использовании, супер дешевый, супер маленький, супер быстрый, использует SD-карты ...

Функции:

  • супер маленький - размеры 44 х 39 х 5,5 мм
  • супер быстрый - запись до 12,5 кБ / с, чтение до 14,5 кБ / с
  • использует дешевый носитель данных - маленькие SD-карты MICRO
  • поддерживает файловые системы FAT16 и FAT32
  • может читать, писать, проверять флэш-память и EEPROM памяти
  • умеет читать, писать, проверять фейсбиты и локбиты
  • запись и чтение в файлы BIN, HEX и TXT
  • можно установить значения по умолчанию fusebits, стереть память
  • дешево, легко получить, LPH7779 графический дисплей
  • показывает забавные анимации после каждой операции
  • стандартный программный заголовок - Atmel 6-PIN ISP
  • имеет функцию автообновления собственной прошивки (с SD)
  • очень прост в использовании, 4 кнопки навигации
  • меню настроек пользователя
  • автоматический выбор скорости программирования (до 4 МГц)
  • Работает при 3В, программирует микросхемы от 3В до 5В

Список поддерживаемых чипов

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

alexan_e
источник
Выглядит хорошо. Будем расследовать на выходных.
m3z
Я не знаю, как я пропустил этот вопрос на днях. Я только говорил с другом о создании этого точного проекта самостоятельно. И тогда я вижу твой ответ.
Мадивад
4

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

Хотя вы, очевидно, не можете загрузить 32 Кб микропрограммы на целевой AVR, если в обоих arduinos всего 32 Кбайт флэш-памяти в их микроконтроллерах, вам нужно, чтобы у флэшера было больше, чем у цели, если вы хотите это сделать (1284 п. или 2560 Мега будет достаточно далеко, или 328 / 32u4 будет хорошим, чтобы высветить 168 или аттины). Единственное исключение будет иметь прошивку, которая будет мигать намного меньше, чем общая память (как для мигающего эскиза).

В конце концов, это будет нелегко, это 100% чистый код AVR, но вы можете это сделать. Посмотри на:

Я бы реализовал так, чтобы все было вписано в загрузчик устройства-флешера, чтобы он считывал прошивку (все от 0x00 до начального адреса загрузчика) и прошивал через ISP, объединяя AVRISP с Optiboot.

В любом случае, это интересный проект для семинара о загрузчиках и AVR, который я могу предложить в своем местном хакерском пространстве! ;-)

НТН

ZMO
источник
Спасибо, исходный код AVRISP выглядит не так сложно, как я ожидал. Я посмотрю немного глубже в эти выходные
m3z
Где ваше местное хакерспейс? :)
Мадивад
это во Франции Le Loop
Zmo
никаких проблем, вот для чего
нужно