Прошивка MegaD-328 (релизы, обсуждения, предложения)
Прошивка MegaD-328 (релизы, обсуждения, предложения)
Данный топик является ответвлением большой темы "Умный Дом по Ethernet" и создается в целях упорядочения информации по данному вопросу.
Здесь предлагается обсуждать вопросы, связанные с прошивкой "Мегадевайса" и проекта MegaD-328. Также здесь я буду публиковать информацию об изменениях в прошивке.
Здесь предлагается обсуждать вопросы, связанные с прошивкой "Мегадевайса" и проекта MegaD-328. Также здесь я буду публиковать информацию об изменениях в прошивке.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
3.12beta1plusQ писал(а):возможно ли небольшое дополнение к прошивке
при настройке девайса на исполнение скрипта на сервере или команды NetAction, в случае отсутствия физического подключения к сети, исполнение команды в поле Action немедленно
При отсутствии линка (физической связи с сетью Ethernet) команды по умолчанию выполняются сразу, соединение с сервером не выполняется.
http://ab-log.ru/files/File/ip_manager3 ... a1_hex.zip
http://ab-log.ru/files/File/ip_manager3 ... _beta1.zip
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Андрей, не подскажете, чем Вы компилируете прошивки?
У меня странная ситуация. Моделирую в протеусе на виртуальной машине. Гружу бинарник - все работает, только приходится частоту ставить 6МГц, иначе загрузка проца 100%.
Компилирую исходники - получаю полурабочую прошивку. Входы и выходы работают, а сеть - нет. При этом светодиод на ENC иногда моргает.
Скомпилированный файл получается чуть больше готового. Последняя бетта у Вас 68,5к, а у меня после компиляции 70,5.
Linux 3.2.0-55-generic #85-Ubuntu SMP Wed Oct 2 12:29:27 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
avr-gcc-4.5.3
У меня странная ситуация. Моделирую в протеусе на виртуальной машине. Гружу бинарник - все работает, только приходится частоту ставить 6МГц, иначе загрузка проца 100%.
Компилирую исходники - получаю полурабочую прошивку. Входы и выходы работают, а сеть - нет. При этом светодиод на ENC иногда моргает.
Скомпилированный файл получается чуть больше готового. Последняя бетта у Вас 68,5к, а у меня после компиляции 70,5.
Linux 3.2.0-55-generic #85-Ubuntu SMP Wed Oct 2 12:29:27 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
avr-gcc-4.5.3
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Андрей, премного благодарен!
Неожиданно, как-то. Обновил версию avr-gcc до 4.7.2 и avr-libc до 1.8.0-2 - все собирается и работает.
При этом никаких ерроров и даже ворнингов не было со старыми пакетами.
Неожиданно, как-то. Обновил версию avr-gcc до 4.7.2 и avr-libc до 1.8.0-2 - все собирается и работает.
При этом никаких ерроров и даже ворнингов не было со старыми пакетами.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Итак, по мотивам произведений уважаемого пользователя 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
Команда
Здесь
--ip Текущий адрес устройства
--new-ip Адрес, который необходимо установить
-p Пароль. Это важно. Мы же не хотим, чтобы кто угодно менял ip-адреса бесконтрольно. Устройство поменяет свой адрес только в том случае, если будет указан правильный пароль.
3. Апгрейд прошивки он-лайн
Достаточно запустить скрипт со знакомыми уже параметрами
и в устройство будет автоматически загружена новая прошивка, а после успешной загрузки устройство сразу же начнет нормальную работу.
Этот процесс занимает всего несколько секунд.
Вот такие новости. Если кратко.
Теперь можно обновлять прошивку устройства через локальную сеть без использования программатора.
Для этого необходимо загрузить в микроконтроллер бутлоадер. Эта единственная операция, которая еще потребует программатор.
Но сначала нужно правильно выставить 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
Пользоваться скриптом просто (ну по крайней мере мне так кажется).
После того, как прошит бутлоадер, в МК нет основной программы, работает только бутлоадер, поэтому прошиваем так
Код: Выделить всё
php megad-cfg.php --fw megad-328.hex -f
--fw имя файла прошивки
-f параметр, отвечающий за прошивку _чистого_ устройства, в режиме, когда работает только бутлоадер
После того, как прошивка залита, бутлоадер автоматически передает управление основной программе.
Теперь интересное в новой прошивке.
1. Все устройства в локальной сети можно просканировать командой
Код: Выделить всё
php megad-cfg.php --scan
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
Этот процесс занимает всего несколько секунд.
Вот такие новости. Если кратко.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Круто, а новые megad пойдут уже с bootloder'ом?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Да, новая партия, которая будет доступна предположительно недели через две-три, будет идти уже с загрузчиком. Контроллеры (интерфейсные модули) получат версию 5.1, что будет говорить не об аппаратных изменениях, а о наличии загрузчика.
Упомянутый мною PHP-скрипт может с незначительными правками быть адаптирован из консольного скрипта в Web. Таким образом его можно интегрировать в домашний Web-интерфейс. Думаю, я в будущем встрою его в MegaD Panel.
Упомянутый мною PHP-скрипт может с незначительными правками быть адаптирован из консольного скрипта в Web. Таким образом его можно интегрировать в домашний Web-интерфейс. Думаю, я в будущем встрою его в MegaD Panel.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Доброго времени суток, уважаемый Andrey_B.
А нельзя ли здесь выложить исходники прошивки 3.14 ?
А нельзя ли здесь выложить исходники прошивки 3.14 ?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Спасибо! Особенно за смену IP
раньше постоянно приходилось компиллить самому, поскольку сеть не .0.ххх а .1.ххх
к своему стыду, не особо дружу с fuse-bits...
раньше постоянно приходилось компиллить самому, поскольку сеть не .0.ххх а .1.ххх
поскольку устройства отличаются, можно поподробнее, какой именно параметр нужно включить? Относительно версий без загрузчика. BOOTSZ1?Andrey_B писал(а): Но сначала нужно правильно выставить fuse-bits.
Low: 0x60
High: 0xD8
к своему стыду, не особо дружу с fuse-bits...
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
По умолчанию МК Atmega328P имеет следующие установки fuse bits
Low: 0x62
High: 0xD9
Внутренний генератор
Мы меняем на внешний генератор и получаем (CKSEL=0000 SUT=10)
Low: 0x60
High: 0xD9
Это установки MegaD-328 по умолчанию
Теперь говорим, что надо начать выполнение программы не с адреса 0x0000, а с адреса 0x3800, где размещен загрузчик (BOOTRST=0 и BOOTSZ=00)
Получаем
Low: 0x60
High: 0xD8
По-моему, так
Low: 0x62
High: 0xD9
Внутренний генератор
Мы меняем на внешний генератор и получаем (CKSEL=0000 SUT=10)
Low: 0x60
High: 0xD9
Это установки MegaD-328 по умолчанию
Теперь говорим, что надо начать выполнение программы не с адреса 0x0000, а с адреса 0x3800, где размещен загрузчик (BOOTRST=0 и BOOTSZ=00)
Получаем
Low: 0x60
High: 0xD8
По-моему, так
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Я еще не добрался проверить, но думал что скрипт вызывается через web страницу на сервере, а как его через консоль вызывать на XP, куда файл ложить и как запускать?Andrey_B писал(а): Упомянутый мною PHP-скрипт может с незначительными правками быть адаптирован из консольного скрипта в Web. Таким образом его можно интегрировать в домашний Web-интерфейс. Думаю, я в будущем встрою его в MegaD Panel.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Urbas81, положить скрипт можно куда угодно, все параметры запуска я описал выше.
Нужно только чтобы на XP был установлен PHP. Если путь к php.exe прописан в окружении PATH, то можно вызывать так
php.exe megad-cfg.php [параметры]
Если не прописан, то полный путь к php.exe
Нужно только чтобы на XP был установлен PHP. Если путь к php.exe прописан в окружении PATH, то можно вызывать так
php.exe megad-cfg.php [параметры]
Если не прописан, то полный путь к php.exe
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Что-то не получается, пишет Connecting... и тишина.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Urbas81, проверить работу скрипта в Windows XP смогу завтра.
Установлен ли у вас загрузчик, прописаны ли fuse-bits, загружена ли новая прошивка? С какими ключами запускается скрипт?
Установлен ли у вас загрузчик, прописаны ли fuse-bits, загружена ли новая прошивка? С какими ключами запускается скрипт?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
У меня аналогично под Debian. При этом SHFlasher от DOCSIMUS устройство видит, и я даже успешно прошил его. Не работает также --scan и смена IP, пишет "Device with IP-address 192.168.0.14 not found!", при том что этот адрес пингуется.Urbas81 писал(а):Что-то не получается, пишет Connecting... и тишина.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
AlexZ, хочу заметить, что megad-cfg.php работает только если в устройстве уже установлена новая прошивка 3.14 (ну и выше).
Если в устройство залита 3.14, а megad-cfg.php --scan ничего не выводит, тогда интересно посмотреть вывод tcpdump (в момент запуска megad-cfg.php --scan)
tcpdump -i eth0 -n host [IP-компьютера]
и
tcpdump -i eth0 -n host [IP-устройства]
изменить eth0 на свой в случае, если у вас другой.
megad-cfg.php --scan - ничего не покажет, если залит только загрузчик (хотя наверное это надо исправить) и не залита прошивка.
Если в устройство залита 3.14, а megad-cfg.php --scan ничего не выводит, тогда интересно посмотреть вывод tcpdump (в момент запуска megad-cfg.php --scan)
tcpdump -i eth0 -n host [IP-компьютера]
и
tcpdump -i eth0 -n host [IP-устройства]
изменить eth0 на свой в случае, если у вас другой.
megad-cfg.php --scan - ничего не покажет, если залит только загрузчик (хотя наверное это надо исправить) и не залита прошивка.
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
Прошивка 3.14b1.
При megad-cfg.php --scan
tcpdump -i eth0 -n host [IP-устройства] - пусто
tcpdump -i eth0 -n host [IP-компьютера] - широковещательных запросов (с 255 на конце) нет, мы ведь их ищем?
При megad-cfg.php --scan
tcpdump -i eth0 -n host [IP-устройства] - пусто
tcpdump -i eth0 -n host [IP-компьютера] - широковещательных запросов (с 255 на конце) нет, мы ведь их ищем?
Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)
AlexZ, скрипт запускается из консоли, под рутом? Включен ли вывод ошибок в конфигурации php cli (error_reporting, display_errors)?
При запуске скрипта, моргает ли светодиод активности на RJ-45 разъеме?
При запуске скрипта, моргает ли светодиод активности на RJ-45 разъеме?