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

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


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

Uno-back-DFU-resistor.jpg

Подключите Arduino к компьютеру при помощи USB-кабеля

Так же, как и при программировании.

Сбросьте 8u2 или 16u2

Чтобы сделать это, просто соедините контакт для сброса (Reset) с «землей» (Gnd). Эти контакты находятся рядом с USB-коннектором, как показано на картинке ниже. Просто соедините их ненадолго при помощи куска провода.

Uno-front-DFU-reset.jpg

Чтобы проверить, сбросился ли чип, зайдите в 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 и т.д.). Руководства смотрите в ссылках ниже:

См.также

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