Arduino:Хакинг/Обновление прошивки Arduino WiFi Shield
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Обновление прошивки 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-данные в последовательные данные, открыть терминал и посмотреть, содержит ли стартовое сообщение обновленную дату. Об отладке через последовательную коммуникацию читайте на соответствующей странице.
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |