Arduino:Хакинг/Обновление прошивки Arduino WiFi Shield

Материал из Онлайн справочника
Версия от 21:27, 4 марта 2017; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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


Черновик


Обновление прошивки 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-данные в последовательные данные, открыть терминал и посмотреть, содержит ли стартовое сообщение обновленную дату. Об отладке через последовательную коммуникацию читайте на соответствующей странице.

См.также

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