我使用 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"
关于如何使其工作或为什么它根本不起作用,您有什么想法吗?
答案1
如果前者有效,我认为后者应该读
SUBSYSTEM=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", MODE="0666"