25.08.2009

Доступ к СМП по USB (2)

Вторая версия USB-устройства чтения-записи СМП/МПО Электроника МК-90.

В схему добавлен резистор 22К, притягивающий вход измерения батарейки к GND. Он позволяет избежать чтения "ерунды", когда пин висит в воздухе – теперь будет стабильный ноль.

Также я задался риторическим вопросом о том, стоит ли тащить в схему ICSP-разъем, если и так уже есть USB. Все, что требуется - это bootloader, который будет принимать новую прошивку через USB и прошивать ее во flash-память. С одной стороны - пустяк, может и не пригодиться, с другой - доступный способ обновления, не требующий программатора.

Итак, теперь управление всегда передается bootloader-у, который опрашивает джампер JP1. Пользователь аккуратно разбирает корпус устройства (при наличии такового ;), устанавливает джампер, подключает кабель USB. По установленному джамперу bootloader понимает, что грядет обновление прошивки и ждет данных для записи. Пользователь должен запустить отдельную программу smpreader_updater.exe с единственноым аргументом - именем hex-файла с новой прошивкой. После успешного завершения программы, надо отключить устройство от USB, снять джампер и завинтить обратно.




Бутлоадер был создан на основе релиза V-USB 20090415, а также проектов AVRUSBBoot и USBaspLoader.

AVRUSBBoot мне понравился экстремальной простотой и укомплектованностью host-программой – ну просто бери и пользуйся! Не тут-то было: с момента первого (и последнего ;) релиза прошло довольно много времени, поэтому пришлось обработать напильником: учесть особенности последнего стандарта C++, обновить морально устаревшее ядро V-USB, немного подкорректировать алгоритм проверки условия активизации и корректность выхода (позаимствовал идеи из USBaspLoader).

Увы, размер необходимой памяти программ с учетом bootloader-а вырос на 2К и составил более 4К. В таком варианте ATTiny2313 использовать уже не получится, ATmega48 – только если выкинуть код измерения напряжения батарейки. Поэтому, практически безальтернативно проект собирается на ATmega8-16PU.

Схема, исходники и бинарники: smpreaderusb_2.0.zip.

Файлов с прошивками теперь стало два: сначала надо прошить программатором smpreaderboot.hex, а уже потом через USB можно заливать smpreaderusb.hex. Подробные инструкции на английском языке в виде README-файлов заботливо разложены мной по подкатагам ;)

Кстати, собрал прототип на макетной плате под пайку, выглядит так:



Вместо двух отдельных светодиодов Rx и Tx я использовал один двухвыводной, токоограничительные резисторы R3, R4 и R5 имеют номинал 330 Ом.

К моему огорчению, по-прежнему отсутствуют:

  • GUI, печатная плата
  • инсталлятор (или хотя бы inf-файлы для драйверов)
  • Makefile для консольной сборки
  • поддержка Linux (пока – только потенциальная)
Если руки дойдут, возможно - все это и появится, следите за новостями ;)

Комментариев нет:

Отправить комментарий