对于错误error (209053): unexpected error in jtag server -- error code 89,它产生的原因在于,在linux系统下,Quartus ii的驱动USB-Blaster只能有root用户使用,而普通用户是无权使用的。解决思路是更改USB-Blaster的使用权限,使得普通用户也能使用。对此altera也有给出相应的解决方案,详细见USB-Blaster Driver for Linux。
为使大家更易在linux下操作,现将具体的步骤介绍如下:
首先打开终端,获得root权限。
在路径/etc/udev/rules.d
下创建文件51-usbblaster.rule
s(因为很多时候该目录下是没有此文件的)
touch /etc/udev/rules.d/
51-usbblaster.rule
s
编辑该文件
gedit /etc/udev/rules.d/
51-usbblaster.rule
s
在51-usbblaster.rule
s中输入:
$ pwd
/etc/udev/rules.d
$ ls -lZ 51-usbblaster.rules
-rw-rw-r--. 1 root root unconfined_u:object_r:udev_rules_t:s0 411 6. úno 15.23 51-usbblaster.rules
$ cat 51-usbblaster.rules
# USB-Blaster
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6002", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6003", MODE="0666"
# USB-Blaster II
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6010", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6810", MODE="0666"
最后同样在终端里root权限下输入命令
udevadm control --reload
一般而言,USB-Blaster应该能正常使用了,Programmer这时候也可以下载程序了。但我的Centos 7 + Quartus ii 17.0依然没有起色,问题依旧,最终得以解决的,全靠这篇文章Altera Quartus, USB-Blaster, jtagd, udev, USB permissions
做法是将前面创建的文件51-usbblaster.rule
s中的后两段
# USB-Blaster
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6002", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6003", MODE="0666"
# USB-Blaster II
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6010", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6810", MODE="0666"
改为
# USB-Blaster
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0666"
# USB-Blaster II
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="0666"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="0666"
然后再执行
udevadm control --reload
最后完美解决了在linux下用Quartus ii 17.0下载程序的问题!感谢thomaswood和woky