远去的记忆 发表于 2016-12-24 03:29:58

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

地址向量映射过程:

OneRain 发表于 2016-12-24 09:17:47

支持一波先!!!!!!!!!!!{:lol:}{:lol:}{:lol:}

s1j2h3 发表于 2016-12-24 22:20:54

再支持一波{:dizzy:}!!!!!!!!!!!

xxc007 发表于 2016-12-24 22:57:05

期待继续

fengyunyu 发表于 2016-12-25 10:19:28

不明觉厉
页: [1]
查看完整版本: uboot学习关于ARM工作寄存器与协处理器笔记(转载请注明出...