- PVSM.RU - https://www.pvsm.ru -
Unified Program and Debug Interface (UPDI) — это однопроводной интерфейс для программирования/отладки новых 8-битных микроконтроллеров Atmel, пришедший на смену двухпроводному интерфейсу PDI, использовавшемуся для программирования микроконтроллеров AVR XMEGA.

Итак, полку атмеловских протоколов прибыло — ISP, JTAG, debugWIRE, TPI, aWire, PDI, теперь вот UPDI. При этом ситуация с экосистемой у AVR по-прежнему весьма нерадужная, так что мы собирались совсем уже отказываться от их использования, но последняя тенденция нас слегка порадовала, поэтому и была написана данная статья.
Использовать протокол UPDI могут только счастливые обладатели программатора Atmel ICE, который не очень удобен в эксплуатации из-за довольно странного выбора разъема, да и стоит не так уж дешево, чтобы позволить себе закупать его в промышленных масштабах. К тому же он требует установки Atmel Studio, которая периодически отказывается с ним работать, так как согласно политике нашей фирмы, большинство компьютеров не имеют доступа к Интернету, а студия периодически туда лезет то за драйвера, то за какими-то библиотеками, в итоге были моменты, когда программатор был виден в системе, то есть, драйвера установились верно, но в упор не замечался самой студией до тех пор, пока она не получила доступ к сети и не была обновлена принудительным образом.
Поэтому сразу же после того, как мы начали использовать в своих разработках новый и довольно удобный микроконтроллер ATTiny1616 (о его достоинствах позднее), возникла потребность в инструменте, который мы могли бы применять для записи в контроллер первичного загрузчика в продакшне. Разумеется, без смс и регистрации доступа к Интернету.
После небольших поисков я обнаружил на Гитхабе проект pyupdi (https://github.com/mraardvark/pyupdi) — реализацию протокола UPDI на Питоне, причем основана эта реализация на обычном протоколе UART, разве что без преобразователей уровня, что, на самом деле, еще удобнее, потому что позволяет использовать стандартные микросхемы преобразователей от FTDI или их китайские аналоги CH340/341.
Проект был скачан и опробован, дело пошло довольно бодро. Но через пару дней стало понятно, что он все-таки не совсем нам подходит. Причины:
Проблемы какое-то время решались в рамках Питона, но после любого фикса приходилось пересобирать проект, тестировать, так что появилось желание переписать скрипт на чем-то более привычном и быстром, то есть, на Си. Мы же эмбеддеры, в конце концов!
Теперь кратко о достоинствах нового семейства tinyAVR 1-Series:
В качестве железной части программатора мы взяли уже имеющийся в наличии преобразователь USB-UART TTL на базе китайского чипа CH340, вот такой:

Для программирования достаточно соединить два его вывода RX и TX, так как они уже оснащены выходным резистором на 1.5k, если резистор в Вашей модели преобразователя отсутствует, то его нужно добавить. Объединенный вывод соединяется с ножкой UPDI на программируемом чипе, земля преобразователя должна быть также соединена с землей контроллера. При наличии внешнего питания, нужно обратить внимание лишь на то, соответствует ли оно питанию, которое использует преобразователь (3.3В или 5В). Если есть необходимость, то можно запитать схему с контроллером и от самого преобразователя, что может быть очень удобным для первичного программирования.

Внимание! Резистор является опциональным, его нужно допаивать только в случае, если Ваш преобразователь не имеет никаких защитных резисторов на выходе.
Единственная проблема, которая связана с чипом CH340 — он не заработал в моей Линукс-версии программы, так как в протоколе программирования используется бит паритета, а драйвер CH340 в моей версии ядра работает с этим битом неправильно. Возможно, проблема будет устранена в ближайшее время, пока что заниматься этим у меня не хватило терпения.
В результате работы и экспериментов в IDE Code::Blocks была написана и отлажена программа updiprog, исходные коды которой выложены на Гитхабе [1].
Что было реализовано в данной версии программы:
Исходный размер программы составляет около 25 кб в сравнении с 5 с копейками Мб для скомпилированного исходного скрипта на Питоне.
Надеюсь, что проделанная работа будет кому-то полезна. Буду рад отзывам и предложениям.
Автор: Polaris99
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy-ili-sdelaj-sam/296643
Ссылки в тексте:
[1] исходные коды которой выложены на Гитхабе: https://github.com/Polarisru/updiprog
[2] Источник: https://habr.com/post/427349/?utm_campaign=427349
Нажмите здесь для печати.