Работа с программатором от Prottoss в Linux
В этот раз напильник нам понадобиться совсем небольшой. Основная, металлическая часть напильника лежит здесь. Как можно догадаться из текста обсуждения, нам понадобиться прошивка avr910-hid-no_debug.hex из архива avr910_avrdoper_hex.zip. После того, как мы прошьем наш Prottoss, подключим его к USB-порту и наберем в терминале команду dmesg, мы должны увидеть примерно следующий вывод:
usb 1-1.2.1: >new low-speed USB device number 19 using ehci_hcd
usb 1-1.2.1: >New USB device found, idVendor=16c0, idProduct=05df
usb 1-1.2.1: >New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.2.1: >Product: AVR-Doper
usb 1-1.2.1: >Manufacturer: obdev.at
hid-generic 0003:16C0:05DF.000A: >hiddev0,hidraw3: USB HID v1.01 Device [obdev.at AVR-Doper] on usb-0000:00:1a.0-1.2.1/input0
У нас добавились новые устройства /dev/usb/hiddev0 и /dev/hidraw3. Добавились они с правами на чтение и запись только для пользователя root. Поэтому прошивать утилитой avrdude придется от имени суперпользователя. В Linux это делается через вызов команды sudo, аргументами которой являются команда, которую нужно запустить, и ее аргументы:
sudo avrdude -c stk500v2 -P avrdoper -p m8 -Uflash:w:my-program.hex:a
Это пример вызова avrdude для прошивки файлом my-program.hex микроконтроллера ATMega8 (параметр -p m8) нашим перепрошитым программатором, который теперь имеет тип Atmel STK500 Version 2.x firmware (это мы указали параметром -c stk500v2). Вместо устройства, к которому подключен программатор, в нашем случае приходиться использовать некий костыль (параметр -P avrdoper), который мы нашли, покурив мануал avrdudue. Быстро покурить мануал можно, например, так:
man avrdude | grep -i avrdoper
Приделываем ручку к напильнику
В общем, у нас вроде бы уже все хорошо, но если мы используем такое тяжелое наследие прошлой жизни во вражеских операционных системах, как графический интерфейс пользователя, и это тяжелое наследие заставило нас использовать IDE, то есть проблема. Не все IDE позволят исхитриться и запустить avrdude от имени root'а. Что же теперь делать? Работать по учетной записью суперадминистратора? Или запускать IDE от имени root'а? Пожелаем скорейшей дефрагментации и бесплатного антивируса всем, кто такое предложит! С нас же хватит и этого:
sudo chmod ug+s /usr/bin/avrdude
Теперь avrdudue всегда будет исполняться с правами суперпользователя, независимо от того, кто ее вызовет. Это совсем не безопасное решение, но существенно меньшее зло. Когда вы замените Prottoss на что-то другое, уберите suid- и guid-биты:
sudo chmod ug-s /usr/bin/avrdude
И в заключении, приведем настройки для Eclipse IDE с плагином для AVR, которую мы настроили в предыдущей статье:
Project -> Properties -> AVR -> AVRDude -> Programmer configuration -> Edit... (или New...)
Поле "Programmer Hardware (-c)" устанавливаем в значение "Atmel STK500 Version 2.x firmware", в поле "Override default port (-P)" пишем: avrdoper.
Вот, пожалуй, и все.