本文通过五部完成zedboard的嵌入式LINUX搭建,所谓磨刀不五砍材工嘛
1:系统环境搭建
要准备好交叉编译环境 见http://blog.csdn.net/xiabodan/article/details/22717175
2:编译u-boot
然后要准备好u-boot 可以首先 apt-get install git ,然后可以在xilinx git中下载相关的u-boot原码,git clone git://git.xiinx.com/u-boot-xarm.git
解压原码:如果是zip文件的,unzip u-boot-xarm
配置u-boot make zynq_zed_config 有可能会权限不够,需要chmod
编译u-boot 在编译之前我们要首先设置一下交叉编译器的软链接,避免出现误用gcc
ln -s arm-xilinx-linux-gnueabi-gcc arm-linux-gcc
ln -s arm-xilinx-linux-gnueabi-ar arm-linux-ar
ln -s arm-xilinx-linux-gnueabi-gcc arm-linux-gcc
ln -s arm-xilinx-linux-gnueabi-objcopy arm-linux-objcopy
ln -s arm-xilinx-linux-gnueabi-objdump arm-linux-objdump
make
在u-boot-xarm目录下可以看到生辰的新文件u-boot(.elf),u-boot.bin,u-boot(.elf)会在xilinx SDK里面用到,强调一下这里的u-boot.bin不能直接用于xilinx的zynq,而用到的是u-boot(.elf)必须经过SDK和system.bit还有fsbl文件一起生辰zynq的第一阶段启动文件BOOT.BIN。此时我们的u-boot.elf算是编译完成。先留在这里后面在用。
3:编译内核以及设备树
首先我们要准备的当然是内核原码了:git clone http://github.com/Digilent/linux-3.3.digilent.git
得到内核以后 配置内核 make ARCH=arm digilent_zed_defconfig
make ARCH = arm
编译成功以后会在./arch/arm/boot/目录下找到zImage文件了,当然还要编译设备树进入./arch/arm/boot/dts/目录下可以看到zynq-zed-adv7511dts文件,为什么是adv7511文件,我们会在将FPGA的时候说,这与xilinx硬件有关。然后我们在内核跟目录下
make zynq-zed-adv7511.dtb
可以看到
DTC arch/arm/boot/zynq-zed-adv7511.dtb
DTC: dts->dtb on file "arch/arm/boot/dts/zynq-zed-adv7511.dts"
这两句话输出然后在执行 make
这时会在./arch/arm/boot/目录下生成zynq-zed-adv7511.dtb文件
至此我们生辰了u-boot.elf zImage .dtb
4:下面需要制作根文件系统
今天就不整了 麻烦死了 有时间载来 现在就用linaro的这么好 不用白不用。
5:XILINX SDK生成BOOT.BIN
将我们第2布中生成的boot.elf文件拷贝出来。打开XILINX FPGA官方提供的硬件工程cf_adv7511_zed 这个工程可以在analog官网上下载
可以从图中看到zynq_fsbl_0.eld文件是xilinx用于zynq的第一阶段启动文件。这个文件比u-boot还要先运行,具体过程看http://blog.csdn.net/xiabodan/article/details/23093111
而system.bit当然是我们的FPGA的下载流文件了,这个文件一般用于FPGA端配置,具体不多说了,有时间在详细的写出来。
至于这个u-boot.elf当然就是我们在第2阶段生成的uboot了
通过这三个文件生成的BOOT.BIN才是我们的启动文件。
最后将之前的三个文件 zImage .zynq-zed-adv7511.dtb BOOT.BIN(其中zynq-zed-adv7511.dtb要重命名为devicetree.dtb)拷贝入SD卡FAT32中,同时将linaro文件系统拷贝到SD卡的EXT4分区,当然之前必须进行SD卡的分区为两个分区(FAT32与EXT4 ),分区工具可以用GParted。
上电!奇迹出现了吧!
等着你的将是linux的开发了,不过由于小编不是专业的LINUX选手,还要去做FPGA的配置!苦逼的FPGA农民工。写本文的木的纯属记个笔记,以后不忘,因为不知道这辈子会不会做INUX开发哦,天知道呢!
参考数目:digilent官方资料www.digilent.org
嵌入式系统软硬件协同设计实战指南基于Xilinx zynq . 陆佳华
xilinx all programmable Zynq-7000 soc 何宾
懒兔子博客 http://www.eefocus.com/nightseas/blog/cate_12977_0.html
肖志远博客:http://blog.csdn.net/column/details/zynq.html