U-boot的目的是为了启动内核。
整个工作流程具体如下:
- 读出内核
- 启动内核
- 设置启动参数
- 跳到入口地址
环境变量bootcmd中有两个指令:
nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
1.
其中 nand read.jffs2 0x30007FC0 kernel; 一句,就是读出内核
2.
此后执行命令 bootm 0x30007FC0 ,即启动内核。
在do_bootm命令中,会将内核放到正确的加载地址(通过Uimage)。之后再调用do_bootm_linux命令。
在do_bootm命令中,主要做两个事情。
一是设置启动参数,二是跳到入口地址。
启动参数主要有四个:setup_start_tag,setup_memory_tags,setup_commandline_tag,setup_end_tag。当然中间还有其他启动参数。
至此。U-BOOT完毕。
时间: 2024-10-10 16:53:37