Arduino:Хакинг/Обновление прошивки ATmega8U2 и ATmega16U2
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Черновик |
Обновление прошивки ATmega8U2 и ATmega16U2[1]
Чип ATmega16u2 на плате Arduino служит мостом между USB-портом компьютера и последовательным портом главного процессора. Предыдущие версии Uno и Mega оснащались чипом ATmega8u2. Эти чипы работают при помощи ПО, которое называется «прошивкой» или «зашитой программой» – это ПО, которое программируется в чип «намертво» и поменять его нельзя. Поменять нельзя, но зато можно обновить! Это можно сделать при помощи специального USB-протокола под названием DFU (расшифровывается как «device firmware update», т.е. «обновление прошивки на устройстве»).
Ниже – шаги, описывающие обновление прошивки на Atmega16u2.
Проверяем, нужна ли прошивка
Платы Arduino Uno и Mega 2560 поставляются с обновленной версией прошивки ATmega16u2. Чтобы проверить версию прошивки на плате, подключите ее к компьютеру и следуйте следующим инструкциям (они разнятся в зависимости от ОС):
- На Windows (до «семерки»): Открываем «Диспетчер устройств» и ищем пункт «Порты» – плата должна быть именно там. Кликаем на нее правой кнопкой и выбираем пункт «Свойства». Открываем вкладку «Драйвер», а затем кликаем по кнопке «Сведения». В одном из свойств вы увидите VID, PID и номер версии.
- На Mac OS X: Запустите программу «Информация о системе» (например, выбрав пункт «Об этом Mac» в меню Apple, а затем кликнув на кнопку «Подробнее»), перейдите к пункту «USB» и кликните на пункте для платы Arduino. Версия прошивки будет указана в пункте «версия» (например, «0.01» или «0001»).
Загружаем DFU-программатор
Это ПО для обновления прошивки.
Windows
Загрузить утилиту FLIP от Atmel можно здесь.
Mac
Следуя этим инструкциям, установливаем MacPorts. Установив, открываем окно терминала и вписываем туда
sudo port install dfu-programmer.
Примечание: Если вы никогда раньше не пользовались sudo, у вас запросят пароль. Используйте пароль, через который залогинились в Mac. Команда sudo позволяет запускать команды от лица администратора.
Linux
В командной строке впишите
sudo apt-get install dfu-programmer
или
sudo aptitude install dfu-programmer
(в зависимости от дистрибутива).
Загрузка обновленной прошивки
Последнюю версию можно скачать здесь.
Выберите версию, соответствующую вашей плате – либо «arduino-usbserial/Arduino-usbserial-uno.hex», либо «arduino-usbserial/Arduino-usbserial-mega.hex».
Прошивку также можно найти в IDE Arduino, в папке «/hardware/arduino/firmwares/arduino-usbserial». На OSX, чтобы найти эту папку, нужно правой кнопкой мыши кликнуть (либо зажать клавишу Command и кликнуть левой кнопкой мыши) по иконке IDE Arduino, а затем выбрать «Показать содержимое пакета».
Если ваша плата – это Arduino Uno R1
В этом случае нужно припаять резистор на 10 кОм (коричневый-черный-оранжевый) к задней части платы в том месте, которое показано на картинке.
Подключите Arduino к компьютеру при помощи USB-кабеля
Так же, как и при программировании.
Сбросьте 8u2 или 16u2
Чтобы сделать это, просто соедините контакт для сброса (Reset) с «землей» (Gnd). Эти контакты находятся рядом с USB-коннектором, как показано на картинке ниже. Просто соедините их ненадолго при помощи куска провода.
Чтобы проверить, сбросился ли чип, зайдите в IDE Arduino и посмотрите список последовательных портов. Если сброс прошел успешно, последовательного порта для вашей платы там быть не должно.
Программируем чип
Windows
Используем FLIP, чтоб загрузить файл с расширением «*.hex» на плату.
Mac и Linux
Будучи в окне терминала, переходим в директорию, где находится новая прошивка. Если вы сохранили ее в папке с загрузками, то нужно написать следующее:
cd Downloads/
Попав в нужную папку, пишем:
sudo dfu-programmer atmega16u2 erase
Когда эта команда выполнится, и перед вами снова будет командная строка, пишем:
sudo dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
И, наконец, пишем:
sudo dfu-programmer atmega16u2 reset
Примечание: Если ваша плата оснащена ATmega8u2, то в строке выше вместо atmega16u2 нужно вписать atmega8u2.
Отключите плату и снова подключите
По сути, все. Теперь на вашей плате новая прошивка. Зайдите в IDE Arduino и проверьте список последовательных портов. Ваш порт должен снова появиться.
Использование других прошивок
Чипы 8u2 и 16u2 достаточно гибки, поэтому позволяют использовать и другие прошивки, благодаря которым ваша плата может появиться на ПО компьютера как другой девайс (контроллер MIDI, HID и т.д.). Руководства смотрите в ссылках ниже:
- Проигрыватель нот MIDI при помощи прошивки MIDI
- [1] – прошивка, превращающая Arduino Uno в USB-джойстик, совместимый с PS3