Работа с программатором от Prottoss в Linux

Нельзя просто так взять и пршить 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.

Вот, пожалуй, и все.

Owlet

Обсуждение на форуме