在Ubuntu 9.10 上安装及使用 Xilinx ISE DS 10.1 sp3 的要点
(本人已经在Ubuntu上试过,稍作修改就ok了)
Keys about installing and using Xilinx ISE DS 10.1 sp3 at Linux platform
Xilinx的XUPV2P是一块集成了PPC405硬核的FPGA开发板,可以做一些嵌入式方面的应用,在进行相应的开发时,需要用EDK完成硬件的设计和综合,一般情况下EDK是安装在windows下,而嵌入式Linux系统的配置,软件的开发则是采用交叉编译的方式,在使用Linux的host机上完成软件系统的开发,在系统开发的初始阶段,需要在windows和Linux系统进行反复切换,不太方便,故在Linux下安装ISE DS 10.1.03,统一硬件软件的开发平台。所使用的Linux的发行版本为Ubuntu 9.10,安装在虚拟机上,虚拟机版本为VMware 6.5.3。
将安装以下文件:1、ISE DS 10.1。2、ISE、EDK、ChipScope和IP的sp3包。所有文件都可以从Xilinx的官方网站下载得到。
- Xilinx_ISE_DS.iso
- 10_1_03_lin.zip
- 10.1_03_edk_lin.zip
- ChipScope_Pro_10_1_03_lin.zip
- ise_101_ip_update3_install.zip
一、安装
将Xilinx_ISE_DS.iso挂载到系统中,在/media/cdrom中双击setup(不是setup.exe),只安装ISE、EDK、ChipScope如图1。
图1
一路next,同意所有协议,安装路径为/opt/Xilinx/10.1,唯一要注意的是不更新、不安装下载器驱动,不启用WebTalk,如图2。
图2
安装完成后依次安装10_1_03_lin.zip、10.1_03_edk_lin.zip、ChipScope_Pro_10_1_03_lin.zip和ise_101_ip_update3_install.zip,需要注意的是ise_101_ip_update3_install.zip中包含了windows和linux的升级包,在linux环境下运行的是setup而非setup.exe。
二、安装运行ISE DS需要用到的软件
使用root完成以下安装和配置
1、重新设置sh为bash
# dpkg-reconfigure dash,提示是否要dash时,选no。
2、安装libdb
# apt-get install libdb-dev
ISE要求的是4.1版本,做个连接#ln -sf libdb-4.2.so /usr/lib/libdb-4.1.so
3、安装libXm
# apt-get install libmotif3
4、安装 libstdc++5
Ubuntu9.10自带的是libstdc++6,apt-get上没有libstdc++6,从网上下一个http://download.csdn.net/source/205090,放在/usr/lib下,再做个软连接
ln -sf /usr/lib/libstdc++.so.5.0.7 /usr/lib/libstdc++.so.5
5、安装fxload
fxload用来更新下载器的hex,# apt-get install fxload
6、安装wrap编辑器
# apt-get install rlwrap
7、伪装gmake
# ln -sf make /usr/bin/gmake
三、安装下载器驱动
# cd /opt/Xilinx/10.1/common/bin/lin
# ./setup_pcusb
安装的过程中检查/etc/hotplug/usb下是否已有相关的文件,若无则会把下载器有关的hex文件复制到/etc/hotplug/usb下。
为下载器新建一个udev设备,在/etc/udev/rules.d下新建udev文件xusbdfw.rules,其内容如下
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0008", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusbdfwu.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xup.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_emb.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xlp.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xp2.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xse.hex -D $tempnode"
SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", MODE="666"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0007", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusbdfwu.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0009", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xup.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000d", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_emb.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="000f", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xlp.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0013", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xp2.hex -D $tempnode"
BUS=="usb", ACTION=="add", SYSFS{idVendor}=="03fd", SYSFS{idProduct}=="0015", RUN+="/sbin/fxload -v -t fx2 -I /etc/hotplug/usb/xusbdfwu.fw/xusb_xse.hex -D $tempnode"
之所以要把PID0008和0009都添加进去,是因为使用完下载器后,其PID可能会为0008或0009,而在初始化JTAG链时,程序是检测PID0008而不检测PID0009。重启udev,# /etc/init.d/udev restart
四、添加环境变量
在/opt/Xilinx/10.1下新建set_env.sh,内容为
source /opt/Xilinx/10.1/ISE/settings32.sh
source /opt/Xilinx/10.1/EDK/settings32.sh
source /opt/Xilinx/10.1/ChipScope/settings32.sh
export LD_LIBRARY_PATH="/usr/local/bin:$LD_LIBRARY_PATH"
export XIL_IMPACT_USE_LIBUSB=1
export DISPLAY=:0
前三项是启动ISE各组件的环境变量,LD_LIBRARY_PATH和XIL_IMPACT_USE_LIBUSB是usb下载器的环境变量,DISPLAY则是显示相关的环境变量。
在启动ISE或EDK前要# source /opt/Xilinx/10.1/set_env.sh,之后就可直接在控制台中使用ISE和EDK的相关指令了。
五、制作ACE文件中的start address问题
在生成ace文件时可能会遇到"Executable does not contain start address."的问题,是由于使用了非英语的语言设置造成的,当Ubuntu的语言为中文时,用powerpc-eabi-objdump -x $elffile得到的start address会被翻译成中文“起始地址”,程序报错。解决方法有二:一是将ubuntu的语言改为英语,二是在相应的.opt文件中加上“-start_address <地址值>”。
六、参考了以下文章
http://www.aclevername.com/articles/linux-xilinx-tutorial/edk101-ubuntu810.html
http://www.openhw.org/Kevin/blog/09-12/182442_78a0f.html
七、英文(for international guest)
Keys about installing and using Xilinx ISE DS 10.1 at Linux platform, my linux distro is Ubuntu 9.10, which is installed in a virtual machine. my host system is windows 7, using VMWare 6.5.3.
Prepare those install package: 1. ISE Design Suite 10.1 DVD, 2. the service pack 3 of ISE, EDK, ChipScope, IP Cores. You can download them from Xilinx's website. Here are their names:
- Xilinx_ISE_DS.iso
- 10_1_03_lin.zip
- 10.1_03_edk_lin.zip
- ChipScope_Pro_10_1_03_lin.zip
- ise_101_ip_update3_install.zip
以上是作者的原文,我在装的时候有一些小问题,自己在网上搜索了以下答案:
还需要装一下这个包:sudo apt-get install portmap
同时本人还参考了: