Итак, по мотивам произведений уважаемого пользователя DOCSIMUS, а именно остросюжетного бестселлера "bootloader", проект MegaD-328 обзавелся новой функциональностью.
Теперь можно обновлять прошивку устройства через локальную сеть без использования программатора.
Для этого необходимо загрузить в микроконтроллер бутлоадер. Эта единственная операция, которая еще потребует программатор.
Но сначала нужно правильно выставить fuse-bits.
Low: 0x60
High: 0xD8
Вот пример для avrdude и AVRISP mkII
avrdude -c avrispmkII -P usb -p m328p -U lfuse:w:0x60:m -U hfuse:w:0xD8:m
Далее загружаем в МК, собственно, сам бутлоадер.
http://ab-log.ru/files/File/megad-boot/ ... oot_11.zip
Теперь нам потребуется специальная программа. Я слепил несложный PHP-скрипт.
PHP-скрипт - решение кроссплатформенное и работает на любой ОС. Но в будущем можно скрипт скомпилировать в исполняемый файл для Windows (EXE). При желании это можно сделать.
http://ab-log.ru/files/File/megad-cfg/megad-cfg.zip
Прошивать будем новую прошивку 3.14 beta 1, так как в ней содержится важные изменения, связанные с процессом апгрейда прошивки.
http://ab-log.ru/files/File/ip_manager3 ... a1_hex.zip
Пользоваться скриптом просто (ну по крайней мере мне так кажется).
После того, как прошит бутлоадер, в МК нет основной программы, работает только бутлоадер, поэтому прошиваем так
где
--fw имя файла прошивки
-f параметр, отвечающий за прошивку _чистого_ устройства, в режиме, когда работает только бутлоадер
После того, как прошивка залита, бутлоадер автоматически передает управление основной программе.
Теперь интересное в новой прошивке.
1. Все устройства в локальной сети можно просканировать командой
Скрипт отобразит IP-адреса подключенных устройств, даже если они находятся в другой IP-сети!
2. IP-адрес устройства можно поменять (даже если оно находится в другой IP-сети). Это важно, так как по умолчанию адрес устройства 192.168.0.14, а у пользователя может использоваться другая сеть 192.168.1.0 или 10.0.0.1
Команда
Код: Выделить всё
php megad-cfg.php --ip 192.168.0.14 --new-ip 192.168.0.15 -p sec
Здесь
--ip Текущий адрес устройства
--new-ip Адрес, который необходимо установить
-p Пароль. Это важно. Мы же не хотим, чтобы кто угодно менял ip-адреса бесконтрольно. Устройство поменяет свой адрес только в том случае, если будет указан правильный пароль.
3. Апгрейд прошивки он-лайн
Достаточно запустить скрипт со знакомыми уже параметрами
Код: Выделить всё
php megad-cfg.php --ip 192.168.0.14 --fw megad-328.hex -p sec
и в устройство будет автоматически загружена новая прошивка, а после успешной загрузки устройство сразу же начнет нормальную работу.
Этот процесс занимает всего несколько секунд.
Вот такие новости. Если кратко.