Program Stick


Для чего он нужен? PgmStik это простой и дешевый «одноразовый» программатор для AVR. Одноразовый в том смысле, что несёт в себе только один файл прошивки. Придуман специально для обновлений прошивки, чтобы где-нибудь в поле не надо было доставать ноутбук, подключать программатор, ждать пока загрузится, короче вот это вот всё. Вместо этого достаём из кармана «флешку», вставляем в ISP. Оно мигает несколько секунд, и готово. Прошивка в устройстве обновлена быстро, дёшево и сердито. Квалификация человека, который осуществляет замену прошивки может быть невысокой, нужно иметь совсем кривые руки, чтобы не попасть «флешкой» в гнездо. Впрочем, даже если воткнуть другой стороной, ничего плохого не происходит.

Как это сделано, сколько стоит, и что умеет? Сделано это из 328меги, платы, разъёма, пары светодиодов и резисторов. Стоит соответственно. Умеет обновлять прошивки в целевых устройствах на базе mega48 — 88 — 168 — 328. Теоретически, может и все остальные меги и тини, надо просто поддержать их в коде загрузчика. Обновляет флеш и фузы, EEPROM не обновляет, это специально так сделано, чтобы калибровки и настройки устройств сохранялись, а обновлялся только исполняемый кот. Для тарджетов на mega328 величина образа лимитирована 30к, чтобы оставить внутри програм-стика место для загрузчика.

Как этим пользоваться? Просто. Собираем, и заливаем загрузчик. Ставим фузы.

Джампер J2 нужен как раз для совместимости со стандартными программаторами. При прошивке загрузчика его надо замкнуть, а для нормальной работы програмстика — опять разомкнуть. Джампер J1 выбирает режим работы — если разомкнут, то програмстик считывает прошивки, если замкнут — пишет.
После записи загрузчика програмстик вставляем в раъём ISP устройства, содержащего образец прошивки. Убер-девайс считывает из тарджета сигнатуру, фузы и прошивку, и сохраняет их в собственный flash и eeprom. Пока читает — мигает зелёной лампочкой. Меги с большим количеством памяти читает долго, и чтобы не соскучиться, можете считать вспышки светодиодика. Если читать mega328 — мигнёт 128 раз. После того, как всё считалось — постоянно загорается зелёный светодиодик, значит програмстик можно вынимать. Во время чтения програмстик определяет размер прошивки — по последнему байту, отличному от 0xFF, и в дальнейшем будет записывать только нужную область, а не весь флешь целиком.
Если загорелся красный светодиодик — значит произошла ошибка при чтении, и образ прошивки не сохранён.
Затем замыкаем джампер J1, и в дальнейшем programstik будет записывать сохранённую прошивку во все платы, куда его вставят. Перед записью проверяется сигнатура тарджета и сравнивается с сохранённой, так уменьшается вероятность случайно «окирпичить» непричастное устройство, вставив в него програмстик по ошибке. Внешне процесс записи выглядит аналогично чтению — мигает зелёным. Если зелёный включился и светит — готово, можно вынимать. Если горит красным — ошибка записи была допущена.
В приложении сырцы (ассемблер, да.) и гербер, если захотите заказать платку у китайцев. Только заказывайте на текстолите толщиной 1мм, чтобы между выводами разъёма вставлялась.
UPD: сырцы перезалиты. Готовая прошивка добавлена.
UPD1: Втыкание стика наоборот не вредит не стику, ни тарджету — проверено.
UPD2: D1 это Green
- +7
- 03 марта 2018, 17:24
- Gornist
- 3
Для тарджетов на mega328 величина образа лимитирована 30кМожно воткнуть сжатие. Декомпрессоры семейства LZ достаточно простые и компактные, правда, малый объем оперативной памяти скажется на сжатии отрицательно. Ну и заливать прошивку придется уже сжатую, компрессор на МК в лучшем случае будет небыстрым)
нужно иметь совсем кривые руки, чтобы не попасть «флешкой» в гнездоМожно воткнуть не той стороной… По крайней мере в распространенные BH6/BH10)
исполняемый кот.
улыбнуло.
А по делу — что то похожее, когда то использовали. Только atmega128, и прошивок туда влезало несколько штук. Соответственно прошивки можно было выбирать на объекте.
- KalyakaMalyaka
- 03 марта 2018, 18:50
- ↓
Угу, можно сд-карточку заюзать. А раз памяти много, то и дисплей добавить, чтобы выбирать прошивки. И получим uProg :)
Но так-то, да. Тоже подумал, что неплохо бы посадочное место под внешнюю память и вторую версию прошивки устройства. Надо мелкие микросхемы — одного МК достаточно. Надо что-то крупное — паяем внешнюю память. Но это актуально, если «обновления прошивок» продавать, когда таких устройств может быть много.
Но так-то, да. Тоже подумал, что неплохо бы посадочное место под внешнюю память и вторую версию прошивки устройства. Надо мелкие микросхемы — одного МК достаточно. Надо что-то крупное — паяем внешнюю память. Но это актуально, если «обновления прошивок» продавать, когда таких устройств может быть много.
play.google.com/store/apps/details?id=ru.zdevs.zflasheravr&hl=ru умеет шить все и FUSE и EEPROM и FLASH
Комментарии (18)
RSS свернуть / развернуть