Arduino:Хакинг/Обновление прошивки Arduino WiFi Shield: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Обновление прошивки Arduino WiFi Shield<ref>[https://www.arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading www.arduino.cc - Upgrading the WiFi shield firmware]</ref>=
=Обновление прошивки Arduino WiFi Shield<ref>[https://www.arduino.cc/en/Hacking/WiFiShieldFirmwareUpgrading www.arduino.cc - Upgrading the WiFi shield firmware]</ref>=
Строка 33: Строка 33:
Устанавливаем '''MacPorts''' согласно [https://www.macports.org/install.php#pkg этим инструкциям]. Установив, открываем терминал и пишем там:
Устанавливаем '''MacPorts''' согласно [https://www.macports.org/install.php#pkg этим инструкциям]. Установив, открываем терминал и пишем там:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
sudo port install dfu-programmer
sudo port install dfu-programmer
</syntaxhighlight>
</syntaxhighlight>
Строка 39: Строка 39:
Чтобы обновить '''MacPorts''':
Чтобы обновить '''MacPorts''':


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
sudo port selfupdate
sudo port selfupdate
</syntaxhighlight>
</syntaxhighlight>
Строка 45: Строка 45:
Чтобы обновить '''dfu'''-programmer и другие порты до последней версии:
Чтобы обновить '''dfu'''-programmer и другие порты до последней версии:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
sudo port upgrade outdated
sudo port upgrade outdated
</syntaxhighlight>
</syntaxhighlight>
Строка 57: Строка 57:
В командной строке пишем  
В командной строке пишем  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
sudo apt-get install dfu-programme
sudo apt-get install dfu-programme
</syntaxhighlight>
</syntaxhighlight>
Строка 63: Строка 63:
или  
или  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
sudo aptitude install dfu-programmer  
sudo aptitude install dfu-programmer  
</syntaxhighlight>
</syntaxhighlight>
Строка 79: Строка 79:
На '''Windows''' нужно установить [https://www.arduino.cc/en/uploads/Hacking/AVR32_USB_Driver.zip драйвер AVR 32]. Также нужно воспользоваться программой '''FLIP''' от '''Atmel''' – она позволяет программировать чип при помощи режима '''DFU''' (расшифровывается как '''«device firmware update»''', т.е. '''«обновление прошивки на устройстве»'''). Вместе с '''FLIP''' идет утилита '''batchisp''' – именно ее вы и будете использовать для апгрейда. Установив '''FLIP''', открываем командную строку и переходим к папке  
На '''Windows''' нужно установить [https://www.arduino.cc/en/uploads/Hacking/AVR32_USB_Driver.zip драйвер AVR 32]. Также нужно воспользоваться программой '''FLIP''' от '''Atmel''' – она позволяет программировать чип при помощи режима '''DFU''' (расшифровывается как '''«device firmware update»''', т.е. '''«обновление прошивки на устройстве»'''). Вместе с '''FLIP''' идет утилита '''batchisp''' – именно ее вы и будете использовать для апгрейда. Установив '''FLIP''', открываем командную строку и переходим к папке  


<syntaxhighlight lang="dos" enclose="div">
<syntaxhighlight lang="dos">
cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin
cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin
</syntaxhighlight>
</syntaxhighlight>
Строка 89: Строка 89:
Чтобы перевести '''«шилд»''' в режим '''DFU''', соединяем перемычку '''J3'''. Затем подключаем '''«шилд»''' к компьютеру через сокет '''mini USB'''. В командной строке пишем...
Чтобы перевести '''«шилд»''' в режим '''DFU''', соединяем перемычку '''J3'''. Затем подключаем '''«шилд»''' к компьютеру через сокет '''mini USB'''. В командной строке пишем...


<syntaxhighlight lang="dos" enclose="div">
<syntaxhighlight lang="dos">
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0
</syntaxhighlight>
</syntaxhighlight>
Строка 95: Строка 95:
...или...
...или...


<syntaxhighlight lang="dos" enclose="div">
<syntaxhighlight lang="dos">
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0
</syntaxhighlight>
</syntaxhighlight>
Строка 103: Строка 103:
Чтобы загрузить прошивку модуля '''HDG204/HDG104''' на '''DataFlash''', пишем...
Чтобы загрузить прошивку модуля '''HDG204/HDG104''' на '''DataFlash''', пишем...


<syntaxhighlight lang="dos" enclose="div">
<syntaxhighlight lang="dos">
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0
batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0
</syntaxhighlight>
</syntaxhighlight>
Строка 109: Строка 109:
...или...
...или...


<syntaxhighlight lang="dos" enclose="div">
<syntaxhighlight lang="dos">
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0
batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0
</syntaxhighlight>
</syntaxhighlight>
Строка 123: Строка 123:
Нужный скрипт находится в '''IDE Arduino''' по следующему пути:
Нужный скрипт находится в '''IDE Arduino''' по следующему пути:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
~/arduino1.x.x/hardware/avr/arduino/firmwares/wifishield/scripts
~/arduino1.x.x/hardware/avr/arduino/firmwares/wifishield/scripts
</syntaxhighlight>
</syntaxhighlight>
Строка 139: Строка 139:
При помощи параметра '''-a''' вы показываете скрипту путь к месту, куда установлена '''IDE Arduino'''. Например:
При помощи параметра '''-a''' вы показываете скрипту путь к месту, куда установлена '''IDE Arduino'''. Например:


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
/home/user/Coding
/home/user/Coding
</syntaxhighlight>
</syntaxhighlight>

Версия от 12:42, 20 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Обновление прошивки Arduino WiFi Shield[1]

«Шилд» Arduino WiFi Shield оснащен модулем HDG204 (или HDG104), который наделяет его функцией беспроводной связи через стандарт IEEE 802.11 b/g. Стек TCP/IP и API для библиотеки WiFi управляются при помощи чипа ATmega32UC3A1512 (или ATmega32UC3A1256), который также называют ATmega32UC3. Плата Arduino подключается к «шилду» при помощи интерфейса SPI и библиотеки WiFi.

Чип ATmega32UC3 и модуль HDG204/HDG104 работают при помощи прошивки, которую можно обновить через коннектор mini USB.

Это руководство как раз рассказывает о том, как сделать это обновление.

  • Новая бинарная прошивка для HDG204/HDG104 выпускается производителем.
  • Новую версию прошивки для ATmega32UC3 можно скачать на GitHub-репозитории Arduino. Кроме того, если вы эксперт по C, то можете видоизменить официальный исходный код и сделать собственную версию прошивки!

При обновлении прошивки WiFi Shield не должен быть подключен к плате Arduino.

Обновление прошивки на этих устройствах выполняется в два этапа:

  • Прошивка для модуля HDG204/HDG104 называется «wifi_dnld.elf». У него нет статической памяти, поэтому прошивку сначала нужно будет загрузить на контроллер ATmega32UC3, после чего ATmega32UC3 передаст эту прошивку на выделенную flash-память модуля HDG204.
  • Когда прошивка для HDG204/HDG104 будет загружена, можно будет загружать прошивку на ATmega32UC3. Она называется «wifiHD.elf».

Загрузка DFU-программатора

Для обновления кода на ATmega32UC3 понадобится дополнительное ПО.

Windows

Загружаем программу FLIP от Atmel отсюда.

Mac

Устанавливаем MacPorts согласно этим инструкциям. Установив, открываем терминал и пишем там:

sudo port install dfu-programmer

Чтобы обновить MacPorts:

sudo port selfupdate

Чтобы обновить dfu-programmer и другие порты до последней версии:

sudo port upgrade outdated

Убедитесь, что используете dfu-programmer версии 0.5.4 или новее.

Примечание: Если вы раньше никогда не пользовались sudo, система запросит у вас пароль. Используйте тот же пароль, которым логинитесь в Mac. Команда sudo позволяет запускать команды от лица администратора.

Linux

В командной строке пишем

sudo apt-get install dfu-programme

или

sudo aptitude install dfu-programmer

(в зависимости от дистрибутива).

Загружаем обновленную прошивку для ATmega32UC3A1256

Последнюю версию можно загрузить здесь. Выберите пункт «wifishield».

Прошивку также можно найти в IDE Arduino, в папке «/hardware/avr/arduino/firmwares/wifishield». На OSX, чтобы увидеть эту папку, кликните правой кнопкой (либо зажмите клавишу Command и кликните левой кнопкой мыши) по иконке IDE Arduino и выберите пункт «Показать содержимое пакета».

Процедура на Windows

На Windows нужно установить драйвер AVR 32. Также нужно воспользоваться программой FLIP от Atmel – она позволяет программировать чип при помощи режима DFU (расшифровывается как «device firmware update», т.е. «обновление прошивки на устройстве»). Вместе с FLIP идет утилита batchisp – именно ее вы и будете использовать для апгрейда. Установив FLIP, открываем командную строку и переходим к папке

cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin

, хотя ее месторасположение зависит от места, куда вы устанавливаете ПО от Atmel. Теперь можно приступать к загрузке прошивки на «шилд».

Примечание: Программе FLIP нужна 32-битная JRE. 64-битная JRE работать не будет.

Чтобы перевести «шилд» в режим DFU, соединяем перемычку J3. Затем подключаем «шилд» к компьютеру через сокет mini USB. В командной строке пишем...

batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0

...или...

batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifi_dnld.elf program verify start reset 0

Какой именно вариант использовать – зависит от чипа.

Чтобы загрузить прошивку модуля HDG204/HDG104 на DataFlash, пишем...

batchisp.exe -device AT32UC3A1512 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0

...или...

batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/avr/arduino/firmwares/wifishield/binary/wifiHD.elf program verify start reset 0

Какой именно вариант использовать – зависит от чипа.

Сделав апгрейд, снимаем перемычку J3 и перезапускаем «шилд». Теперь он готов к использованию. О том, как проверить, успешно ли прошел апгрейд, смотрите в разделе «Дополнительно», который находится в самом низу статьи.

Процедура на Linux и Mac

На этих платформах нужно использовать скрипт, служащий автоматизации процесса. Скрипт – это утилита командной строки, т.е. чтобы использовать его, вам нужно открыть на своей системе терминал.

Нужный скрипт находится в IDE Arduino по следующему пути:

~/arduino1.x.x/hardware/avr/arduino/firmwares/wifishield/scripts

Скрипту для обновления прошивки на WiFi Shield также требуется dfu-programmer. Установите его, прежде, чем начнете работать со скриптом, и убедитесь, что его версия – это 0.5.4 или выше.

Подключите перемычку к коннектору J3 – это переключит «шилд» в режим программирования. Затем подключите USB-кабель к сокету mini USB на «шилде».

Откройте терминал, перейдите к папке, куда сохранен скрипт, и впишите строку, указанную ниже. Не забудьте в конце флаг -h – он покажет справку.

  • Mac:./ArduinoWifiShield_upgrade.sh –h
  • Linux:sudo ./ArduinoWifiShield_upgrade.sh –h

На Linux этот скрипт нужно запускать от root-пользователя – чтобы получить правильный доступ к периферийным USB DFU устройствам.

При помощи параметра -a вы показываете скрипту путь к месту, куда установлена IDE Arduino. Например:

/home/user/Coding

При помощи параметра -f вы можете выбрать, какую именно прошивку устанавливать:

  • shield обновляет только прошивку «шилда»
  • all обновляет обе прошивки

Дополнительно

Чтобы проверить, обновилась ли прошивка на «шилде», нужно подключить к сокету адаптер FTDI, конвертирующий USB-данные в последовательные данные, открыть терминал и посмотреть, содержит ли стартовое сообщение обновленную дату. Об отладке через последовательную коммуникацию читайте на соответствующей странице.

См.также

Внешние ссылки