uboot启动流程分析2 - reset函数

  • reset
    _start开始是中断向量表,先跳转到了reset,arch/arm/cpu/armv7/start.S
    reset -> save_boot_params -> save_boot_params_ret
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    43行,mrs是读取cpsr中的数值到r0中,cpsr是程序状态寄存器
    44行,and是与运算,将r0的低五位保存到r1中
    45行,比较是不是出于hyp模式
    46行,bic位清除指令,ne不等于
    47行,orr逻辑或运算,设置SVC模式
    48行,清除FIQ和IRQ位
    49,行,更新最新的cpsr值
    以上执行实现,将处理器设置为SVC模式,并关闭FIQ和IRQ
  • 设置中断向量
    在这里插入图片描述
    58行,读取CP15 SCTLR寄存器,
    59行,#define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */,SCTLR的第13位为V,表示向量表控制 位,为0,表示向量表基地址是0,软件可以重定位,为1,表示向量表基地址为0XFFFF0000,不能重定位。bic用位清除指令,将V清零,可以软件重定位。
    60行,将r0写入SCTLR寄存器中
    63行,_start的起始地址赋给r0,是整个uboot的起始地址,也是向量表的起始地址
    64行,将r0的数值写入到c12寄存器,也就是VBAR寄存器,完成向量表的重定位
    以上先清除V位,然后将_start地址写入VBAR,完成设置中断向量表的偏移
  • 初始化设置cp15和crit寄存器
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AIOT技术栈

你的鼓励将是我创作的最大动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值