制作Linaro系统所需要的文件:
1.u-boot.elf (Linux boot loader)
2.SDK生成的FSBL(first stage boot loader)
3.linux内核映像文件
4.命名为devicetree.dtb的设备树文件
5.Linaro文件系统
转载请注明,原作者:雅可 ,文章地址:http://blog.csdn.net/yake827/article/details/51980181
映像文件BOOT.BIN一般包括:FSBL,Bitstream和SSBL这三个文件,其中Bitstream是配置PL端程序,是可选项,在我们制作Linaro系统的时候并不需要。FSBL是first stage boot loader,文件的制作需要使用Vivado环境;SSBL是Second Stage Boot Loader,这里使用的是Xilinx公司提供的u-boot。
一、搭建软硬件环境
硬件的环境搭建其实就是创建一个最简单的Vivado项目。首先打开Vivado 2015.2,选择Zedboard,完成创建向导,最后进入如下界面
先创建一个Block Design,在本文中定义为ststem,完成后在Diagram视图中点击Add IP,在弹出的窗口中输入Zynq进行搜索,在结果中选择第一个ZYNQ7 Processing System,点击Run BlockAutomation完成自动连线,界面如下:
接下来我们取消一些不需要的部分。
首先双击ZYNQ进行自定义配置,首先点击Clock Configuration,展开PL Fabric Clocks,取消FCLK_CLK0。
取消之后Diagram中的FCLK_CLK0会消失。
另外,我们要取消如下引脚
对于TTC,我们点击如下部分,取消掉TTC
点击上图的红框部分,进入如下界面
对于AXI GP0,我们点击如下红框部分
取消掉AXI GP0 interface。
用同样的方法取消QSPI,ENET0。点击OK完成,结果如下所示
回到Block Design的sources视图,在System上右键选择Create HDL Wrapper。完成后点击左边Flow Navigator中的Generate BitStream。等待Vivado完成综合、实现、生成bitstream。
点击File->Export->ExportHardware,确认后点击File->Launch SDK,系统会自动开启SDK软件
在SDK中点击菜单File->New->Application Project。项目名fsbl(可以更改),OS平台standalone,语言为C,点击Next,Templates选项选择ZynqFSBL。
点击Finish,SDK会自动编译FSBL代码,并在工程Debug下生成fsbl.elf目标文件,如下图所示
至此,FSBL的编写工作完成,接下来开始做u-boot的编写。
u-boot采用的是xilinx官方提供的u-boot包来生成的,步骤如下:
1.获取u-boot代码
$ git clonehttps://github.com/Xilinx/u-boot-xlnx.git
$ cd u-boot-xlnx
2.为了使项目更容易管理,统一采用的是xilinx-v2015.2这个版本
$ git checkout -bxilinx-v15.2
3.确保我们的ARM编译器已经在我们的环境变量中,设置交叉编译器前缀
$ exportCROSS_COMPILE=arm-xilinx-linux-gnueabi-
4.更改include/configs/zynq_common.h中的数据,让我们的u-boot在启动的时候不会试图去加载ramdisk image。
"sdboot=if mmcinfo; then " \
"run uenvboot; "\
"echo Copying Linuxfrom SD to RAM... && " \
"load mmc 0${kernel_load_address} ${kernel_image} && " \
"load mmc 0${devicetree_load_address} ${devicetree_image} && " \
"bootm${kernel_load_address} - ${devicetree_load_address} ; " \
其中’-’的作用就是告诉u-boot和内核没有ramdisk文件系统,所以在启动的时候就不会加载它。
5.加载zedboard配置文件
$ exportPATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config
6.编译u-boot
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
7.将得到的可执行文件u-boot更改为xilinx SDK可以识别的格式
$mv u-bootu-boot.elf
在得到u-boot.elf和FSBL之后,我们就可以来制作BOOT.BIN,方法如下:
1. 打开xilinx SDK2015.2
2. 点击菜单Xilinx Tools > Create Zynq Boot Image
3. 首先设置BIF文件路径。BIF文件用于指定当前boot.bin制作过程中用到的三个文件的路径,相当于一个项目配置文件。
4. 设置好后我们先按顺序添加三个文件,显示FSBL文件
FSBL的在弹出对话框中的Partition type是bootloader,而bitstream(如果有)和uboot都是datafile。此处一定要注意,否则会出现问题。添加正确的话,修改输出路径中文件名为boot.bin(也可以不修改)
点击Create Image创建boot.bin,成功的话会在输出路径生成相应文件。