Прошивка MegaD-328 (релизы, обсуждения, предложения)

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 18 дек 2013, 17:36

Данный топик является ответвлением большой темы "Умный Дом по Ethernet" и создается в целях упорядочения информации по данному вопросу.
Здесь предлагается обсуждать вопросы, связанные с прошивкой "Мегадевайса" и проекта MegaD-328. Также здесь я буду публиковать информацию об изменениях в прошивке.

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 18 дек 2013, 17:38

plusQ писал(а):возможно ли небольшое дополнение к прошивке
при настройке девайса на исполнение скрипта на сервере или команды NetAction, в случае отсутствия физического подключения к сети, исполнение команды в поле Action немедленно
3.12beta1
При отсутствии линка (физической связи с сетью Ethernet) команды по умолчанию выполняются сразу, соединение с сервером не выполняется.
http://ab-log.ru/files/File/ip_manager3 ... a1_hex.zip
http://ab-log.ru/files/File/ip_manager3 ... _beta1.zip

Alexander
Сообщения: 23
Зарегистрирован: 18 окт 2013, 14:24

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Alexander » 19 дек 2013, 16:26

Андрей, не подскажете, чем Вы компилируете прошивки?
У меня странная ситуация. Моделирую в протеусе на виртуальной машине. Гружу бинарник - все работает, только приходится частоту ставить 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

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 19 дек 2013, 17:17


Alexander
Сообщения: 23
Зарегистрирован: 18 окт 2013, 14:24

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Alexander » 19 дек 2013, 17:48

Андрей, премного благодарен!
Неожиданно, как-то. Обновил версию avr-gcc до 4.7.2 и avr-libc до 1.8.0-2 - все собирается и работает.
При этом никаких ерроров и даже ворнингов не было со старыми пакетами.

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 24 янв 2014, 19:47

Итак, по мотивам произведений уважаемого пользователя 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

Пользоваться скриптом просто (ну по крайней мере мне так кажется).
После того, как прошит бутлоадер, в МК нет основной программы, работает только бутлоадер, поэтому прошиваем так

Код: Выделить всё

php megad-cfg.php --fw megad-328.hex -f
где
--fw имя файла прошивки
-f параметр, отвечающий за прошивку _чистого_ устройства, в режиме, когда работает только бутлоадер

После того, как прошивка залита, бутлоадер автоматически передает управление основной программе.

Теперь интересное в новой прошивке.

1. Все устройства в локальной сети можно просканировать командой

Код: Выделить всё

php megad-cfg.php --scan
Скрипт отобразит 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
и в устройство будет автоматически загружена новая прошивка, а после успешной загрузки устройство сразу же начнет нормальную работу.
Этот процесс занимает всего несколько секунд.

Вот такие новости. Если кратко.

vtec
Сообщения: 459
Зарегистрирован: 19 сен 2011, 09:28

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение vtec » 25 янв 2014, 11:49

Круто, а новые megad пойдут уже с bootloder'ом?

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 25 янв 2014, 12:18

Да, новая партия, которая будет доступна предположительно недели через две-три, будет идти уже с загрузчиком. Контроллеры (интерфейсные модули) получат версию 5.1, что будет говорить не об аппаратных изменениях, а о наличии загрузчика.

Упомянутый мною PHP-скрипт может с незначительными правками быть адаптирован из консольного скрипта в Web. Таким образом его можно интегрировать в домашний Web-интерфейс. Думаю, я в будущем встрою его в MegaD Panel.

dimik2000
Сообщения: 34
Зарегистрирован: 13 сен 2012, 12:51

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение dimik2000 » 25 янв 2014, 13:38

Доброго времени суток, уважаемый Andrey_B.
А нельзя ли здесь выложить исходники прошивки 3.14 ?


Dron
Сообщения: 207
Зарегистрирован: 08 мар 2013, 13:00

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Dron » 25 янв 2014, 15:05

Спасибо! Особенно за смену IP ;)
раньше постоянно приходилось компиллить самому, поскольку сеть не .0.ххх а .1.ххх
Andrey_B писал(а): Но сначала нужно правильно выставить fuse-bits.
Low: 0x60
High: 0xD8
поскольку устройства отличаются, можно поподробнее, какой именно параметр нужно включить? Относительно версий без загрузчика. BOOTSZ1?
к своему стыду, не особо дружу с fuse-bits...

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 25 янв 2014, 16:23

По умолчанию МК 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
По-моему, так ;)

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Urbas81 » 25 янв 2014, 18:56

Andrey_B писал(а): Упомянутый мною PHP-скрипт может с незначительными правками быть адаптирован из консольного скрипта в Web. Таким образом его можно интегрировать в домашний Web-интерфейс. Думаю, я в будущем встрою его в MegaD Panel.
Я еще не добрался проверить, но думал что скрипт вызывается через web страницу на сервере, а как его через консоль вызывать на XP, куда файл ложить и как запускать?

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 25 янв 2014, 21:31

Urbas81, положить скрипт можно куда угодно, все параметры запуска я описал выше.
Нужно только чтобы на XP был установлен PHP. Если путь к php.exe прописан в окружении PATH, то можно вызывать так
php.exe megad-cfg.php [параметры]
Если не прописан, то полный путь к php.exe

Urbas81
Сообщения: 313
Зарегистрирован: 28 авг 2012, 14:22

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Urbas81 » 25 янв 2014, 23:00

Что-то не получается, пишет Connecting... и тишина.

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 26 янв 2014, 10:31

Urbas81, проверить работу скрипта в Windows XP смогу завтра.
Установлен ли у вас загрузчик, прописаны ли fuse-bits, загружена ли новая прошивка? С какими ключами запускается скрипт?

AlexZ
Сообщения: 6
Зарегистрирован: 04 фев 2013, 21:26

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение AlexZ » 26 янв 2014, 11:57

Urbas81 писал(а):Что-то не получается, пишет Connecting... и тишина.
У меня аналогично под Debian. При этом SHFlasher от DOCSIMUS устройство видит, и я даже успешно прошил его. Не работает также --scan и смена IP, пишет "Device with IP-address 192.168.0.14 not found!", при том что этот адрес пингуется.

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 26 янв 2014, 12:22

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 - ничего не покажет, если залит только загрузчик (хотя наверное это надо исправить) и не залита прошивка.

AlexZ
Сообщения: 6
Зарегистрирован: 04 фев 2013, 21:26

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение AlexZ » 26 янв 2014, 13:01

Прошивка 3.14b1.
При megad-cfg.php --scan
tcpdump -i eth0 -n host [IP-устройства] - пусто
tcpdump -i eth0 -n host [IP-компьютера] - широковещательных запросов (с 255 на конце) нет, мы ведь их ищем?

Andrey_B
Администратор
Сообщения: 5325
Зарегистрирован: 18 мар 2011, 12:06

Re: Прошивка MegaD-328 (релизы, обсуждения, предложения)

Сообщение Andrey_B » 26 янв 2014, 13:19

AlexZ, скрипт запускается из консоли, под рутом? Включен ли вывод ошибок в конфигурации php cli (error_reporting, display_errors)?
При запуске скрипта, моргает ли светодиод активности на RJ-45 разъеме?

Ответить