嵌入式面试问题之uboot启动流程分析

首先整个uboot启动,可以分为两个部分,一部分是由汇编语言编写的arch级初始化,另一部分为c语言编写的板级初始化

arch初始化
从_start函数入口开始,分别进行:
1、关闭中断,设置SVC模式(svc又称为管理模式,在启动过程中,中断环境并没有完全准备好,也就是中断向量表和中断处理函数并没有完成设置,一旦有中断产生,可能会导致预想不到的问题,或者是程序跑飞。因此,在准备好中断环境之前,需要关闭所有中断。
2、禁用MMU、TLB
3、初始化一些关键的寄存器,时钟寄存器,看门狗等

板级初始化
从_main()函数开始执行 :
1、堆栈环境的设置
2、代码重定向之前的板级初始化,如定时器,I2C/SPI,串口等
3、进行代码重定向
4、然后就是代码重定向后的板级初始化,emmc , 网络,nandflsh,中断的初始化
5、进入命令行等待状态,等待终端输入命令以及对命令进行处理

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值