u-boot启动调用内核
不用的cup或者不同的平台开发板,u-boot都是从
main_loop(common/main.c)
开始引导内核,此时与架构版、板级就无关了
u-boot执行至main_loop(common/main.c)
----->
bootdelay_process()(common/autoboot.c) 会进行倒计时 ---> ①/②
①--->获取环境变量bootcmd 回到main.c: autoboot_command(common/autoboot.c执行调用环境变量)---> 期间会调用一系列环境变量
----
-->
最终调用command为
sysboot
(
cmd/pxe.c
) --->
bootz指令(cmd/bootz.c)下的
d
o_bootz
()
函数(引导内核启动)
②--->有按键按下 回到main.c: 执行 cli_loop() (common/cli.c) --> cli_simple_loop()(位于common/cli_simple.c) 开始进入指令输入界面
bootdelay_process:
得到环境变量
bootcmd(启动内核)
调用一系列环境变量:初始化一些配置
Sysboot命令:
do_sysboot()函数,最后会从EMMC的boot分区中
读取内核的镜像
zImage
和设备树
dtb,并最后调用
do_bootz
()函数,
引导
linux
启动。
nova_driver命令在
l
abel_boot函数(cmd/pxe.c)中添加执行的,
do_sysboot -> handle_pxe_menu
--->
l
abel_boot
cli_simple_loop():死循环的等待读取执行命令,,此函数处可以自己可以加点东西
u-boot常用环境变量:
框架: