uboot启动流程-涉及s_init汇编函数

一. uboot启动涉及函数

本文简单分析uboot启动流程中,涉及的汇编函数:

lowlevel_init函数调用的函数:s_init 函数

save_boot_params_ret函数调用的函数:_main 函数

本文继上一篇文章的学习,地址如下:

uboot启动流程-涉及lowlevel_init汇编函数_凌肖战的博客-CSDN博客

二. uboot 启动流程涉及的汇编函数

1. s_init 函数

在之前的文章学习中,已经知道 lowlevel_init 函数后面会调用 s_init 函数, s_init 函数定义在文件
arch/arm/cpu/armv7/mx6/soc.c 中,如下所示:

复制代码
808 void s_init(void)
809 {
810 struct anatop_regs *anatop = (struct anatop_regs 
*)ANATOP_BASE_ADDR;
811 struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
812 u32 mask480;
813 u32 mask528;
814 u32 reg, periph1, periph2;
815
816 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
817 is_cpu_type(MXC_CPU_MX6ULL) || is_cpu_type(MXC_CPU_MX6SLL))
818 return;
.......
850 writel(mask528, &anatop->pfd_528_clr);
851 }

在第 816 行会判断当前 CPU 类型,如果 CPU 为 MX6SX 、 MX6UL 、 MX6ULL 或 MX6SLL中的任意一种,那么就会直接返回,相当于 s_init 函 数 什 么 都 没 做 。 所 以 对 于 I.MX6UL/I.MX6ULL 来说,s_init 就是个空函数。

从 s_init 函数退出以后进入函数 lowlevel_init , 但是, lowlevel_init 函数也执行完成了,返回到了函数 cpu_init_crit ,函数 cpu_init_crit 也执行完 成了,最终返回到 save_boot_params_ret函数, save_boot_params_ret函数的调用关系如下:

这里的 s_init函数,对 于 I.MX6UL/I.MX6ULL来说,s_init 就是个空函数,就是说什么也没有直接返回了。

调用关系可以看出:
接下来要执行的是 save_boot_params_ret 中的_main 函数。

下一篇文章分析 :_main汇编函数。

相关推荐
Marry Andy6 分钟前
Atlas 300l Duo部署qwen3_32b_light
linux·人工智能·经验分享·语言模型·自然语言处理
微露清风15 分钟前
系统性学习Linux-第三讲-进程概念
linux·运维·学习
请你喝好果汁64115 分钟前
Linux-sh -c \dirname
linux·运维·服务器
Trouvaille ~15 分钟前
【Linux】线程同步与互斥(四):线程池与任务管理
linux·运维·服务器·c++·操作系统·线程池·日志系统
ONLYOFFICE21 分钟前
如何在 Fedora 43 ARM 架构设备上安装 ONLYOFFICE 桌面编辑器
arm开发·编辑器
qinyia23 分钟前
如何在服务器上查看网络连接数并进行综合分析
linux·运维·服务器·开发语言·人工智能·php
思麟呀26 分钟前
进程间通信
linux·运维·服务器
老兵发新帖30 分钟前
Ubuntu上使用企业微信
linux·ubuntu·企业微信
阿钱真强道39 分钟前
10 jetlinks-mqtt-直连设备-属性-读取-返回
linux·服务器·网络·鸿蒙
燃于AC之乐41 分钟前
【Linux系统编程】Shell解释器完全实现:从命令解析、环境变量管理到内建命令的全面解析
linux·操作系统·命令行工具·进程控制·shell编程