**
第一部分支持zImage、dtb、ramdisk独立启动,支持(bootz zImage-dtb地址 ramdisk地址:ramdisk大小 dtb地址)的格式启动
1.1. 选择bootz模式启动zImage内核
**
之前选择bootm模式启动boot.im,boot.img带有its格式的header,需要根据header去header。现在直接启动zImage,需要通过do bootz()函数启动。方式如下:
1.1.1. 在uboot目下执行make menuconfig,选中bootz
1.1.2. 选中Command line interface —> Boot commands —> bootz
1.1.3. 选中Enable a default value for bootcmd修改bootcmd value为:bootz 0x82100000 0x860f8000:0x01000000
1.1.4. 执行make savedefconfig保存.config到defconfig
1.1.5. 执行cp defconfig configs/finch_fpga_defconfig保存到本地配置文件
1.2. 支持rootfs.cpio.gz直接启动
在image.c的1069行可以看到要想支持rootfs.cpio.gz启动,必须先定义CONFIG_SUPPORT_RAW_INITRD
UBOOT下定义CONFIG_SUPPORT_RAW_INITRD
至此设置启动参数bootz zImage地址 ramdisk地址:ramdisk大小 dtb地址即可完成启动
(eg: bootz 0x82100000 0x860f8000:0x01000000 0x833f8000不同芯片不一样)
第二部分支持zImage和dtb拼接成zImage-dtb启动,支持bootz zImage-dtb地址 ramdisk地址:ramdisk大小的格式启动
2.1. 支持dtb给kernel传参
从下面这段代码可以看fdt image无法直接传递地址时,需要使能TAG参数
使能TAG参数
2.2. 内核配置
Kernel目录下,使能CONFIG_ARM_APPENDED_DTB功能,该功能是将DTB文件拼接到Image的后面,步骤如下:
2.2.1. 执行make finch_fpga_defconfig ARCH=arm
2.2.2. make menuconfig ARCH=arm
2.2.3. 选中Use appended device tree blob to zImage (EXPERIMENTAL)和Supplement the appended DTB with traditional ATAG information
2.2.4. make savedefconfig ARCH=arm保存defconfig
2.2.5. cp defconfig arch/arm/configs/finch_fpga_defconfig
2.2.6. git diff查看结果如下: