Usbasp драйвер для linux

Notes

четверг, 4 ноября 2010 г.

USBASP в Linux

Для программирования микроконтроллеров семейства AVR я использую программатор USBASP (хорошее описание тут: http://easyelectronics.ru/usb-programmator-avr-usbasp.html). Совместно с ним используется утилита AVRDUDE.

О некоторых подводных камнях работы с программатором в Linux я хочу рассказать.

Первое, что нужно проверить, после сборки и программирования программатора (хы) — так это узнать распознается устройстов ядром или нет.
Определить это можно в нескольких местах системы:

Вв-первых, выполнить команду sudo lsusb. Она выведет список подключенных устройств к шине usb. У меня выводит вот что:

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 046d:c019 Logitech, Inc. Optical Tilt Wheel Mouse
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 003: ID 08ff:1600 AuthenTec, Inc. AES1600
Bus 005 Device 002: ID 0b05:1751 ASUSTek Computer, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 006: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 005: ID 04f2:b033 Chicony Electronics Co., Ltd
Bus 002 Device 004: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
Bus 002 Device 002: ID 058f:6254 Alcor Micro Corp. USB Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Цветом я указал нужную строчку в выводе. Если этого нет, то придется начать танцы с бубном.

Примечание. У меня при определении возникли проблемы. Устройство определяется и работает нормально только через USB-хаб. Проверено на двух дешевых китайских хабах. В чем точно причина ткого явления пока не понятно.

В обоих случаях ядро сообщит о том, что к нему подключается, были ли проблемы и какой драйвер (модуль ядра) загружен.

Кроме того, если устройство обнаружилось и модуль ядра для него подгружен, то udev создает файл утсройства внутри /dev. В Ubuntu создается файл непонятно где. Тем не менее, работать с устройством при помощи avrdude можно только от root. Проблема решается созданием правила для udev. В каталоге /etc/udev/rules.d/ создается файл xx-usbasp.rules, где xx — произвольное число от 01 до 99. Я поставил 15.

Содержимое файла /etc/udev/rules.d/15-usbasp.rules:

# UDEV-style hotplug map for usbasp programmer

После этого любой пользователь можнет работать с USBASP.

Источник

USBASP драйвер для windows 7-10 / Linux / MacOS

Для внутрисхемной прошивки AVR микроконтроллеров чаще всего применяют специализированный AVR программатор: он прекрасно работает с любыми контроллерами AVR серии ATmega, ATtiny и AT, имеющими SPI интерфейс в режиме внутрисистемного программирования или ISP (In System Programming).

USBASP программатор даёт возможность программировать устройства в собранном виде без отключения от питания, а также существенно упрощает отладку программного обеспечения. Программирование можно осуществлять многократно.

Драйверы для USBASP доступны под различные ОС:

2011-05-28 — последняя прошивка с поддержкой TPI для программирования ATMega88 и ATMega8. Все последующие релизы avrdude также работают с данной прошивкой.

Доступны и более ранние версии драйверов:

Как установить драйвер USBASP на компьютер?

Установка драйвера USBASP производится в несколько простых шагов:

  1. Скачиваем драйвера по ссылкам выше
  2. Распаковываем архив с установочными файлами
  3. Запускаем исполняемый файл (SETUP)
  4. В открывшимся окне соглашаемся с установкой
  5. Перезагружаем компьютер для корректного обновления данных в реестре

После установки драйвера заново подключаем контроллер и смотрим, чтобы плата корректно отобразилась в списке диспетчера устройств.

Источник

Китайский HID программатор USBISP (USBASP) в Linux. Препрошивка

Программирование микроконтроллеров и робототехника — очень перспективные направления деятельности. Об этом говорят уже на уровне государства. А начинается все с того, что новички собирают свой первый программатор или заказывают его в интернет-магазине. Самыми доступными по цене являются китайские поделки. Они не всегда готовы сразу порадовать своих новых хозяев. Тем не менее, обычно, они вполне работоспособны после доработки и/или перепрошивки.

Читайте также:  Garmin usb gps windows 10

Ситуация осложняется тем, что существует множество похожих моделей и различных версий печатных плат китайской разработки. Мне достались программаторы с печатной платой, несовместимой с имеющейся в сети прошивкой. Банально, не совпадает назначение выводов микроконтроллера на плате и в программе. Далее я опишу процесс лечения мелкой партии этих программаторов и некоторые хитрости для новичков.

Надеюсь, кому-то эта статья окажется полезной, поскольку конкретно по этой версии программаторов информации в интернете, видимо, нет.

Для тех, кто хочет быстрого решения, в конце статьи есть ссылка на архив с доработанной мною прошивкой USBASP от Thomas Fischl и список изменений в формате git diff.

Покупка

Решил я для занятий по робототехнике в нашем Центре детского компьютерного творчества приобрести комплект программаторов и микроконтроллеров. Выбор пал на Алиэкспресс. Дёшево и сердито.
Заказал пачку Attiny13A, пару колодок для них, несколько Atmega32 на учебных платах, макетки, и, конечно же, десяток программаторов USBASP. Ранее я уже заказывал пару подобных программаторов — один из них даже работал.

Как оказалось, доставленные программаторы оказались неработоспособными в Ubuntu Linux. Один из них соответствовал рекламной картинке, остальные 9 были чуть длиннее и не упакованы в антистатические пакетики. При этом все 10 имели на корпусе надпись USBISP и гордо определялись как устройство HID.

The USBASP USBISP AVR / 51 Series Programmer Download Aluminum Shell No 64K Limit Support WIN7 64

Perfectly support WIN7

1, support USB1.1 or USB2.0 communication.
2, support WIN98, WINME, WIN2K, WINXP operation system.
3. USB ports Power Supply, power supply output is 500 MA since the recovery, which can effectively prevent outside of USB influence short circuit, target board can supply with USB together.
4, download not finish influence the operation of the target board.
5, support S51 and AVR chips record, speed faster than parallel ISP, more stable; There is no parallel notebook computer and use the best choice.
6, the latest version of exceed stable firmware, download speed jump line without choice, download speed faster, more stable.
7, using standard IDC10 interface

Хитрые китайцы, желая упростить жизнь пользователям дефолтной ОС, написали прошивку, не требующую драйверов. Один минус — с этими программаторами может работать только одна китайская программа с интерфейсом на китайском же языке и только в одной ОС. Меня этот вариант категорически не устраивал.

Поиск решения

Поиск в сети привел меня на страницу Hacking an AVR programmer.
Там все замечательно и доступно описано. Я обрадовался и стал разбирать программаторы. Это оказалось легко. Поразили оригинальные конструкторские решения в виде изолятора из двустороннего скотча.

Радовался я рано. На указанной странице был описан процесс перепрошивки для другой версии программатора (v3.0), которая разведена иначе. У меня на руках была неопознанная версия программатора.

Результатом изучения платы стала представленная ниже картинка. Все, что возможно, было разведено иначе, чем в уже знакомой третьей версии с синей платой. Это не помешало доработать прошивку, в которой пришлось менять номера выводов, их инициализацию (см. статью Hacking an AVR programmer) и алгоритм управления светодиодами.

В оригинальной usbasp прошивке за USB и светодиоды отвечают ножки 12,13 и 23,24. На плате же были разведены выводы 1,32 и 9,10. При этом светодиоды оказались подключены встречно-параллельно, что впоследствии было учтено в программе.

Никаких перемычек для программирования здесь не было. Поэтому пришлось слегка переделать шлейф, выпустив проводок «Reset» на волю. Этот провод я временно припаивал ко входу «Reset» для программирования жертвы.

Наглядная картинка, оказавшая мне помощь в сопоставлении ножек контроллера (ATmega8):

Хорошо, что в наличии рабочий программатор уже имелся. Как раз версии v3.0, но с рабочей прошивкой.

Перепрошивка

Первые два программатора прошились успешно. Третий запротестовал. Оказалось, что в нем именно 29 ножка «Reset» была не пропаяна.

Устранив этот косяк я продолжил работу.

На пятом программаторе мне надоело подпаивать проводок к ресету, и я применил менее надежный, но более быстрый способ. Помогла дочкина резинка для волос.

Программатор-жертва воткнут в USB-хаб (синенький) только для того, чтобы стоял устойчивее — хаб никуда не подключён.
Иногда я получал сообщения от avrdude, что контроллер не отвечает. Спасало понижение напряжения трёхметровым USB-удлинителем и уменьшение скорости программирования (ключ -B в строке «avrdude -c usbasp -p m8 -B 50 »).

На закуску самое главное

Архив с оригинальной прошивкой: www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz
Смотрим в Readme.txt раздел «BUILDING AND INSTALLING FROM SOURCE CODE»
Из архива извлекаем папку /usbasp.2011-05-28/firmware/
Дорабатываем прошивку по вкусу.
В консоли заходим в папку firmware и запускаем make для получения справки по доступным командам.
Компилируем прошивку и заливаем ее в программатор (через другой рабочий программатор).

Читайте также:  Команда windows для отключения пароля

Что удалось сделать из колодок для тинек (оказалось — очень удобно).

Контрольный светодиод между выходами PB3-PB4.

Источник

Kevin’s Blog

I recently bricked by Arduino Uno board and any attempt to upload new sketch will produce and error. I had tried to reflash the firmware multiple times using my serial programmer that I build a while back but no luck getting it to work. I end up purchasing a USBasp v2.0 programmer from eBay.

USBasp v2.0 should work right out of the box on Linux in most cases. On Arduino IDE, you only need to sett the following:

The Port setting is not used and the menu item should be grayed out. You should be able to burn bootloader or upload Sketch using the USBasp programmer with the above settings.

Or reflash the boot loader from command line.

/path/to/arduino-1.8.2/hardware/arduino/avr/bin/avrdude -C/path/to/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cusbasp -Uflash:w:/path/to/arduino-1.8.2/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex:i -Ulock:w:0x0F:m

On some system. A tty device is created when USBasp is connected. In my case /dev/ttyS0. However when Port is set to /dev/ttyS0 in Arduino IDE. You will see the following errors:

avrdude: Warning: cannot open USB device: Permission denied
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’

To Fix Permission denied error. As root edit “/etc/udev/rules.d/99-USBasp.rules” with the following:

Add self to dialout user group.

sudo usermod -aG dialout $USER

Then logoff and login again.

Unplug USBasp device then restart udev.

sudo /etc/init.d/udev restart

To reflash the Arduino Uno boot loader

In the Arduino IDE Tool menu. Set the following:

Board: Arduino/Genuino Uno
Programmer: USBasp

Источник

Настройка среды и работа с программаторами для AVR микроконтроллеров в Linux

Приведены особенности настройки и использования USBAsp, COM и LPT программаторов при работе с программой avrdude в операционной системе Linux. Попробуем считать и записать прошивку микроконтроллера (МК) используя программатор USBAsp.

Для работы и экспериментов нам понадобится уже подключенный к AVR микроконтроллеру программатор, как это сделать мы уже подробно рассматривали в одной из статей.

Перейдем к настройке портов и программы avrdude для работы с различными программаторами под Linux.

Настройка прав доступа для программатора USBAsp

Что делать если программа avrdude в ОС Linux не видит программатор что подключен к USB порту? — подобные вопросы в сети возникают довольно часто. Программа avrdude сообщает о том что не может найти программатор:

Поэтому первое что нам нужно сделать так это дать права обычным пользователям в Linux на использование устройства USBAsp, что подключен к USB порту. По умолчанию к данным устройствам имеет доступ только суперпользователь (root).

Зная код производителя и код устройства для программатора USBAsp нужно написать правило в специальном скрипте для подсистемы «usb» в Linux в котором разрешить использование устройства с такими идентификаторами любым пользователем или же ограничить права только указанной группой пользователей.

Для начала сверим идентификаторы устройства и убедимся что у нас действительно программатор USBAsp. Подключаем программатор к USB порту ноутбука и смотрим лог последних событий системы за текущий день:

Или же используем команду в Debian Linux 8 и выше (где используется systemd):

К примеру, в конце вывода последней команды увидим вот что:

Здесь код производителя нашего программатора — 16c0, а код продукта — 05dc, все Ок.

Отключаем программатор от компьютера и создадим файл с правилом что разрешает доступ к программатору USBAsp всем пользователям на компьютере, выполним команду:

После запуска откроется текстовый редактор, вставьте в него вот этот код:

Выходим из редактора и сохраняем файл (CTL+X и Y).

Для того чтобы в Linux наш скрипт заработал можно перезагрузить ОС или выполнить перезапуск подсистемы «usb» командой:

Теперь можно работать с программатором USBAsp в программе avrdude из под обычного пользователя(не суперпользователя).

Настройка программатора Громова (COM-порт) в Linux

Первым делом нужно добавить программатор Громова с его идентификатором и настройками в конфигурацию программы avrdude. Чтобы не править основной конфигурационный файл мы создадим дополнительный пользовательский конфигурационный файл в домашней директории, выполним команду:

где USER — єто имя вашего пользователя под которым вы работаете.

Вставим в редактор следующие данные:

Читайте также:  Windows или linux для java

Выходим из редактора и сохраняем файл (CTL+X и Y).

Для корректной работы программатора Громова в ОС Linux нужно предварительно сконфигурировать последовательный порт (Serial Port, RS-232 Port), поскольку на данный момент при запуске программа avrdude сама не производит конфигурации порта.

Если при записи прошивки в МК avrdude выводит сообщение о проблеме с верификацией то очень вероятно что нужно произвести переконфигурацию COM-порта:

Для выполнения конфигурации воспользуемся программой stty, подробные параметры работы которой хорошо расписаны в MAN-страничке.

Для вывода на экран текущих настроек порта /dev/ttyS0 (первый COM-порт) выполним команду:

А теперь выполним конфигурацию порта командой:

Примечание: примите к вниманию что если у вас в компьютере несколько COM-портов то путь к файлу порта /dev/ttyS0 нужно изменить в соответствии с номером используемого порта, например /dev/ttyS2 — это третий COM-порт.

После выполнения команды конфигурации полезно посмотреть изменилась ли конфигурация порта и как, для этого нужно выполнить предыдущую команду.

Содержимое вывода команды должно быть примерно вот в таком виде:

Настройки, которые мы задали командой, действуют до перезагрузки ОС. Команду для конфигурации порта можно добавить в автозагрузку вашей операционной системы Linux или же запускать один раз перед работой с программой avrdude.

Настройка программатора используя LPT-порт в Linux

В настройках программы avrdude по умолчанию прописан программатор «dapa», его описание «Direct Parallel AVR Access Cable».

Программатор на основе LPT-порта никаких дополнительных настроек в Linux не потребует, можно приступать к работе, Plug and Play in Linux! 🙂

Тестирование и работа с программаторами

После выполнения приведенных выше подготовок все готово к работе, приступим к тестированию нашей связки программатор + микроконтроллер.

Ниже будут приведены команды отдельно для каждого типа программаторов:

  • USBAsp;
  • программатор Громова (COM-порт);
  • параллельный программатор DAPA (LPT-порт).

Все примеры буду приводить для микроконтроллера ATmega8 (m8). Для программатора Громова в командах будет использован 1-й COM-порт /dev/ttyS0, а для программатора DAPA — первый LPT-порт /dev/parport0.

Подробно узнать о всех ключах запуска программы avrdude вы вы всегда можете вот ТУТ.

Первым делом давайте проверим все ли правильно связано и сможет ли программа avrdude «увидеть» микроконтроллер, никакой записи и изменений вносить в AVR чип мы не будем, только тест.

Проверка для программатора USBAsp:

Проверка для программатора Громова:

Проверка для программатора DAPA:

Если все подключено и настроено как нужно то то вывод программы будет выглядеть вот таким образом:

Рис. 1. Успешная проверка, у программы avrdude получилось связаться с AVR микроконтроллером.

Для получения более подробной информации о подключенном микроконтроллере можно добавить к команде ключ «-v», вот пример вывода для USBAsp:

Рис. 2. Проверка, вывод программы avrdude с опцией -v (verbose).

А теперь давайте считаем прошивку микроконтроллера что хранится во Flash-памяти и сохраним ее в файл.

Считывание Flash для программатора USBAsp:

Считывание Flash для программатора Громова:

Считывание Flash для программатора DAPA:

После выполнения команды во временной директории /tmp должен появиться файл m8chip_flash_dump.hex что будет содержать данные из флешь-памяти микроконтроллера.

Рис. 3. Считываем flash памяти микроконтроллера в файл при помощи avrdude.

В следующих примерах мы выполним запись прошивки во Flash-память AVR микроконтроллера, используя данные из файла в формате Intel HEX. Для этого создадим файл test_program.hex во временной папке /tmp и наполним его тестовыми данными. Создадим файл и откроем его для редактирования командой:

Скопируйте в редактор предоставленный ниже код и сохраните файл (CTRL+X и Y). Данная прошивка заставит мигать светодиод что подключен к 2-й ножке (PD0) микроконтроллера ATmeag8 (пример кода именно для этой модели):

Ниже представлены команды для записи прошивки с использованием разных программаторов.

Запись прошивки во Flash для программатора USBAsp:

Запись прошивки во Flash для программатора Громова:

Запись прошивки во Flash для программатора DAPA:

Сразу после выполнения команды по записи прошивки в микроконтроллер ATmega8 должен замигать светодиод. Вывод команды avrdude в процессе работы выглядит следующим образом:

Рис. 4. Процесс записи прошивки во Flash-память микроконтроллера.

Программа avrdude говорит что все ОК, записано во флешь-память и проверено 104 байта данных.

Рис. 5. На 2й ножке (PD0) микроконтроллера ATmega8 высокий уровень — 5В.

Заключение

В данной статье мы разобрались с настройкой AVR программаторов в операционной системе GNU Linux, привели простейшие команды для проверки, чтения и записи прошивки в микроконтроллер используя мощную программу avrdude.

В следующей статье мы напишем простую программу для микроконтроллера на языке программирования Ассемблер (Assembler), которая заставит поочередно мигать два разноцветных светодиода — олучится такая себе имитация полицейской мигалки.

Источник

Оцените статью