Прошивка AVR в полевых условиях без ПК.

Тема в разделе "Закажу проект", создана пользователем stendvik, 20 июл 2015.

  1. stendvik

    stendvik Нерд

    Помогите разобраться. Сам я в микроконтроллерах почти полный ноль- знаю слова "прошивка","программатор","микроконтроллер" и еще несколько :) . Задача стоит такая- есть несколько устройств на AVR-контроллерах atmega (если важно какие- уточню) их периодически нужно перепрошивать. Эти штуковины расположены в разноудаленных местах и что бы обновить прошивку приходится собирать их все, везти, а потом после перепрошивки развозить обратно. Прошиваем все через программатор AVR910USB программой avrdude. В интернете вычитал, что для прошивки микроконтроллеров можно использовать arduino uno, но т.к. я в этом 0+ то решил обратиться к вам за помощью. Идеальный вариант был бы такой- с ПК заливаем информацию на arduino и дальше с его помощью перепрошиваем AVR-контроллеры. Т.к. делают это совсем не специалисты, процедура должна быть предельно простой- соединил контакты, нажал на кнопку, потом отсоединил и поехал к следующему. Насколько реально осуществить такую схему? Сразу оговорюсь- вариант с ноутбуком не походит.
     
  2. geher

    geher Гуру

    Можно использовать смартфон или планшет на андроиде. Тут, правда, некоторые дополнительные требования всплывают на предмет поддержки режима USB host. По крайней мере софт для андроида под прошивку ардуины точно есть.

    Можно и с ардуиной решить вопрос, если прошивка целевого устройства невелика.
    За основу можно взять Arduino ISP, только модифицировать его, чтобы брал прошивку не из последовательного порта по внешней команде, а из progmem или SD карты (в последнем случае, если хватит производительности при использовании доступной библиотеки).
    В частности, для упрощения задачи можно просто попробовать записывать на SD карту все, что поступает на последовательный порт ардуины с модифицированной программой ArduinoISP, которая просто дублирует последовательный порт в файл на карте. А при прошивке использовать другую модификацию, которая берет данные не из последовательного порта, а из файла на SD карте.
    Т.е. подключаем устройство на ардуине к программируемому МК, подаем питание, и оно начинает работать, беря данные с SD карты.
     
    stendvik нравится это.
  3. stendvik

    stendvik Нерд

    Спасибо за инфу. Про андроид я и не подумал- тоже интересный вариант.
    Я уже и забыл, что такое экономить память :) . hex-файл весит 80 кб - без флэшки, видно, не обойтись.

    Нашел готовое решение: mProg . Но что бы в этом разобраться, мне еще долго самосовершенствоваться :(.
     
  4. bryaq

    bryaq Нерд

    stendvik нравится это.
  5. stendvik

    stendvik Нерд

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

    Наконец пришла Arduino UNO. Скачал ихнюю программу с arduino.cc, подключил к компу, по-мигал светодиодами :) . На этом счастье и закончилось- в комплекте с программой идет ArduinoISP, подключил, как в написанно в комментах к ней, скомпилировал и залил прошивку в ардуино. Загрузил без ошибок hex-файл в конченое устройство и нифига не заработало- видимо прошивка встала как-то коряво. Попытался выгрузить прошивку в файл из устройства. Файл выгрузился, но совсем не то, что заливал, хотя размер файла одинаковый до байта. Подскажите, pls, в какую сторону копать :( .
    З.Ы. а нет, я ошибся- отправленный и полученный файл имеют разный размер...
    Вот еще: в исходном файле строчки вида:
    Код (Text):
    :1000000064C1189518951895189518951895189510
    :100010003AC118950A6200000260CC03C498C098E7
    А в обратку получил строки:
    Код (Text):
    :2000000064C118951895189518951895189518953AC118950A6200000260CC03C498C09807
    :2000200018E007FB16F4C49A01C0C498C09AC098000F1A95B1F7C49808958A93802FC39809
     
    Последнее редактирование: 28 июл 2015
  6. stendvik

    stendvik Нерд

    Проблема прошивки через ArduinoISP решил. К девайсу идет программка для прошивки через avrdude. Подшаманил avrdude.config, что бы прошивка шла не через usbasp, а через arduino и все заработало.
    Осталось исключить из этой цепочки ПК.