- 1、在uboot源码中include/configs/xilinx_zynqmp.h下存放着环境变量
简单说,sd卡和emmc使用的是MMC设备,故sd和emmc都是使用同一环境变量
1、先判断sd卡中是否存在uEnv.txt环境变量的文件存在
“run uenvboot;”
--> "if run loadbootenv; then "
-->“loadbootenv=fatload mmc ${mmc_device_env} ${loadbootenv_addr} ${bootenv}\0”
环境变量中"mmc_device_env初始值为1
在目录board/xilinx/zynqmp/zynqmp.c 中会根据拨码开关的值,设置环境变量mmc_device_env,以便去对应的启动设备寻找固件
“bootenv=uEnv.txt\0”
“loadbootenv_addr=0x2000000\0”
如果从SD卡启动,下列uEnv.txt文件将会去mmc的0分区中寻找
-->“loadbootenv=fatload mmc 0 0x2000000 uEnv.txt\0”
2、运行sd_rootfs_args
-->"run sd_rootfs_args && "
这里设置运行的串口、文件系统
“sd_rootfs_args=setenv bootargs console=ttyPS0,115200 " “root=/dev/mmcblk${mmc_device_env}p2 rw earlyprintk rootfstype=ext4 zynqmp-dpsub.gfx_init_fmt=2 \0” dpsub.gfx_init_fmt=2 \0”
3、下载内核
"fatload mmc ${mmc_device_env} ${kernel_load_address} ${kernel_image} && "
4、下载设备树
"fatload mmc ${mmc_device_env} ${devicetree_load_address} ${devicetree_image} && "