ZYNQ平台学习--(3)u-boot编译

1.BOOT.bin介绍

映像文件BOOT.BIN一般包括:FSBL,Bitstream和SSBL这三个文件,其中Bitstream是配置PL端程序,是可选项,在制作Linaro系统的时候并不需要。FSBL是first stage boot loader,文件的制作需要使用Vivado环境;SSBL是Second Stage Boot Loader,这里使用的是Xilinx公司提供的u-boot。

2.生成FSBL

参考《ZYNQ平台学习–(2)生成FSBL》,生成FSBL的ELF文件。

3.生成u-boot

u-boot采用的是xilinx官方提供的u-boot包来生成的。
先设置好Linux的开发环境,然后进入命令行模式。操作步骤如下所示。
1. 获取u-boot包
$ git clone git://git.xilinx.com/u-boot-xlnx.git
2. 根据使用的开发工具的版本,选择对应的分支,例如在本项目中使用的Vivado 2015.4,故选择u-boot的相应版本。
$ cd u-boot-xlnx
$ git checkout xilinx-v2015.4
3. 编辑配置文件
对单板u-boot的配置主要通过配置头文件来完成,比如xilinx提供的u-boot里,如果要对zedboard配置,可以使用zynq_zed.h这个头文件。配置指令如下:
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config
在实际使用,需要针对自己的板卡和应用进行一些修改。例如,板卡的名称为zynq_seb。进入u-boot-xlnx/configs文件夹,将zynq_zed_defconfig文件复制一份,并重新命名为zynq_seb_defconfig,该文件用于配置板卡的功能。然后修改该文件的内容,如下所示:

CONFIG_ARM=y
CONFIG_ARCH_ZYNQ=y
CONFIG_TARGET_ZYNQ_SEB=y
CONFIG_DEFAULT_DEVICE_TREE="zynq-seb"
# CONFIG_SYS_MALLOC_F is not set
CONFIG_SPL=y
CONFIG_FIT=y
CONFIG_FIT_VERBOSE=y
CONFIG_FIT_SIGNATURE=y
# CONFIG_CMD_IMLS is not set
# CONFIG_CMD_FLASH is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_OF_EMBED=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_BAR=y

主要是修改板卡名称,其他的部分基本参照xilinx的zed。

进入u-boot-xlnx/include/configs,将zynq_common.h复制一份,修改名称为zynq_seb.h。然后修改启动方式。修改的内容如下:

#define CONFIG_EXTRA_ENV_SETTINGS   \
    "ethaddr=00:0a:35:00:01:22\0"   \
    "kernel_image=uImage\0" \
    "kernel_load_address=0x2080000\0" \
    "devicetree_image=devicetree.dtb\0" \
    "devicetree_load_address=0x2000000\0"   \
    "bitstream_image=fpga.bit\0"    \
    "fdt_high=0x20000000\0" \
    "initrd_high=0x20000000\0"  \
    "sdboot= mmcinfo && " \
            "echo - load ${bitstream_image} to PL... && " \
            "fatload mmc 0 0x200000 ${bitstream_image} && " \
            "fpga loadb 0 0x200000 ${filesize} && " \
            "echo - Copying Linux from SD to RAM... && " \
            "fatload mmc 0 ${kernel_load_address} ${kernel_image} && " \
            "fatload mmc 0 ${devicetree_load_address} ${devicetree_image} && " \
            "setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait &&" \
            "bootm ${kernel_load_address} - ${devicetree_load_address}  \0" \

进入u-boot-xlnx/arch/arm/dts,将zynq-zed.dts复制一份,重命名为zynq-seb.dts,在这里直接借用ZED的设备树文件,然后在u-boot-xlnx/arch/arm/dts/Makefile中增加该设备树文件。
4. 修改u-boot-xlnx/arch/arm/mach-zynq/Kconfig文件,增加如下内容:
config TARGET ZYNQ_SEB
bool "Zynq SeBoard"
default "zynq_seb" if TARGET_ZYNQ_SEB
5. 编译,使用如下指令:
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_seb_config
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
6. 将生产u-boot文件改名为u-boot.elf。

4.合成BOOT.bin

打开SDK软件,进入工程。打开Xilinx Tools-Create Boot Image。如图1所示。


图1 生成BOOT

首先添加上一节中生成的FSBL文件,然后添加u-boot.elf。然后点击Create Image。生产BOOT.bin。

该文件可以用来启动ZYNQ。

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值