MIPS4k处理器boot学习

本文介绍了MIPS架构下的寄存器约定及其用途,并概述了MIPS核在bootloader阶段的初始化流程,包括清除CP0 WATCH寄存器、初始化CP0状态寄存器、设置状态控制寄存器、初始化缓存以及外围接口。
摘要由CSDN通过智能技术生成

MIPS寄存器约定:

寄存器编号/助记符/用法
0 zero 永远返回值为0
1 at 用做汇编器的暂时变量
2-3 v0, v1 子函数调用返回结果
4-7 a0-a3 子函数调用的参数
8-15 t0-t7 暂时变量,子函数使用时不需要保存与恢复
24-25 t8-t9
16-25 s0-s7 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返
回之前,从而调用函数知道这些寄存器的值没有变化。
26,27 k0,k1 通常被中断或异常处理程序使用作为保存一些系统参数
28 gp    全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern"
变量。
29 sp     堆栈指针
30 s8/fp 第9个寄存器变量。子函数可以用来做桢指针
31  ra    子函数的返回地

===============================================

在bootloader下,MIPS核的初始化用汇编语言写成,基本过程是

1〉清除CP0的WATCH寄存器    

mtc0    zero, C0_WATCHLO  /* First thing: clear watch regs */
    mtc0    zero, C0_WATCHHI

2〉初始化CP0状态寄存器,禁止软硬件中断以及选择boot异常向量地址

3〉根据需要建立MIPS的状态和控制寄存器,通常会清除(ERL、EXL位)

4〉初始化cache,先初始化ICACHE,在初始化DCACHE(具体过程)

5〉开始初始化外围接口(init_platform),主要是初始化时钟系统、EMIF接口等。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值