k73 uboot 和emmc启动移植
参考:socfpga_arria5.h
#define CONFIG_BOOTCOMMAND "run mmcload; run mmcboot"
#define CONFIG_EXTRA_ENV_SETTINGS \
"verify=n\0" \
"loadaddr= " __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
"ramboot=setenv bootargs " CONFIG_BOOTARGS ";" \
"bootm ${loadaddr} - ${fdt_addr}\0" \
"bootimage=zImage\0" \
"fdt_addr=100\0" \
"fdtimage=socfpga.dtb\0" \
"fsloadcmd=ext2load\0" \
"bootm ${loadaddr} - ${fdt_addr}\0" \
"mmcroot=/dev/mmcblk0p2\0" \
"mmcboot=setenv bootargs " CONFIG_BOOTARGS \
" root=${mmcroot} rw rootwait;" \
"bootz ${loadaddr} - ${fdt_addr}\0" \
"mmcload=mmc rescan;" \
"load mmc 0:1 ${loadaddr} ${bootimage};" \
"load mmc 0:1 ${fdt_addr} ${fdtimage}\0" \
"qspiroot=/dev/mtdblock0\0" \
"qspirootfstype=jffs2\0" \
"qspiboot=setenv bootargs " CONFIG_BOOTARGS \
" root=${qspiroot} rw rootfstype=${qspirootfstype};"\
"bootm ${loadaddr} - ${fdt_addr}\0"
mmcload先扫描,分别家长zImage和dtb
然后再设置bootargs,增加root部分参数为mmcroot,然后再用bootz启动
这里补充一下bootz这个命令:
bootz命令用来从内存启动zImage文件
例如
tftp 0x8000 zImage 将内核下载到0x8000位置
tftp 0x100 test.dtb 将设备树下载到0x100位置
bootz 0x8000 - 0x100 则可以启动系统 注意减号前后有空格
比较复杂的引导可以看这篇:
https://www.cnblogs.com/aaronLinux/p/6629376.html?utm_source=itdadao&utm_medium=referral