【转载】懒兔子ZedBoard学习手记(一) First Step——建立Xilinx交叉编译环境
0赞经过这段时间借由美信DIY大赛对ZedBoard的学习,略有所得,对这个新平台也有了一定的理解。在此称之为手记,算是边学边记了。既然还在学习,就自然会有一些谬误或不足,还望童鞋们指正啊。
要开发ZedBoard最重要的是Xilinx ISE工具集,在这个IDE里能够完成大部分的逻辑及底层软件开发工作。如果做裸奔开发,一个IDE足矣,但是若不想一辈子不穿衣服,需要涉及Linux下的软件设计,就得在Linux中进行编译。Xilinx的IDE里貌似也集成了开发Linux软件的相关环境,但兔子还不太会用,而且Linux下需要进行编译的东西太多了,很多地方SDK也无能为力,因此还是走传统路线——在Linux下建立Xilinx编译环境。
兔子的操作系统是Win7 Ultimate,多系统用起来着实麻烦,因此安装了VMware虚拟机,并在虚拟机下安装了Ubuntu,版本为11.10 64-bit。建立编译环境是老生常谈的话题,网上讲的很多,但为了保持手记完整性,这里请再耐心的来过一遍吧。
在Xilinx Wiki网站(http://wiki.xilinx.com/zynq-tools)下载Sourcery CodeBench,由于这个环境是为32-bit系统设计的,64-bit系统的用户需要先安装部分32-bit库,在Ubuntu终端中进入root权限(兔子喜欢一进终端就sudo su,省得后面麻烦),输入下面命令:
apt-get install ia32-libs ia32-libs-gtk
Mentor网站上的一篇文章说,还需要32-bit版本的xulrunner,我这里没装过,但也能用,不放心的可以按照这里的步骤安装:https://sourcery.mentor.com/GNUToolchain/kbentry62
之后在终端中输入:
dpkg-reconfigure dash
在弹出的对话框中选否,将dash改为bash,这样才能顺利执行Sourcery CodeBench安装程序。下载好的安装文件为:xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,在该文件路径下输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin打开安装程序,兔子选择默认路径(Do not modify PATH),装好后的执行文件路径为/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/,以后每次编译软件的时候都需要通过export指令将编译环境的路径加入PATH环境变量,后面编译一些内容的时候还会用需要修改ARCH,其指令如下:
export ARCH=arm
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH
如果不想每次都输入,就在通过gedit /etc/bash.bashrc指令打开bash.bashrc文件,在里面加入上述指令,这样开机就会自动执行了,同样可以运行source /etc/bash.bashrc指令使设置立即生效,通过echo $PATH指令可以看到我们刚才设置的路径。
下面让我们来编译点东西试试,首先是HelloWorld。找个地方新建一个hello.c文件,用gedit编辑,代码如下:
#include
intmain(void)
{
printf("Hello ZedBoard! ");
return 0;
}
在C文件所在目录中输入下面指令进行:
arm-xilinx-linux-gnueabi-gcc hello.c
在兔子电脑上生成了a.out文件,可能是以前设置的原因,不确定在你那里会叫什么呵呵。如图:
将生成的文件拷贝到U盘,连接到ZedBoard的USB OTG上,先挂载U盘,然后运行软件测试一下:
mount /dev/sda1 /mnt/
/mnt/a.out
至此交叉环境就搞定了,效果如下:
下面再编译个U-Boot试试,Xilinx在Wiki上也做了介绍:http://wiki.xilinx.com/zynq-uboot
首先为自己选一个用于开发的目录,兔子的目录位于/arm/zed,这个依喜好自定啦。通过Git下载Xilinx U-Boot代码(注意,这里已经换名称了):
git clone git://git.xilinx.com/
u-boot-xlnx
.git
cd u-boot-xlnx
用我们之前安装的交叉编译环境进行编译,由于我们已经设置了环境变量,这里直接执行编译即可,先进行配置:
make zynq_zed_config
配置完成后编译:
make
编译结束后,会生成一个u-boot文件(没有后缀名),这是一个elf文件,将其另存为u-boot.elf。这个文件很重要,在我们以后生成Boot Loader时会用到,用到时再解释吧。
之后我们就将开始设计自己的自定义AXI总线外设了,下次会为大家呈现一个通过GPIO读取Switch值并控制LED的IP,最终目的是在Linux下通过自己的软件控制这个硬件IP。
好了,今天就到这里吧。晚安啦~~~