Program Stick

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

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

Джампер J2 нужен как раз для совместимости со стандартными программаторами. При прошивке загрузчика его надо замкнуть, а для нормальной работы програмстика — опять разомкнуть. Джампер J1 выбирает режим работы — если разомкнут, то програмстик считывает прошивки, если замкнут — пишет.

После записи загрузчика програмстик вставляем в раъём ISP устройства, содержащего образец прошивки. Убер-девайс считывает из тарджета сигнатуру, фузы и прошивку, и сохраняет их в собственный flash и eeprom. Пока читает — мигает зелёной лампочкой. Меги с большим количеством памяти читает долго, и чтобы не соскучиться, можете считать вспышки светодиодика. Если читать mega328 — мигнёт 128 раз. После того, как всё считалось — постоянно загорается зелёный светодиодик, значит програмстик можно вынимать. Во время чтения програмстик определяет размер прошивки — по последнему байту, отличному от 0xFF, и в дальнейшем будет записывать только нужную область, а не весь флешь целиком.
Если загорелся красный светодиодик — значит произошла ошибка при чтении, и образ прошивки не сохранён.

Затем замыкаем джампер J1, и в дальнейшем programstik будет записывать сохранённую прошивку во все платы, куда его вставят. Перед записью проверяется сигнатура тарджета и сравнивается с сохранённой, так уменьшается вероятность случайно «окирпичить» непричастное устройство, вставив в него програмстик по ошибке. Внешне процесс записи выглядит аналогично чтению — мигает зелёным. Если зелёный включился и светит — готово, можно вынимать. Если горит красным — ошибка записи была допущена.

В приложении сырцы (ассемблер, да.) и гербер, если захотите заказать платку у китайцев. Только заказывайте на текстолите толщиной 1мм, чтобы между выводами разъёма вставлялась.

UPD: сырцы перезалиты. Готовая прошивка добавлена.
UPD1: Втыкание стика наоборот не вредит не стику, ни тарджету — проверено.
  • +7
  • 03 марта 2018, 17:24
  • Gornist
  • 3
Файлы в топике: pgmstick_Gerber.zip, src.zip, firmware.zip

Комментарии (18)

RSS свернуть / развернуть
Для тарджетов на mega328 величина образа лимитирована 30к
Можно воткнуть сжатие. Декомпрессоры семейства LZ достаточно простые и компактные, правда, малый объем оперативной памяти скажется на сжатии отрицательно. Ну и заливать прошивку придется уже сжатую, компрессор на МК в лучшем случае будет небыстрым)
нужно иметь совсем кривые руки, чтобы не попасть «флешкой» в гнездо
Можно воткнуть не той стороной… По крайней мере в распространенные BH6/BH10)
0
  • avatar
  • Vga
  • 03 марта 2018, 17:40
Сырки неполные, не хватает инклюда lang.asm (хотя я бы просто перетащил те два макроса, что юзаются, прямо в main.asm).
0
  • avatar
  • Vga
  • 03 марта 2018, 17:49
Mea culpa. Поправил.
0
Я так понял обновлять можно только незалоченные прошивки?
+1
исполняемый кот.

улыбнуло.
А по делу — что то похожее, когда то использовали. Только atmega128, и прошивок туда влезало несколько штук. Соответственно прошивки можно было выбирать на объекте.
+1
Почему бы внешнюю флешь память не прицепить? Влезла бы любая прошивка
0
Как в Pickit-е.
0
Угу, можно сд-карточку заюзать. А раз памяти много, то и дисплей добавить, чтобы выбирать прошивки. И получим uProg :)
Но так-то, да. Тоже подумал, что неплохо бы посадочное место под внешнюю память и вторую версию прошивки устройства. Надо мелкие микросхемы — одного МК достаточно. Надо что-то крупное — паяем внешнюю память. Но это актуально, если «обновления прошивок» продавать, когда таких устройств может быть много.
0
Забавно да. Но я так понял что это кусок, отвалившийся от какого-то проекта?
0
play.google.com/store/apps/details?id=ru.zdevs.zflasheravr&hl=ru умеет шить все и FUSE и EEPROM и FLASH
0
>>обновлялся только исполняемый кот.
Кот это сила, вот прям счас эта наглая рыжая морда бодает ногу.
Текст все же поправте…
0
Эт зачем? Всё верно, так было с самого начала задумано.
0
В бородатом 2001 году делал загрузчики для установок «Фантом».
Сама установка

и к ней загрузчик.
0
Сама установка
:: satellite portal array ::
satellite array status — offline
0
к сожалению, гифки после закачки здесь не крутятся
0
Да, дурацкий вотермаркер. Регулярно картинки портит (особенно гифки, и не только анимированные). Но можно включить его с внешнего хостинга, хотя я это и не одобряю.
0
Когда работал в НИИ у нас тоже была такая платка — она прошивала DFU загрузчик, уже после нее разработчик прошивал свою прошивку по USB.
0
Кстати, вроде такой ништячок использует компания Segnetics для Pixel контроллеров.
0
  • avatar
  • Jman
  • 27 марта 2018, 15:24
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.