- ARCAdaptor
- Прошиваем AVR ATMega в Windows 10
- Вместо предисловия
- Вариант решения проблемы
- Установка гостевой системы
- Устанавливаем гипервизор
- Разворачиваем виртуальную машину
- Дополнительные настройки
- USB-фильтр
- Настройка сети
- Запуск гостевой системы.
- Подклчение сетевого диска из хост-системы
- Прошивка из под виртуальной машины
- Подключаем программатор
- Прошиваем устройство
- Заключение
- Альтернативные прошивки для AVR910 by PROTTOSS, AVR-Doper, USBasp
- AVR-Doper
- Features
- More Information
ARCAdaptor
Всё в твоих руках
Прошиваем AVR ATMega в Windows 10
Вместо предисловия
С выходом Windows 10 жизнь пользователей, в целом, улучшилась, однако небольшая группа людей увлеченных “огребла” массу проблем, в частности с использованием самодельных USB устройств, как то программатор для AVR ATMega. Так, для Windows 10 весьма проблематично использовать USB-программаторы типа USBASP, UsbTinyISP и прочий “самодел” — для них просто физически нет “подписанных” драйверов.
Эта статья призвана хотя бы частично решить проблему прошивки “атмег” под современной операционной системой Windows 10
Вариант решения проблемы
Мы будем запускать виртуальную машину с очень маленьким дистрибутивом Linux, которая позволит без проблем “перехватить” наш программатор (в нашем случае — ARCAdaptor в режиме bootloader’a). Небольшие изменения в конфигурации виртуальной машины позволят использовать и другие “самодельные” USB-программаторы, для которых нет драйверов для Windows 10, но при этом они без проблем работают в Linux через libUSB.
Установка гостевой системы
При работе с виртуальной машиной используется термин “хост-машина” и “гостевая машина”. В нашем случае хостом будет выступать Windows 10, а “гостем” — Alpine Linux.
Следует отметить, что все операции, описанные здесь проводились на планшете Asus T100TA под управлением 32битной Windows 10. Это довольно популярное и не самое мощное по начинке устройство — а значит — повторить этот опыт можно будет даже на “слабых” компьютерах.
Устанавливаем гипервизор
Гипервизор — это такое программное обеспечение, которе отвечает за работу виртуальных машин. В нашем случае мы будем использовать Virtual Box — он бесплатен и обладает нужной функциональностью (проброс USB-устройств в гостевую систему).
Качаем последнюю версию с сайта:
Ещё нам понадобится пакет дополнений для корректной работы USB — его можно выгрузить сразу же, и установить потом после установки основной части.
Уставновите Virtual Box, следуя указаниям системы:
После установки — кликните по скачанному Extension pack — система предложит установить его, и после установки вы увидите вот такое окно:
Всё готово для развертывания системы.
Разворачиваем виртуальную машину
Качаем образ виртуальной машины в формате OVA — вот отсюда.
Следующий шаг — нам нужно импортировать этот образ в наш VirtualBox. Воспользуемся командой из меню.
В принципе, никаких изменений при импорте вносить не предполагается. Процесс завершается за несколько секунд — образ системы имеет минимальные размеры.
Дополнительные настройки
Перед стартом нужно обязательно кое-что проверить и перенастроить.
USB-фильтр
Это очень важный параметр. Проверим его перед первым стартом. В настройках виртуальной машины должен быть вот такой вот фильтр — он уже настроен в начальном образе.
Если его нет, то его нужно создать — в качестве параметра указать пару Vendor-id и Device-id — они задаются в шестнадцатиричном формате — 16c0 и 05dc соответственно.
Настройка сети
Изначально образ виртуальной машины поставляется с настройкой сети в режиме NAT — чтобы импорт проходил без ошибок. Скорее всего, вы подключены к домашней сети, так что давайте настроим сеть так, чтобы можно было работать и “гонять” наши файлы прошивок из Windows в Linux.
Для этого переведем сеть в режим Bridge.
Выбираем “Bridge”. Убеждаемся что “мост” у нас наведен с подключенной сетевой картой. В нашем случае — наш WiFi адаптер в устройстве.
Вот примерно такой:
Теперь при включении виртуальная машина получит IP адрес также, как ваш компьютер (конфигурация праведлива для большинства пользователей).
Всё готово для старта.
Запуск гостевой системы.
Решительно нажимаем кнопку “запустить виртуальную машину” и через некоторое время наблюдаем приглашение к входу в систему.
В качестве логина используем arc, в качестве пароля adaptor.
Безусловно, пользовтелям, привыкшим к оконному интерфейсу работа в Linux может показаться немного непривычной, но во-первых это не сложно, во-вторых весьма расширяет горизонты 🙂
Пришла пора “скинуть” нашу прошивку на Linux
Подклчение сетевого диска из хост-системы
Мы подключим сетевой диск и сможем просто перебрасывать файлы для прошивки в виртуальную машину для последущей записи в ARCAdaptor.
В принципе, все инструкции уже есть на скриншоте выше, при условии что мы используем bridged networking.
Переключимся в хост-машину. Откроем окно Windows explorer и введем адрес нашей виртуальной машины. Он виден после логина (зеленый текст), а если нет — запустите команду в Linux:
Введем его в Windows Explorer в формате \\xxx.yyy.zzz.aaa :
Система спросит логин и пароль — используем наши arc и adaptor в качестве логина и пароля. Если всё хорошо — мы видим список сетевых папок нашей виртуальной машины, точнее одну папку — «share«.
Откройте её и перепишите туда файлы .hex, которые планируете прошить.
Переключитесь в виртуальную машину — эти файлы теперь доступны там. Команда ls -la share покажет нам содержимое.
Все готово для прошивки!
Прошивка из под виртуальной машины
Подключаем программатор
Опять-таки, в нашем случае это ARCAdaptor, переведенный в режим программирования. После включения вы, возможно, увидите окно с установщиком драйверов от VirtualBox. Дождитесь установки. Когда установка закончена — дайте команду sudo lsusb (возможно придется ввести пароль “adaptor” ещё раз).
На скриншоте видно, что устройство USBAsp (наш ARCAdaptor в режим bootloader) видится в Linux.
Прошиваем устройство
Для удобства в виртуальную машину добавлена пара скриптов, предназначенных для прошивки ARCAdaptor:
Это просто “обёртки” для avrdude. Желающие могут ознакомиться с содержимым прямо на месте.
Итак, для записи прошивки — даём команду:
sudo flashprg.sh share/arcadaptor8.hex
Опять-таки после нажатия “Enter” может потребоваться ввод пароля (ибо используется команда sudo).
Для прошивки “конфигурации” используется команда flashconfig.sh
sudo flashconfig.sh share/arcadaptor8.eep
Ну а вот результат работы программатора:
Ну и вот “анимация” процесса прошивки:
Внимание! Как только устройство “прошьется”, оно будет пытаться “определиться” не в Linux, а в хост-системе. Если есть желание изменить это поведение — нужно добавить новый USB-фильтр в настройках виртуальной машины для ваших Vendor ID и Device ID.
Тоже самое относится и к другим программаторам — то есть если используется программатор USBTinyISP — нужно обязательно отредактировать фильтр (или создать новый) в настройках — подставить новые значения Vendor ID и Device ID.
Менять нужно вот эти поля:
Заключение
Вообще, использование “виртуалок” для разработки открыват перспективы весьма радужные — так, например установка и использование AVR-GCC в Linux гораздо более простое и “приятное”, чем в том же Windows.
Более того, разрабатывать можно “на ходу”, то есть установить Virtual Box на планшет с Windows и пользоваться где угодно.
Мы будем рады любым отзывам, а также найденным недочетам. Правда, расширение этого образа не предусмотрено, за исключением совсем уж вопиющих ошибок.
Никто не мешает вам создать собственную “девелоперскую” виртуалку на базе той же Ubuntu — лишь бы хватило место для образа :).
Альтернативные прошивки для AVR910 by PROTTOSS, AVR-Doper, USBasp
Дата публикации: 23 октября 2012 .
1. AVR-Doper
Довольно известный и популярный программатор, попытки портирования на форуме уже были, но к большому сожалению они затерялись в той большой ветке (было дело, искал целенаправленно, но не мог найти!). Но главное, что в тех прошивках так и не был исправлен глюк с таймаутами в avrdude и «работой через раз» в CodeVisionAVR.
Мой порт AVR-Doper для AVR910 сделан аккуратно, он не нарушает целостности исходников (т.е. там аккуратно добавлен AVR910, ничего не попорчено). Веселый баг с потерей USB-пакета также исправлен.
В целом прошивка работает так же, как и оригинальная: при подключении программатора появляется COM-порт, перемычка ‘low sck’ работает для понижения частоты, красный светодиод мигает при записи/стирании чипа, зеленый горит при «подключении к девайсу» (когда пины настраиваются как выходы), на выходе «LED» генерируется 1 МГц.
Существует 4 модификации прошивки:
а) Стандартная CDC (эмуляция COM-порта), без отладочного интерфейса. Рекомендуется в большинстве случаев.
б) CDC с отладочным интерфейсом — дополнительно к COM-порту реализован «свой» протокол для передачи информации через UART программатора (подробнее см. ниже).
в) Бездрайверное HID-устройство, без отл. интерфейса. Т.к. CDC на V-USB нарушает стандарт USB, иногда бывают проблемы с работой программатора (хоть и решаемые). HID стандарт не нарушает и не требует драйверов вообще. К сожалению, поддержка есть пока только в avrdude.
г) Бездрайверное HID-устройство с отл. интерфейсом.
Отладочный интерфейс предназначен для обмена данными между программируемым устройством и ПК. Для его работы нужно подключить RxD и TxD программатора к TxD и RxD устройства. Настроить в устройстве UART на 19200, 8N1. На ПК необходимо установить библиотеку libusb (подробнее см. архив в прошивками) и запустить файл avrdebug.exe (идет в комплекте с прошивками). При этом все, что отправляет устройство в UART, будет приходить в терминал, а все что набрано в терминале будет уходить в устройство.
2. USBasp
Также довольно известный простой программатор, очень похож на AVR910.
Прошивка работает так же, как и оригинальная, за исключением того, что не появляется COM-порт (программатор требует libusb, он идет в комплекте). Странно, что схема USBasp содержит 2 светодиода, но в прошивке использовался только один. Теперь работают оба (так же, как в AVR-Doper), плюс добавлена генерация 1 МГц на выходе «LED».
Этот программатор самый скоростной, однако в avrdude я иногда славливал глюк с неправильно прочитанным ID чипа (вроде как не критично, но кто знает).
Сравнение скоростей программаторов
Тесты проводились с avrdude с помощью заливки в ATMega8 тестовой прошивки размером
Програматор Чтение Запись
AVR910 2.5 кБ/с 0.5 кБ/с
Doper-CDC 0.47 кБ/с 0.44 кБ/с
Doper-HID 0.5 кБ/с 260 Б/с
USBasp 3 кБ/с 1.5 кБ/с
AVR-Doper
Features
- HVSP allows using RESET pin for I/O, which is especially beneficial on 8 and 14 pin devices.
- Simple hardware which can be built on a single sided PCB. No special USB chips are needed.
- Compatible to Atmel’s STK500 with built-in USB to Serial converter.
- Adjustable ISP clock allows flashing of devices clocked at very low rate, e.g. 32 kHz.
- ISP clock can be lowered with a jumper (if the programmer software does not support setting the ISP clock).
- Second USB to Serial converter for processing debug output from the target.
- HVSP connector compatible with HVProg, another STK500 compatible programmer (see www.der-hammer.info/hvprog/index_en.htm).
- Uses USB power supply, no external supply required.
- Firmware can be compiled to run on metaboard hardware and USBasp hardware.
- Open Source (including firmware and schematics).
More Information
More information about the project and all the sources for hardware, software and firmware can be found in the download below.
Note: Implementing a USB CDC device with V-USB violates some aspects of USB 1.1. CDC-Mode may therefore fail or be unreliable on some operating systems or computer hardware. Please look at the compatibility list included in the AVR-CDC project or test a simplified prototype on breadboard with your computer if you want to use CDC mode.
We recommend that you use AVR-Doper in HID mode instead, which has no such problem. This mode is supported by avrdude. More information about interface modes and their relative advantages can be found in the project description.