在Ubuntu 10.04 上安装及使用 Xilinx ISE DS 10.1 sp3 的要点

在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的官方网站下载得到。

  1. Xilinx_ISE_DS.iso
  2. 10_1_03_lin.zip
  3. 10.1_03_edk_lin.zip
  4. ChipScope_Pro_10_1_03_lin.zip
  5. 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: 

  1. Xilinx_ISE_DS.iso
  2. 10_1_03_lin.zip
  3. 10.1_03_edk_lin.zip
  4. ChipScope_Pro_10_1_03_lin.zip
  5. ise_101_ip_update3_install.zip
以上是作者的原文,我在装的时候有一些小问题,自己在网上搜索了以下答案:
还需要装一下这个包:sudo apt-get install portmap
同时本人还参考了:
 原文地址 http://www.eefocus.com/logiclimit/blog/10-04/187734_30bb9.html
原文地址:https://www.cnblogs.com/jianyungsun/p/1897664.html