在非root权限下运行Vivado/Quartus/CCS等IDE,需要使用JTAG时会出现权限问题,几乎所有的USB调试设备在Linux下都会遇到这样的问题。这里以Xilinx Platform Cable USB为例说明如何解决这样的问题。
插上USB后,查看设备
lsusb
Bus 001 Device 006: ID 03fd:000f Xilinx, Inc.
查看该设备的权限
ls -l /dev/bus/usb/001/006 crw-rw-rw- 1 root root 189, 5 6月 24 13:03 /dev/bus/usb/001/006
可以看到当前用户没有可执行的权限,其他USB调试设备也都是这样的结果。我们可以通过增加rules来给usb可执行的权限
sudo gedit /etc/udev/rules.d/71-usbblaster.rules
内容如下
# Altera USB-Blaster SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", SYMLINK+="usbblaster" # Xilinx USB Cable SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="000f", MODE="0666", SYMLINK+="usbcable" SUBSYSTEM=="usb", ATTR{idVendor}=="03fd", ATTR{idProduct}=="0008", MODE="0666", SYMLINK+="usbcable" # SEED-xds560v2 SUBSYSTEM=="usb", ATTR{idVendor}=="0525", ATTR{idProduct}=="2000", MODE="0666", SYMLINK+="xds560v2"
注意,Xilinx Platform Cable USB 的配置有两个设备 03fd:000f 和 03fd:0008 ,我也是搞了好久才发现这个USB设备的 idProduct 会在Hardware Manager--Open new target 之后自动由前者变成后者,前者有可执行权限的情况下。
如果出现Jtag Clock Frequency 没有数值的情况
如果 03fd:0008 已经有执行权限,就先Cancel再次Open New Hardware Target 就好了。
完成之后
Altera USB-blaster 和 SEED XDS560V2更简单,只要在rules里配置正确,重启计算机之后就可以使用了。