Кроссплатформенный загрузчик для AVR

AVR
В ходе работ по усилителю для Редгерры (http://www.whitefossa.ru/files/Gerry_amplifier/) мяу написал загрузчик для заливки прошивок в МК. Вы скажете, что таких загрузчиков полно? Да, это так, но во-первых мой собственный мяу ближе, а во-вторых — он обладает кошерными свойствами:

Кроссплатформенность. Клиент загрузчика написан на Qt4, компиляется из одного исходного кода и одинаково работает на Windows (XP x32, XP x64 и Win7 x64 — проверено) и Linux. Должен работать и на других ОС, для которых существует реализация Qt.
  • Отсутствие привязки к AVR Studio.
  • Прошиваемый в МК загрузчик написан на ассемблере и занимает ~560 байт (размер загрузчика ставьте в 512 слов).
  • Прошиваемая часть по-идее должна работать на разнообразных AVR-ках без изменений.
  • Клиентская часть загрузчика содержит базу данных устройств по производителями и моделям (а-ля USB), в которой хранится информация об устройстве, размере его памяти, её организации и т.д. Таким образом, отпадает нужда в хранении этих данных на МК. На МК хранится только идентификатор производителя (3 байта), идентификатор модели (3 байта) и серийный номер (4 байта). Вы можете добавлять свои записи в БД (файл ident.sqlite), только запрашивайте у мяу идентификаторы производителя во-избежание дублирования.
  • Загрузчик принудительно делает бэкап всей прошивки (включая самого себя) и EEPROM перед началом прошивки, таким образом вы никогда не забудете о бэкапах.
  • Сброс во время перепрошивки, некошерная прошивка и тому подобные вещи теперь не страшны — сам загрузчик защищён от записи, поэтому даже в случае повреждения прошивки её можно легко восстановить.
  • СЗагрузчик, клиентская часть и документация являются свободным и открытым программным обеспечением (as beer and as speech) и распространяются под лицензией GPLv3. Таким образом вы можете свободно использовать его, модифицировать и распространять на своих устройствах (подробнее — читайте GPLv3).
  • Загрузчик может работать с любой частотой кварца и скоростью UART, которую поддерживает ваш МК — в клиентской части можно задать все параметры работы с UART.
  • Работает быстро — так как не использует таймауты при работе с портом.
  • В полном соответствии с духом и буквой GPLv3 не поддерживает биты блокировки — ваша прошивка, содержимое EEPROM и сам загрузчик всегда могут быть скачаны прямо с МК.
  • Загрузчик умеет перезагружать устройство после перепрошивки.
  • Легко настроить под ваше устройство. Откройте проект с прошиваемой частью, отредактируйте порт и ногу, на которой будет ожидаться низкий уровень для входа в загрузчик, порт и ногу, на которой будет выставляться высокий уровень, когда мы в загрузчике, тактовую частоту, скорость UART и соберите проект. Для входа в загрузчик надо установить низкий уровень на указанной ноге и дать МК Reset.
  • Проверяет правильность записи всех данных.

Недостатки:

Не поддерживает память МК больше, чем 64кбайта. Если вам нужно больше — модифицируйте протокол обмена, исходники, и пришлите всё это мяу.
Мог бы шить быстрее, так как время тратится на проверку записанных страниц.

Уже хотите качать? Запросто:

http://whitefossa.ru/bootloader/floader-0.0.1_src_noarch.tar.gz и http://whitefossa.ru/bootloader/floader-0.0.1_src_noarch.7z (содержимое идентично) — все исходники + документация.
http://whitefossa.ru/bootloader/floader-0.0.1_windows.7z — скомпилированный под Windows клиент + проект с прошиваемой частью.
http://whitefossa.ru/bootloader/floader-0.0.1_linux_x86-64.tar.gz — то-же, но для Linux.

И да, выглядит это вот-так:
Скриншот
  • +2
  • 17 января 2012, 22:06
  • fossa