【再说ZedBoard】U-Boot
0赞Zyny芯片启动加载分为3步:
1. 芯片上电启动,首先读取BootROM中的程序,初始化一些必要的外设,然后根据专用引脚电平判断该从何处启动first stage Bootloader(FSBL),将其中的程序复制到RAM中
2. 加载RAM中的FSBL程序,根据Boot image文件配置PS及PL,这部分Boot完全用户可控
3. Second stage Bootloader(SSBL),这部分可选
ARM核加载操作系统需要bootloader,Bootloader就是在操作系统内核运行之前运行的一段小程序,通过它,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好正确的环境。本节就介绍一下如何配置编译bootloader,以Zed开发板加载linux系统的u-boot为例。
笔者手头上有一块Zed开发板,自带的linux由SD Card启动,SD Card中包含了如下文件:
zImage、BOOT.BIN、devicetree_ramdisk.dtb、ramdisk8M.image.gz
这些文件正是linux Boot image中的文件,如图1所示为Linux Boot Image文件格式,
图1
u-boot是一种开源Bootloader,广泛应用于linux。以下介绍一下xilinx提供的u-boot的编译和配置过程。
1. 首先Git下载Xilinx U-Boot代码
git clone git://git.xilinx.com/u-boot-xlnx.git
2. 配置u-boot,在上一篇博客中介绍了交叉编译环境的建立,此处可直接进行配置
cdu-boot-xlnx make zynq_zed_config
3. 编译u-boot
make
以上步骤完成之后会生成一个u-boot文件,将其另存为u-boot.elf文件,此文件在生成Boot image文件时会使用到。