28 января 2014 г.

Перепрошивка программатора Prottoss в Atmel STK500 Version 2.x 


Речь пойдет о перепрошивке программатора Prottoss, чтобы он определялся и работал как Atmel STK500 Version 2.x













В этот раз напильник нам понадобиться совсем небольшой. Основная, металлическая часть напильника лежит здесь. Как можно догадаться из текста обсуждения, нам понадобиться прошивка 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 придется от имени суперпользователя:

    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).

Есть "неправильный" способ избежать работы через sudo - исправить права самого avrdude. Это совсем не безопасное решение.
    sudo chmod ug+s /usr/bin/avrdude

Правильный вариант - создать правило udev. В файл /lib/udev/rules.d/10-avrdoper.rules пишем:

ACTION!="add", GOTO="dev_support_rules_end"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GOTO="dev_support_init"
SUBSYSTEM!="usb_device", GOTO="dev_support_rules_end"

LABEL="dev_support_init"

ATTR{idVendor}=="16c0", ATTR{idProduct}=="05df", MODE:="0666"

LABEL="dev_support_rules_end"


Следующее втыкивание в усб и программатор работает от любого пользователя.



Настройки для Eclipse IDE, которую мы настроили в предыдущей статье:

    Project -> Properties -> AVR -> AVRDude -> Programmer configuration -> Edit... (или New...)

    Поле "Programmer Hardware (-c)" устанавливаем в значение "Atmel STK500 Version 2.x firmware", в поле "Override default port (-P)" пишем: avrdoper.

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


Комментариев нет:

Отправить комментарий