ifree64 发表于 2010-7-22 00:59:59

让USB Blaster在Linux下工作。

由于altera官方的指导针对的Linux系统版本较低,在目前比较新的Linux下可能行不通,
经过一段时间的摸索,成功让USB Blaster在Linux下工作了,现把经验与大家共享。

原理简介:altera在Linux下对USB Blaster的支持是通过usbfs来实现的。

步骤:
1、编写udev的rules规则文件(udev版本>0.98)

# filename: 51-usbblaster.rules
# udev rules file for Altera USB programming devices (udev >= 0.98)
#
ACTION!="add", GOTO="altera_rules_end"
SUBSYSTEM!="usb_endpoint", GOTO="altera_rules_end"

ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666"
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0666"
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0666"

LABEL="altera_rules_end"
#the end
将上面内容保存到/etc/udev/rules.d/51-usbblaster.rules下

2、在/etc/fstab文件加入以下代码,以挂载usbfs
usbfs /proc/bus/usb usbfs devmode=0666 0 0

3、确保挂载了usbfs,可以重启系统,或运行以下命令
sudo mount -a

4、再次运行mount,检查输出,应该有类似这样的输出
usbfs on /proc/bus/usb type usbfs (rw,devmode=0666)

5、运行quartus安装路径下的jtagconfig, 我得到了如下的输出
1) USB-Blaster
020B20DD   EP2C8
如果你也看到了类似的输出,恭喜你,你的usbblaster可以在quartus中使用了。

玩得开心!

tear086 发表于 2010-7-22 07:49:58

mark

avic 发表于 2010-7-22 09:09:29

呵呵,我也设置成功了,ubuntu10.04

quzegang 发表于 2010-7-22 09:17:46

mark

jordonwu 发表于 2010-7-22 09:20:06

mark

yuzr 发表于 2010-7-22 11:01:44

mark

ifree64 发表于 2010-7-22 11:44:59

回复【2楼】avic
-----------------------------------------------------------------------

我是听你说可以在Linux下用,才去鼓捣的。呵呵。

wanwzy 发表于 2010-7-22 19:10:59

mark

caozhu 发表于 2010-7-22 20:37:34

呵呵 感谢分享

cain.lee 发表于 2010-8-11 00:01:28

2、在/etc/fstab文件加入以下代码,以挂载usbfs
usbfs /proc/bus/usb usbfs devmode=0666 0 0   
mount 以后提示 无法找到````

wanwzy 发表于 2010-8-13 07:43:57

mark

ifree64 发表于 2010-8-27 16:09:02

回复【9楼】cain.lee
-----------------------------------------------------------------------
你新建了udev的规则了吗?

antonine 发表于 2010-8-27 17:16:44

mark

zzjjhh250 发表于 2010-8-27 18:11:41

记号一下!以后有用,拜谢lz

yuwangwangyu 发表于 2010-8-29 08:57:22

mark

kneken 发表于 2010-8-29 15:23:38

mark!

Janeite 发表于 2010-10-15 19:15:54

mark

marco.ma 发表于 2010-10-15 20:15:48

其实是因为 quartus带的libusb比较老, 只从 /proc/bus/usb/ 里搜索设备

而较新的LinuX发行版本(内核) /proc/bus/ 已经是DEPRECATED, 新的libusb也以/dev/usb/bus为主要搜索路径。


所以应对新linux发行版本安装使用quartus, 其实 udev规则不是必须的, 楼主给的mount 旧式usbfs才是根本。

xiaobenyi 发表于 2011-3-11 22:39:25

最近正在为这个事情头疼,感谢了

pingfanrenwl 发表于 2011-3-29 19:23:21

回复【9楼】cain.lee
-----------------------------------------------------------------------

你是不是用wubi安装的ubuntu?
我以前可以用。现在新的一台电脑上用wubi安装的ubuntu,也出现这种问题。好像是/proc文件下不让建目录。又找不到/proc在那个文件中挂载上去的,要是找得到就让它设置为了可写。

pingfanrenwl 发表于 2011-3-30 09:22:34

2、在/etc/fstab文件加入以下代码,以挂载usbfs
usbfs /proc/bus/usb usbfs devmode=0666 0 0   
mount 以后提示 无法找到````
-----------------------------------------------------------------------
提示找不到,自己加特权也建不了文件夹。我后来自己摸索了一下,发一下心得,大家讨论一下。
貌似quartus是根据/proc/bus/usb下去找,所以有人就找出在/etc/fstab下添加一行来挂载usbfs,挂到/proc/bus/usb下去。我是挂载失败的,开机提示什么/proc/bus/usb出错。
我后来是这样子做的:mount --bind /dev/bus /proc/bus把bus全部挂载到/proc/bus下,里边自然会包括usb这部分。
挂完之后我还不行,于是再 ln -s /sys/kernel/debug/usb/devices /dev/bus/usb/devices,实际上/proc/bus/usb/下也会跟着出现devices。我不敢直接ln -s /sys/kernel/debug/usb/devices /proc/bus/usb/devices是怕/proc不让你写(其实试验一下就知道了,我懒得试验,呵呵)。
这样经过这两步之后quartus里边的Programmer就能找到设备了。
找到设备后还是不能下载,这是因为该设备没有足够写的权限。这可通过chmod来添加写属性。linux里边所有设备都当做文件,那这个USB blaster这个设备文件的路径在哪呢?在设备dev下总线bus里边的usb中,即/dev/bus/usb,但它下面有001 002 003 004 005等文件夹,哪个才是USB blaster的呢?用lsusb命令来查看,我得到的结果是:(记得接通开发板哦)
administrator@ubuntu:~$ lsusb
Bus 005 Device 003: ID 09fb:6001 Altera
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
所以是/dev/bus/usb/005/003这个文件,你chmod一下就可以在quartus中下载了。

如果以上这三步还不能使用USB Blaster下载的话,那下面的自动化方式就不用看。
第三步的chmod方式没错。但是当你的开发板断电后再接通,那它的文件路径名会变,比如变成/dev/bus/usb/005/004,不再是/dev/bus/usb/005/003了,这样子你得再输入一下chmod命令了。

现在有一种udev的处理方式,使得每次接入USB Blaster时改变属性。
sudo gedit /etc/udev/rules.d/51-persistent-blaster.rule
创建新规则,里边内容一行就足够了。lsusb中得到的ID 09fb:6001 Altera这时候也用到了。
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0777"


sudo gedit /etc/rc.local
添加如下两行内容:
mount --bind /dev/bus /proc/bus
ln -s /sys/kernel/debug/usb/devices /dev/bus/usb/devices
这样开机自动挂载,软链接,探测到设备时自动更改写属性。
页: [1]
查看完整版本: 让USB Blaster在Linux下工作。