执行 olimex avr-usb-jtag 的 udev 规则时出现问题

执行 olimex avr-usb-jtag 的 udev 规则时出现问题

我使用 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"

关于如何使其工作或为什么它根本不起作用,您有什么想法吗?

这是我的输出 udevadm

答案1

如果前者有效,我认为后者应该读

SUBSYSTEM=="usb", ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", MODE="0666"

相关内容