uboot学习关于ARM工作寄存器与协处理器笔记(转载请注明出...
程序状态寄存器(The Current Program Status Register (CPSR):Q, bit Set to 1 to indicate overflow or saturation occurred in some instructions, normally related to digital signal processing (DSP).
设置CPSR: msr r0, cpsr bic r0, #0x1f orr r0, #0xd3 msr cpsr, r0
处理器的工作模式
CPU工作在不同的模式下,需要不同的工作寄存器组匹配
工作模式的目的:方便管理当前工作寄存器
处理器的八种基本工作模式:
User:特权模式化大部时间扫行在该模式下
FIQ:当一个高优先级(Fast)中断产生时进入该模式
IRQ:当一个低优先级(Normal)中断产生时将进入该模式
Supervisor:当复位或软中断指令执行时将会进入该模式
Undef: 当扫行未定义指令时,进入该模式
System:使用和User模式相同的寄存器集的特权模式
Cortex -A特有模式:
Monitor:为了安全而扩展出的用于安全监控代码的模式
Cortex -A 系列寄存器组织概要
R0~R7:所有工作模式共用
R8~R12:除去FIQ工作模式其它都共用
R13~R14:均单独使用
R15:所胡工作模式共用
CPSR:所有工作模式共用
SPSR:队了User和Sys没有其它工作模式均单独使用
寄存器的功能
R0~R3:用来承接返回值和参数,R0接收返回值,(栈可以辅助存储参数)
R4~R11:用来承接局部变量(栈可以辅助存储局部变量)
R12:(又叫lp)保存栈指针
R13:SP栈指针,(设置栈)
R14:LR链接寄存器,保存程序寄存器
R15:PC程序寄存器
CPSR:程序状态寄存器
关于协处理器:
- CP0~CP7 ARM留给各生产商使用
-
- CP8~CP9 保留
-
- CP10 一般用于单精度浮点数计算
-
- CP11 一般用于双精度浮点数计算
-
- CP12~CP13 保留ARM公司以后使用
-
- CP14 一般用于Debug调试
-
- CP15 cache 缓存的管理、mmu内存的管理、中断向量的管理等,编程时用的最多
CP15 是一系列寄存器的集合
/* Set v = 0 in CP15 SCTRL Register - for VBAR to point to vector */
mrc p15, 0, r0, c1, c0, 0 @ Read CP15 SCTRL Register
bic R0, #CR_V @ V = 0
mcr p15, 0, r0, c1, c0, 0 @Write CP15 SCTRL Register
读协处理器指令:
mcr p15, opc1, CRn, CRm, opc2
0 c0 c1 0
/* Set vector address in CP15 VBAR Register */
ldr r0, =_start
mcr p15, 0, r0, c12, c0, 0 @ Set VBAR
地址向量映射过程:
支持一波先!!!!!!!!!!!{:lol:}{:lol:}{:lol:} 再支持一波{:dizzy:}!!!!!!!!!!! 期待继续 不明觉厉
页:
[1]