Обновление прошивки WiFi Shield
Узнайте, как обновить прошивку для вашего Arduino WiFi Shield.
WiFi Shield обеспечивает беспроводное подключение по стандарту IEEE 802.11 b/g через модуль HDG204 (или HDG104). Стек TCP/IP и API для библиотеки WiFi управляются микроконтроллером AT32UC3A1512 (или AT32UC3A1256), сокращённо AT32UC3, расположенным на плате. Ваш Arduino подключается к плате через SPI с помощью библиотеки WiFi.
Как модуль AT32UC3, так и модули HDG204/HDG104 имеют прошивку, обновляемую через разъём mini USB.
В этом руководстве показано, как обновить:
Прошивку WiFi-модуля HDG204/HDG104, когда производитель предоставляет новый бинарный файл прошивки для своего устройства.
Прошивку AT32UC3, когда от Arduino доступна новая версия. В качестве альтернативы, если вы опытный программист на C, вы можете настроить официальный исходный код для создания собственной прошивки. Исходный код доступен в репозитории библиотеки WiFi.
Предупреждение
При обновлении прошивки WiFi Shield не должен быть подключён к плате Arduino.
Обновление прошивки на устройствах — это двухэтапный процесс:
Прошивка HDG204/HDG104 называется
wifi_dnld.elf. Модуль H&D не имеет статической памяти, поэтому вы загрузите его прошивку в контроллер AT32UC3, а затем AT32UC3 перенесёт прошивку в выделенную флэш-память модуля HDG204.После загрузки прошивки для HDG204/HDG104 вы готовы загрузить прошивку WiFi Shield для AT32UC3. Файл
wifiHD.elfсодержит приложение для контроллера.
Загрузка DFU-программатора
Вам потребуется дополнительное программное обеспечение для обновления кода на 32UC3.
Windows: Скачайте программатор Atmel Flip.
Mac: Установите MacPorts, следуя инструкциям на этой странице. После установки MacPorts откройте Terminal и введите:
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-programmer
или
sudo aptitude install dfu-programmer
в зависимости от вашего дистрибутива.
Загрузка обновлённой прошивки для AT32UC3A1512/AT32UC3A1256
Последняя версия доступна здесь. Выберите прошивку WiFi Shield.
Прошивка также находится в папке Arduino IDE по пути /hardware/avr/arduino/firmwares/wifishield. На macOS щёлкните правой кнопкой мыши (или Command+клик) по приложению Arduino и выберите «Показать содержимое пакета», чтобы найти эту папку.
Процедура для Windows
На Windows необходимо установить драйверы AVR 32. В Windows используйте программу Flip, предоставляемую Atmel, для программирования устройства в режиме DFU (Device Firmware Update). Flip предоставляет утилиту batchisp, которую вы будете использовать для обновления. После установки Flip откройте командную строку (CMD) и перейдите к следующему пути внутри каталога установки Flip, обычно:
cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin
но это зависит от места установки программного обеспечения Atmel. Теперь вы готовы загрузить прошивку на плату.
Примечание
Flip требует 32-битную JRE. 64-битная JRE не работает.
Подключите перемычку 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
в зависимости от используемой микросхемы.
Для загрузки прошивки WiFi-модуля 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
в зависимости от используемой микросхемы.
Для загрузки прошивки WiFi Shield на AT32UC3A1512/AT32UC3A1256.
После завершения обновления вы можете снять перемычку J3 и перезапустить плату. Теперь она готова к использованию. Смотрите раздел «Дополнительно» внизу этой страницы для получения информации о проверке успешности обновления прошивки.
Процедура для Linux и Mac
На Linux и Mac мы написали скрипт, который автоматизирует процесс. Скрипт — это утилита командной строки, поэтому для его использования вам нужно открыть терминал в вашей системе.
Вы можете найти скрипт внутри вашей IDE по следующему пути: ~/arduino1.x.x/hardware/avr/arduino/firmwares/wifishield/scripts
Скрипт обновления WiFi Shield также использует dfu-programmer, который необходимо предварительно установить на вашу систему (убедитесь, что версия 0.5.4 или новее).
Подключите перемычку к разъёму J3, чтобы перевести плату в режим программирования. Затем подключите USB-кабель к разъёму mini USB на плате.
Откройте окно терминала, перейдите к папке со скриптом и введите следующее для получения справки:
Mac:
./ArduinoWifiShield_upgrade.sh -hLinux:
sudo ./ArduinoWifiShield_upgrade.sh -h
Примечание
На Linux необходимо запускать скрипт с правами root для корректного доступа к USB DFU-периферии.
С параметром -a вы передаёте скрипту текущий путь установки Arduino, например: /home/user/Coding
С параметром -f вы выбираете, какую прошивку установить:
shield— обновить только прошивку платыall— обновить обе прошивки
Совет
Для проверки успешности обновления WiFi Shield вы можете подключить адаптер USB-Serial к разъёму FTDI и проверить в терминале отладки, содержит ли стартовое сообщение обновлённую дату. Подробнее об опции отладки через Serial смотрите на соответствующей странице.