usb virtual device linux,终于搞定ISE在虚拟机Virtualbox上ubuntu的下载线XILINX Platform Cable USB II的驱动...

趁着休假,学习一下petalinux,  让Walkie给我准备了一个USB硬盘,上面装的是CentOS以及整个petalinux的开发工具链。 挺方便的。 但是有一点不爽,就是一旦进入CentOS, 就无法使用我平时在Windows下使用的东西,比如outlook什么的。

解决办法是在Windows上装虚拟机,比如用sun的免费Virtualbox。 然后在虚拟机上装CentOS,然后装XILINX以及petalinux的工具链。

问题来了,我目前喜欢用ubuntu, 因为apt-get实在是太好用了。经过一番思想斗争,决定搞定在ubuntu上跑ISE并且是放在虚拟机Virtualbox上跑的方法,造福广大群众。

(本文由OpenHW.org 的Kevin原创,转载请注明。)

XILINX的ISE能否在ubuntu上工作呢?XILINX的官方回答比较含糊,标准答案是:支持CentOS和RedHat, 其他类型的linux有成功的例子,但不保证。

Walkie告诉我,其实ISE在很多其他版本的LINUX上的安装和运行其实是毫无问题的,唯一的问题就是下载线的驱动在有些LINUX上无法工作。

继续深入研究,发现,下载线的驱动在某些linux下不工作的唯一原因是:目前,下载线的驱动依赖于一个叫windrvr的文件。 而该文件目前只有linux内核2.4的二进制版本,因此遇到2.6内核的linux发布版,如高版本的CentOS或高版本的ubuntu, 就不工作了。

好在一个叫Michael Gernoth的德国人,大公无私地写了一个windrvr的替代版本,并且开放源码,这样,无论碰到什么版本的内核,现场编译一个驱动并安装,就能解决linux内核版本匹配的问题。源代码包在这里:

解开压缩包,编译的时候,只需要make就行了,当然,第一次make八成是不过的,因为一般人都不会在ubuntu上预装usb开发包,需要装一下,只需要这样就可以了:

sudo apt-get install libusb-dev

make完了以后,应该看到libusb-driver.so被生成了。

当然,编译完还需要设环境量, 命令是,export LD_PRELOAD=/你的路径/libusb-driver.so ,为简单起见,可以把这个命令加你的.bashrc里,这样,下一次开一个终端时,就不用手工设了。

你的linux用户需要进入lp组以便有权限,最简单的方法是编辑/etc/group, 把你的用户名加到lp组后面就可以了。

这样,在纯ubuntu上跑xilinx 的问题基本宣告解决。剩下的,就是在虚拟机上跑ubuntu并驱动下载线的问题, 其实就是Virtualbox能否访问宿主机的usb接口上的下载线的问题。

答案是肯定的,只需要在虚拟机Virtualbox上指定并捕获在宿主机的USB上设备就可以了。

这里所谓的“捕获",英文中只有一个Capture, 而写文档的大虾们也懒的写详细过程,认为这是Virtualbox的事,一笔带过。不熟悉Virtualbox的人以为这个捕获是自动进行的,就在那里等啊,等啊,等得花而都谢了,还没有连上下载线,离成功就差一步,这里用图来说明一下,有图有真象:

1.右键点虚拟机右下角的usb小图标,停留在xilinx上一会,会发现系统中有一个xilinx的usb设备,状态是忙(状态忙的原因是我的宿主windows上安装ISE的时候已经装过了该设备驱动,你也可以不装或者卸载该驱动,但是要忍受每次插拔下载电缆windows询问你是否要安装驱动的麻烦)

8656180b02230a37f4e179c129e1b26f.png

2.左键点击xilinx,这事应该出现一个小钩,然后状态为"captured".

23c583659e9a2612f6194034ce312f4f.png

这样,你再运行impact, 就会出现熟悉的画面,是这样滴,请注意,我把虚拟机的主机Windows背景也一起拷贝进来了。

9173c47b111d3cdb8d8b98a0924f2d94.png

这里罗列一下我用的各种软件的版本:

1. ISE 11.1

2. Virtualbox 3.0.10

3. WindowsXP

4.XILINX PLATFORM CABLIE USB II

5. ubuntu9.04

其他讨论:

当强行插拔,或者直接在Virtualbox上取消捕获时, 想要软恢复impact的正常工作,经常会遇到出错信息,因为驱动锁定了资源。遇到这种情况,如此操作总能恢复:

1. 关闭Virtualbox

2. 拔掉下载线的usb口

3.重新插上下载线usb

4.重复上述的捕获过程。

如果你的windows下从来没有装过ISE,那么,Virtualbox的右下角的usb图标里不会显示XILINX的字样,会显示unknowdevice 03fd:0008或者unknowdevice 03fd:000f什么的,直接捕获 ,也没有问题。

在虚拟机下面,对下载线的usb口动态插拔适配得不好,因此,一旦连上,最好不要把USB下载线拔来拔去。 原因是xilinx的USB下载线的设备号在刷新固件之前和之后是不一样的,之前是000f,之后是0008,你拔了以后,已经有了固件,系统就不认识了,无法重新加载。有的时候如果动态插拔下载线,需要重新启动虚拟机,并且重新捕获宿主机上的USB设备。

Alcaic建议为下载线的两个设备号取不同的名字来优雅的解决动态插拔的问题,我懒得试了,因为至少目前这种需求不大,链接列在这里:

https://peeters-noppe.net/alcaic/2009/09/virtualbox-and-the-xilinx-usb-platform-cable/

本文还参考了以下网址,特此鸣谢:

https://forums.xilinx.com/xlnx/board/message?board.id=INSTALLBD&message.id=822

https://forums.xilinx.com/xlnx/board/message?board.id=XLNXBRD&message.id=1805

https://peeters-noppe.net/alcaic/2009/09/virtualbox-and-the-xilinx-usb-platform-cable/

中文的,提到这方面的很少,风雷的技术博客,曾经翻译过一篇,2007年的了,不少内容已经不适用于高版本。 仍然列在这里做参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值