此系列博客,仅对Xilinx平台PS端(ARM部分)开发做介绍,不对PL(FPGA)做过多介绍。
目录
五. run_main_loop
此函数实现uboot 启动以后会进入 倒计时,如果在倒计时结束之前按下按下回车键,那么就会进入 uboot 的命令模式,如果倒计时结束以后都没有按下回车键,那么就会自动启动 Linux 内核。

5.1 main_loop

1.autoboot_command:检查倒计时是否结束

2.cli_loop: uboot 的命令行处理函数

六. 自动执行启动内核
6.1 autoboot_command
当在倒计时没有按键按下,则会执行autoboot_command

这里S的值为run distro_bootcmd


6.2 脚本启动
Distro_bootcmd的值为脚本,寻找对应的启动方式的环境变量值


最终会查找boot.scr 脚本去执行镜像,设备树等的搬运,以及启动工作

6.2.1 QSPI
若为QSPI启动方式,执行bootcmd_qspi0环境变量的内容
sf probe 0 0 0: 加载qspi驱动
sf read $scriptaddr $script_offset_f $script_size_f : 从qspi flash中读取脚本到内存中
source ${scriptaddr}: 执行脚本boot.scr

6.2.2 EMMC/SD启动
若为EMMC/SD启动方式,执行bootcmd_mmc0/1环境变量的内容: devnum=0/1; run mmc_boot

run mmc_boot -> run scan_dev_for_boot_part -> run scan_dev_for_boot ->
run scan_dev_for_scripts
scan_dev_for_scripts的内容为:查找MMC分区是否有boot.scr 脚本
若有脚本,则执行run boot_a_script
boot_a_script的值:load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} 加载分区中的脚本,并source执行脚本

该系列博客专注于Xilinx平台的PS端ARM部分开发,介绍了uboot启动后如何进入倒计时,以及在倒计时结束后如何自动启动Linux内核。主要涉及autoboot_command检查、命令行处理、脚本启动(如QSPI和EMMC/SD启动方式),通过boot.scr脚本执行启动配置。
2687

被折叠的 条评论
为什么被折叠?



