ARM简约介绍
来源:互联网 发布:手机淘宝签到在哪里 编辑:程序博客网 时间:2024/05/02 05:04
ARM有七个基本工作模式:
1、User:非特权模式,大部分任务执行在这种模式
2、FIQ:当一个高优先级中断产生时将会进入这种模式
3、IRQ:当一个低优先级中断产生时将会进入这种模式
4、Supervisor:当复位或软中断指令执行时将会进入这种模式
5、Abort:当存取异常时将会进入这种模式
6、Undef:当执行未定义指令时会进入这种模式
7、System:使用和User模式相同寄存器集的特权模式
指令集:ARM指令集(32-bit),Thumb指令集(16-bit),Jazelle指令集(8-bit)
网络访问寄存器过程:R0,R1寄存器->cache->内存->磁盘->网络
寄存器:ARM有37个32-Bits长的寄存器,一个PC(the program counter,r15),一个CPSR(current program status register),5个SPSR(save program status register),30个通用寄存器(r0-r14,其中r13(the stack pointer,sp),r14(the link register,lr),User占r0到r14,FIQ占r8到r14其余都只有r13跟r14)。
异常处理:1、拷贝CPSR到SPSR_<mode>
2、设置适当的CPSR位
3、保存返回地址到LR_<mode>
4、 设置PC为相应的异常向量
返回时:1、从SPSR_<mode>恢复CPSR
2、从LR_<mode>恢复PC
异常优先级:Reset->Data Abort->FIQ->IRQ->Prefetch Abort->SWI->Undefined instruction
FIQ vs IRQ:FIQ优先级大于IRQ,FIQ的设计使中断响应尽可能快。
C语言在函数定义是使用关键词“__irq”来写一个简单的中断处理程序。
软中断(SWI)C中,使用关键字“__swi”来定义一个软中断函数。(硬中断是外部设备对CPU的中断,软中断通常是硬中断服务程序对内核的中断,信号则是由内核(或其他进程)对某个进程的中断)
ARM处理器内核:ARM7系列使用3级流水线。(F-取指,D-解码,E-执行)
带cache的ARM7TDMI:cpu先判断cache中有无需要的数据,若无则访问内存,内存数据存入cache,然后cpu再到cache中取。
ARM9TDMI:哈佛结构(可以实现对指令和数据存储器的同时访问),采用5级流水线.
ARM9E,ARM10E:6级流水线,ARM11.
虚拟地址:CPU发出的经MMU通过页表(存放规则)映射到物理地址。(一级页表项1M,二级页表项4K,二级页表项是从一级页表项细分而来,先访问一级页表项,在根据一级页表项访问二级页表项)
ARM及Thumb指令集:
算术指令:ADD ADC SUB SBC RSB(反相减) RSC
逻辑指令:AND ORR EOR(异或) BIC(op2取反再与Rn与)
比较指令:CMP(减) CMN(加) TST(与) TEQ(异或,Rn,Op2)
数据搬移:MOV MVN(按位取反)
上述指令只能对寄存器操作,不能针对存储器
语法:<操作> {<cond>} {s} Rd(目标寄存器),Rn(源寄存器),Operand2
只有比较指令影响标志位-不指定Rd,数据搬移不指定Rn,第二操作数通过桶型移位器(LSL,ASR,LSR,ROR,RRX)送到ALU中。
为允许装载大常数,汇编器提供了一条伪指令:ADR
Thumb指令集不是一个“好”指令集。
c/c++编译器提示和技巧:
优化级别:-O0,-O1,-O2
volatile:可能发生意想不到的改变。
内嵌函数(__inline),C/C++C和汇编混合模式编程。。。。
- ARM简约介绍
- ARM介绍
- arm介绍
- arm介绍
- ARM介绍
- arm介绍吧
- ARM寄存器介绍
- ARM寄存器介绍
- ARM amba总线介绍
- ARM amba总线介绍
- ARM开发工具介绍
- ARM相关软件介绍
- 典型ARM体系结构介绍
- ARM Cortex-A8 介绍
- ARM AMBA总线介绍
- ARM寄存器介绍
- ARM 中断向量介绍
- ARM 中断向量介绍
- VBS教程
- java类加载机制
- mongodb在NUMA机器上运行注意点
- I2C 驱动核心的数据结构
- Oracle VM VirtualBox与与主机共享资源
- ARM简约介绍
- MFC多文档应用程序 运行时如何去掉开始时的子窗口
- 【消除表单默认值】表单获得焦点后默认值消失
- Log4j配置 (部分转载)
- 内核配置
- question list
- [问题?]UL和select同样结构,为什么UL实现了,select实现不了?
- 密码验证
- TMS320C6713和TMS320C6713B有什么区别?