总体来说,Ubuntu上跑XILINX的ISE/EDK还是比较顺利滴, 但还是遇到一些需要修改的地方,在此做个总结。
ISE的问题
1. USB下载线的驱动问题。
解决方法
http://xilinx.eepw.com.cn/news/article/a/1009
EDK的问题
2. xilperl 找不到libdb4.1-so的问题
现象:EDK生成bitstream的时候,在进行到mpmc时出错,一堆红叉,触目惊心。定神一看,说第一行说xilperl找不到libdb-4.1.so。 看来是ubuntu没有装libdb-dev
sudo apt-get install libdb-dev
装好以后,发现装的是libdb-4.7.so, 没关系,欺骗XILINX一下, 把4.7拷贝为4.1就可以了。
cd /usr/lib
cp ./libdb-4.7.so libdb-4.1.so
当然,为了省空间,也可以用软链接
sudo ln -sf libdb-4.7.so libdb-4.1.so
我用的是10.1, 用11.1貌似没有此问题,待验证。
3. 找不到mb-gcc等的问题
只需要在PATH中,添加路径就可以了
export PATH=/opt/Xilinx/10.1/EDK/gnu/microblaze/lin/bin:$PATH
当然,EDK前面的路径请根据你具体安装的路径进行修改。
我用的是10.1用11.1貌似没有此问题,待验证。
PETALINUX的问题
以上是ISE,EDK在ubuntu上正常工作需要修改的地方。 下面是petalinux在ubuntu上工作需要修改的地方
4. 将dash恢复回bash
方法参见:
http://xilinx.eepw.com.cn/news/article/a/1010
6. 编译petalinux, make 的时候,出现PATH_MAX找不到定义的问题,出现在编译
./linux-2.6.x/scripts/mod/sumversion.c的时候。
正规地,PATH_MAX是在 include/linux/limits.h定义的。正规方法还要添加include路径。这里,只需要在sumversion.c中定义一下,简单搞定
#define PATH_MAX 4095
7. 将i386-redhat-linux改为i486-linux-gnu
在/vendors/config/i386/config.arch中,将
GLIBC_TARGET_OPTS = --host=i386-redhat-linux
改为
GLIBC_TARGET_OPTS = --host=i486-linux-gnu
其他类似的改动还有
/lib/pcre/makefile
./lib/libldap/makefile
8. 老u-boot中老的依赖文件.depend中存在老的路径问题。
由于我的目录是直接从centos中拷贝过来的, 过去生成了一些依赖文件.depend, 指示某.c文件依赖于某个.h文件。 老的依赖文件中要到/home/centos中去找文件。 而我拷贝的home并不叫centos,因此编译会出错。
解决方法:1).删除.depend 这样,就可以重新生成正确的.depend文件。 但是,手工删除太多太麻烦。
解决方法:2)make clean, make menuconfig 重新配置一下,依赖文件就重新生成了。
至此,在untuntu下跑ISE, EDK, petalinux就全部没有问题了。
说明:
1。 我的petalinux目录是直接从CentOS拷贝过来的,没有进行任何安装操作,而且也没有拷贝到/home/centos中。因此,出现的问题应该是最多的。 上文已经罗列了我遇到的所有问题和解决方法,相信各位可以参考,见招拆招。
2。 我的ubuntu是跑在Virtualbox中的,同时绑定了两个网卡,一个是对笔记本电脑中的无线网卡做NAT, 另一个对ethernet卡做bridge, 这样,就可以在利用无线网卡上网的同时,还可以组一个192.168.0.1的局域网, 为fpga上跑的petalinux提供 tftp server, 并且访问petalinux在fpga上跑网页http://192.168.0.10, 非常方便,而且不耽误上网查资料,玩游戏, apt-get
3. apt-get 如果在proxy后面,需要在/etc/apt/apt.conf中添加proxy信息如下,请用自己的proxy信息替换:
Acquire::http::Proxy "http://proxy.server.here ort/"