Я использую Ubuntu 12.04 для программирования и недавно решил перевести мои предыдущие проекты микроконтроллеров atmel с Win на Linux. А именно AVR.
Я правильно установил цепь инструментов. Включает: avrdude binutils-avr gcc-avr avr-libc gdb-avr.
Для проверки моего подключения к микроконтроллеру я использовал программатор olimex avr-usb-jtag. Когда я подключаю его, он отображается как / dev / ttyUSB0 (являющийся чипом FTDI usb-com). Программатор совместим с Atmel JTAGICE.
Теперь, когда мы пытаемся
avrdude -p c128 -c jtag1 -P /dev/ttyUSB0 -t
И мы получаем
avrdude: ser_open(): can't open device "/dev/ttyUSB0": Permission denied
До сих пор кажется, что без прав root мы не можем ни писать, ни читать с устройства. И это подтверждается, когда мы на самом деле пытаемся
sudo avrdude -p c128 -c jtag1 -P /dev/ttyUSB0 -t
Ответ:
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9781
Теперь я хочу, чтобы обычные пользователи (например, программирующие IDE) имели доступ к программисту. без предоставления им root-прав. Первый вопрос для меня: как сделать это лучше?
Я попробовал подход udev и хотел, чтобы система распознала подключенное устройство и применила разрешения к файлу устройства (для меня ttyUSB0 по умолчанию). Но единственное, что сработало, это создание нового файла:
/etc/udev/rules.d/10-usb-avr-jtag.rules
Он содержал
KERNEL=="ttyUSB*" MODE="0666"
Эта конфигурация работает, но мне любопытно, почему что-то подобное ниже не работает для меня вообще (по умолчанию ttyUSB0 появляется, к файлу не применяются правила)?:
SUBSYSTEM=="usb", ATTR{idProduct}=="6001", ATTR{idVendor}=="0403", MODE="0666"
Есть идеи о том, как заставить его работать, или почему он вообще не работает?
Если первый работает, я подозреваю, что последний должен читать
SUBSYSTEM=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", MODE="0666"