1.配置文件路径
/u-boot-xlnx/include/configs
2.修改启动方式和其他硬件配置,修改zynq_zed.h,常见的修改如下:
比如nand启动,则修改宏
#define CONFIG_ZYNQ_QSPI ==》 CONFIG_NAND_ZYNQ
如果是UART0启动,则需要修改如下:(这个十分重要,需要和逻辑工程师确认清楚)
#define CONFIG_ZYNQ_SERIAL_UART1 ==》 CONFIG_ZYNQ_SERIAL_UART0
修改了DDR大小
#define CONFIG_SYS_SDRAM_SIZE (512 * 1024 * 1024) ==》 根据自己需要修改,比如硬件上是1024M DDR,分给128M给逻辑,则软件大小应该为895M。
3.修改其他,在 zynq_common.h中修改,常见修改如下:
a.修改自己程序在flash上的位置
"qspiboot=echo Copying Linux from QSPI flash to RAM... && " \
"sf probe 0 0 0 && " \
"sf read ${kernel_load_address} 0x100000 </span>${kernel_size} && " \
"sf read ${devicetree_load_address} 0x600000 </span>${devicetree_size} && " \
"echo Copying ramdisk... && " \
"sf read ${ramdisk_load_address} 0x620000 </span>${ramdisk_size} && " \
"bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
b.修改内核,u-boot等的大小
"kernel_size=0x500000\0" \
"devicetree_size=0x20000</span>\0" \
"ramdisk_size=0x5E0000</span>\0" \
"boot_size=0xF00000\0" \
"fdt_high=0x20000000\0" \
比如: u-boot在FLASH一个地方,设置一个标志位为1, 正常启动后,清除这个标志位。
u-boot启动时,如果判断这个标志位为0,表明上次正常启动,则这次也正常启动,如果为1,表明上次没有正常启动,则转入备份系统。
4. u-boot的编译,分三步:
make distclean
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
5. 编译完成后,得到两个文件:
u-boot,这就是我们需要的u-boot文件。
在tools下,还有mkimage。 这个文件也是有用的。用来在内核(uImage)和根文件系统(ramdisk)前边添加64字节头部信息。具体参阅内核编译章节。