【Xilinx】MPSOC启动流程(五)- Uboot

24 篇文章 1 订阅
14 篇文章 15 订阅
该系列博客专注于Xilinx平台的PS端ARM部分开发,介绍了uboot启动后如何进入倒计时,以及在倒计时结束后如何自动启动Linux内核。主要涉及autoboot_command检查、命令行处理、脚本启动(如QSPI和EMMC/SD启动方式),通过boot.scr脚本执行启动配置。
摘要由CSDN通过智能技术生成

此系列博客,仅对Xilinx平台PS端(ARM部分)开发做介绍,不对PL(FPGA)做过多介绍。

目录

五. run_main_loop

5.1 main_loop

六. 自动执行启动内核

6.1 autoboot_command

​​​​​​​6.2 脚本启动

6.2.1 ​​​​​​​QSPI

​​​​​​​6.2.2 EMMC/SD启动


五. 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执行脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有意思科技

给与不给,我都会更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值