核心初始化基本介绍
1.核心初始化主要工作
2.设置中断向量表
arm处理器支持7种类型的异常,如下表:
异常向量:当一种异常发生的时候,ARM处理器会跳转到对应该异常的固定地址去执行异常处理程序,而这个固定的地址,就称之为异常向量。
异常向量表:由七个异常向量及其处理函数跳转关系组成的表即为异常向量表。
3.设置svc模式
通过设置程序状态寄存器Current Program Status Register (CPSR) ,来设置模式。
步骤:先利用mrs将cpsr的值保持到通用寄存器中,清零相应5位(bic),置1(orr);再利用msr将通用寄存器的值存回cpsr寄存器中。
4.关闭看门狗
Watchdog在硬件上实现了计时功能,启动计时后,用户(软件)必须在计时结束前重新开始计时,俗称“喂狗”,如果到超时的时候还没有重新开始计时,那么它就认为系统是死机了,就自动重启系统。
通过设置WATCHDOG TIMER CONTROL (WTCON) REGISTER寄存器,来关闭看门狗。
5.关闭中断
步骤:
1.CPSR寄存器的I,F位均设置为1(在设置svc模式可以设置)
2.设置中断屏蔽寄存器
6.关闭mmu与cach
6.1 arm存储体系
6.2 cache
Cache是一种容量小但存取速度非常快的存储器,它保存最近用到的存储器中数据的拷贝。对于程序员来说,Cache是透明的。它自动决定保存哪些数据、覆盖哪些数据。按照功能划分:
I-Cache: 指令Cache,用于存放指令
D-Cache: 数据Cache,用于存放数据
6.3 虚拟地址
虚拟地址:程序中使用的地址。
物理地址:物理存储单元实际的地址
使用虚拟地址的作用:
可以让进程使用更大的空间(若物理地址为64MB,只能为64MB,访问较小,但当引入虚拟地址后,虚拟地址的空间一般为4G);
可以解决地址冲突(多个应用程序访问同一个物理地址)。
6.4 设置方法
1. 设置Cache operations让cache无效
2. 根据arm11核的手册,设置Control Register 关闭I/D cache,mmu