嵌入式微处理汇总word版Word格式.docx
- 文档编号:18721920
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:71
- 大小:3.43MB
嵌入式微处理汇总word版Word格式.docx
《嵌入式微处理汇总word版Word格式.docx》由会员分享,可在线阅读,更多相关《嵌入式微处理汇总word版Word格式.docx(71页珍藏版)》请在冰豆网上搜索。
零开销的循环指令:
采用硬件方式减少了循环的开销。
仅使用两条指令实现一个循环,一条是循环的开始并提供循环次数,另一条是循环体。
多媒体加速指令:
像素处理、多边形、3D操作等指令。
性能低端(低价,低性能)一般低端嵌入式微处理器的性能最多达到50MIPS,应用在对性能要求不高但对价格和功耗有严格要求的应用系统中。
中档,低功耗中档的嵌入式微处理器可达到较好的性能(如150MIPS以上),采用增加时钟频率、加深流水深度、增加Cache及一些额外的功能块来提高性能,并保持低功耗。
多数嵌入式系统有功耗的限制(特别是电池供电的系统),它们不支持使用风扇和其他冷却设备。
降低工作电压:
1.8v、1.2v甚至更低,而且这个数值一直在下降。
提供不同的时钟频率:
通过软件设置不同的时钟分频。
关闭暂时不使用的功能块:
如果某功能块在一个周期内不使用,就可以被完全关闭,以节约能量。
提供功耗管理机制运行模式(RunningMode):
处理器处于全速运行状态下。
待命模式(StandbyMode):
处理器不执行指令,所有存储的信息是可用的,处理器能在几个周期内返回运行模式。
时钟关闭模式(clock-offmode):
时钟完全停止,要退出这个模式系统需要重新启动。
影响功耗的其他因素还有总线(特别是总线转换器,可以采用特殊的技术使它的功耗最小)和存储器的大小(如果使用DRAM,它需要不断的刷新)。
为了使功耗最小,总线和存储器要保持在应用系统可接受的最小规模。
处理器的价格受如下因素影响:
处理器的特点:
功能块的数目、总线类型等。
片上存储器的大小。
芯片的引脚数和封装形式:
如PQFP(PlasticQuadFlatPackage)通常比BGA(BallGridArrayPackage)便宜。
芯片大小(diesize):
取决于制造的工艺水平。
代码密度(codedensity):
代码存储器的大小将影响价格,不同种类的处理器有不同的代码密度:
CISC芯片代码密度高,但结构复杂,其额外的控制逻辑单元使价格变得很高;
RISC芯片拥有简单的结构,代码密度低,因为其指令集简单;
VLIW代码密度最低,因为它的指令字倾向于采用多字节。
ARM/Thumb的命名规范以ARMv开头
ARM指令集的版本号(1-5)
可变功能标识(T—表示支持Thumb指令,M---表示支持乘法指令,E—增强型DSP指令,J—Java加速器Jazelle,SIMD—ARM媒体功能扩展),但是ARMv4和其上的版本缺省都支持M功能,因此ARMv4和其上的版本的标识中可以不用标识M.
如果3中描述的功能不存在,则在该功能标识符前加x
规则:
ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}
x--处理器系列y--存储管理/保护单元z--cacheT--支持Thumb指令集D--支持片上调试M--支持快速乘法器I--支持EmbeddedICE,支持嵌入式跟踪调试E--支持增强型DSP指令J--支持JazelleF--具备向量浮点单元VFP-S--可综合版本如ARM7TDMI
ARM内核采用RISC体系结构。
ARM体系结构的主要特征如下:
(1)大量的寄存器,并可以用于多种用途。
(2)采用Load/Store体系结构。
(3)每条指令都条件执行。
(4)采用多寄存器的Load/Store指令。
(5)单周期指令内同时完成移位操作和ALU。
6)通过协处理器指令集来扩展ARM指令集。
(7)体系支持Thumb指令集
处理器有两种工作状态:
ARM:
32位,执行字对准的ARM指令
Thumb:
16位,执行半字对准的Thumb指令
ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容
进入Thumb状态:
执行BX指令,并设置操作数寄存器的状态(位[0])为1。
在Thumb状态进入异常(IRQ,FIQ,UNDEF,ABORT,SWIetc.),当异常处理返回时自动转换到Thumb状态进入ARM状态:
执行BX指令,并设置操作数寄存器的状态(位[0])为0。
进入异常时,将PC放入异常模式链接寄存器中,从异常向量地址开始执行也可进入ARM状态
注:
BX为跳转指令,跳转到指定地址执行指令。
这样,当我们需要要跳转到Thumb指令处执行时,必须将指令地址的最后一位置1(指令实际传送地址给PC之前会把最低位的1清除掉的。
这个1只是为了判断是要切换到Thumb状态,如果程序员想切换到Thumb则必须在地址最低位+1)。
而bx再跳转到ARM指令时就无需考虑这些了,就不用像上面的+1处理了。
ARMCortex-A8处理器有40个32位寄存器寄存器
32个通用寄存器,1个程序计数器,7个状态寄存器
这些寄存器不能同时看到,不同的处理器状态和工作模式确定哪些寄存器是对编程者是可见的。
ARM有40个32-Bits长的寄存器:
32个通用寄存器(完全通用,用于存放数据或地址)
1个PC,1个CPSR(currentprogramstatusregister),6个SPSR(savedprogramstatusregisters)
当前处理器的模式决定着哪组寄存器可操作.任何模式都可以存取:
相应的r0-r12(除FIQ模式外共用-FIQ只共用r0-r7)
相应的r13(thestackpointer,sp)和r14(thelinkregister,lr)
r15(theprogramcounter,pc),所有模式共用。
CPSR(currentprogramstatusregister,cpsr),所有模式共用
特权模式(除system模式)还可以存取:
相应的spsr(savedprogramstatusregister)
Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:
8个通用寄存器R0~R7;
程序计数器(PC);
堆栈指针(SP);
链接寄存器(LR);
有条件访问程序状态寄存器(CPSR)。
注意:
在发生异常时,处理器自动进入ARM状态。
异常发生时伴随的模式切换意味着,被调用的异常处理程序会访问:
它自己的堆栈指针(SP_<
mode>
)
它自己的链接寄存器(LR_<
它自己的备份程序状态寄存器(SPSR_<
如果是FIQ异常处理,5个其它的通用状态寄存器(r8_FIQtor12_FIQ)
其它寄存器和原来模式下的寄存器是相同的
R0-R7所有模式下,R0-R7所对应的物理寄存器都是相同的
这八个寄存器是真正意义上的通用寄存器,ARM体系结构中对它们没有作任何特殊的假设,它们的功能都是等同的。
在中断或者异常处理程序中一般都需要对这几个寄存器进行保存。
R8-R14访问的物理寄存器取决于当前的处理器模式,若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。
R8-R12各有两组物理寄存器:
一组为FIQ模式,另一组是除FIQ以外的其他模式。
R13-R14各有6个分组的物理寄存器,一个用于用户模式和系统模式,其他5个分别用于5种异常模式。
R13(也被称为SP指针)被用作栈指针,通常在系统初始化时需要对所有模式下的SP指针赋值,当CPU在不同的模式时栈指针会被自动切换成相应模式下的值。
R14为链接寄存器(LR)有两个用途,一是在调用子程序时用于保存调用返回地址,二是在发生异常时用于保存异常返回地址。
;
中断模式堆栈的设置(涉及到CPSR格式和MSR指令)
MSRCPSR_c,#0x000000D2;
切换到中断模式
LDRR1,=IrqStack
MOVSP,R1;
设置中断模式堆栈指针快速中断模式堆栈的设置
MSRCPSR_c,#0x000000D1;
切换到快速中断模式
LDRR1,=FiqStack
设置快速中断模式堆栈指针
中止模式堆栈的设置;
CPSR_c表示只操作CPSR中的C(控制)域,也就是只修改低8位。
在指令系统中MSR指令中会说明。
共有4个域,C控制域屏蔽字节(psr[7:
0]);
X扩展域屏蔽字节(psr[15:
8]);
S状态域屏蔽字节(psr[23:
16]);
F标志域屏蔽字节(psr[31:
24]);
R15
用作程序计数器(PC),可以被读写
读到的PC的值是PC当前值加8(2个指令的长度,三级流水线情况下),写PC则转移到写入地址执行程序。
ARMstate:
4字节对齐,最低两位bits[1:
0]永远为0(V4以上版本,V3以下是把写入值与0XFFFFFFFC与操作)
THUMBstate:
2字节对齐,最低位bit[0]为0
ARM7TDMI内核包含1个CPSR(当前程序状态寄存器)和5个供异常处理程序使用的SPSR。
CPSR在所有的模式下都是可以读写的,反映了当前处理器的状态,其包含:
:
4个条件标志(负(N)、零(Z)、进位(C)和溢出(V))
2个中断使能标志
5个当前处理器的模式编码位
其它的一些状态和控制标志(ARM/Thumb)
CPSR中剩余的保留位被保留将来使用。
为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。
另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。
外部中断:
由于CPU外部的原因而改变程序执行流程的过程,属于异步事件,又称为硬件中断,可以被屏蔽。
软件中断(又称自陷):
表示通过处理器所拥有的软件指令、可预期地使处理器正在执行的程序的执行流程发生变化,以执行特定的程序。
自陷是显式的事件,需要无条件地执行。
典型的自陷指令如Motorola68000系列中的Trap指令、ARM中的SWI指令和Intel80x86中的INT指令。
异常:
由CPU内部的原因(比如遇到非法指令)或外部的原因(比如访存的错误)引起的事件。
在X86上,当有异常发生时CPU是到指定的向量地址读取要执行的程序的地址.
PrefetchAbort:
指令预读取触发,指令流水线中预读取的指令无效时。
DataAbort由数据异常触发,一般由三种访问存储器的指令引起,LDR/STR、SWAP、LDM/STM多数据传送指令。
快速响应中断.FIQ向量放在最后,允许FIQ异常处理程序直接放在地址0x0000001C或0xFFFF001C开始的位置,也就是说直接从0x00000001C开始执行,这样省去了一个跳转指令。
每个向量只有4个字节(一条指令)如何从向量表跳转到真正的异常处理程序处执行?
(1)跳转指令B的跳转范围为±
32MB,但很多情况下不能保证所有的异常处理函数都定位在向量的32MB范围内。
(2)MOVPC,#imme_value。
这种办法将目标地址直接赋值给PC。
但这种方法受格式限制不能处理任意立即数。
这个立即数由一个8位数值循环右移偶数位得到(第三章详解)。
(3)LDRPC,[PC+offset]。
把目标地址先存储在某一个合适的地址空间,然后把这个存储器单元的32位数据传送给PC来实现跳转。
这种方法对目标地址值没有要求,但是存储目标地址的存储器单元必须在当前指令的±
4KB空间范围内。
LDRPC,[PC,#+0xFF0];
PC←[PC+8+0xFF0]相对寻址,把指定地址存储的地址值送给PC。
与本条PC相比偏移了0XFF0即
在中断向量表中不直接LDRPC,"
异常地址"
.而是使用一个标号,然后再在后面使用DCD定义这个标号,其原因是:
LDR指令只能跳到当前PC4kB范围内,而B指令能跳转到32MB范围,而现在这样在LDRPC,"
xxxx"
这条指令不远处用"
DCD定义一个字,而这个字里面存放最终异常服务程序的地址,这样可以实现4GB全范围跳转。
向量表中不直接LDRPC,“异常地址”.而是使用一个标号,然后再在后面使用DCD定义这个标号,其原因是:
伪指令:
DCD
用于分配一片连续的字存储单元并用指定的数据初始化。
格式:
标号
(或
DCDU
)
表达式
reset_addrDCDReset_Handler
为数据RestHandler分配内存,并使reset_addr指向这个数据(在此作为地址—异常程序真正的入口地址),编译时会把这个标号替换为实际地址。
AREAvectors,CODE,READONLY
ENTRY
Vector_Table
LDRpc,reset_addr;
reset_addr为标号,后面同理
LDRpc,undef_addr
LDRpc,swi_addr
LDRpc,prefetch_addr
LDRpc,abort_addr
NOP;
Reserved
LDRpc,irq_addr;
实际指令是LDRPC,[PC,#-0xff0]
FIQ_Handler
;
FIQhandlercode,<
4kBinsize
reset_addrDCDReset_Handler
undef_addrDCDUndef_Handler
swi_addrDCDSwi_Handler
数据定义(
Data
Definition
)伪指令,用于分配一片连续的字存储单元并用指定的数据初始化。
本例用使用的是标号,后面对应的子程序段入口处应写有对应的标号,编译时编译器会把标号替换为实际地址。
IRQ中断的PC加载指令使用的是LDRPC,[PC,#-0xff0],将在后面介绍PPT127页。
执行本条指令时,由于有3级流水线,PC值此时是本条指令后2指令的地址,即PC=0x18+8=0x20H。
而0x20H-0xff0=0xfffff030此为某个寄存器的地址,意思就是把这个寄存器中存放的值送给PC。
ARM处理器响应异常的过程如下:
拷贝CPSR寄存器的内容至对应模式下的SPSR_<
寄存器中;
将返回地址保存到对应模式下的LR_<
对CPSR寄存器的一些控制位进行设置:
无论发生异常时处理器处于Thumb状态还是ARM状态,响应异常后处理器都会切换到ARM状态,即CPSR[5]=0;
将模式位CPSR[4:
0]设置为被响应异常的模式编码;
设置中断屏蔽位:
如果异常模式为Reset或FIQ则
CPSR[6]=1/*禁止快速中断*/
CPSR[7]=1/*禁止正常中断*/
将程序计数器(PC)设置为异常向量的地址
下一条指令地址一般为PC-4,正在执行的指令是PC-8,当前取指令的PC值是PC,(ARM7是三级流水线)。
如果是在thumb状态进入的IRQ异常则下一条指令地址是是PC-2(thumb指令是2字节,16位)
从异常处理程序返回时(执行特定的异常返回指令,需注意对于复位异常不需要返回),处理器执行下列动作:
将SPSR_<
中的内容恢复到CPSR中;
将PC设置为LR_<
的值
中断使能(进入异常处理程序入口时禁止了中断)
同异常响应过程一样,上述过程只能在ARM状态下完成。
复位异常处理所执行的指令依赖于所在的系统
例如它可能:
安装异常向量表,初始化存储系统(例如:
MMU/PU)
初始化所有模式下的堆栈并设置寄存器
初始化C代码要求的变量
初始化所有临界的I/O设备,使能中断
改变处理器的模式和/或状态
调用main函数进入应用代码
内核的nRESET信号被拉低时,ARM处理器放弃正在执行的指令,当nRESET信号再次变为高电平时,ARM处理器执行下列操作:
1.SPSR_svc=CPSR,R14_svc=不确定的值2.强制M[4:
0]变为b10011(管理模式);
3.置位CPSR中的I和F位;
(禁止2种中断)4.清零CPSR中的T位;
(进入ARM模式)5.强制PC从地址0x00开始对下一条指令进行取指;
(如果配置的是高端向量,则地址为0XFFFF0000)
未定义指令异常发生在:
ARM试图执行一条真正的未定义指令
ARM遇到一条协处理器指令,而在系统中该协处理器硬件上并不存在
ARM遇到一条协处理器指令,虽然该协处理器硬件上是存在的,但是并未被使能
ARM遇到一条协处理器指令,虽然该协处理器硬件上是存在的,但是因为未处在特权模式,ARM拒绝执行该指令例如访问CP15协处理器–系统控制协处理器
响应:
在异常处理程序中仿真实现不存在的协处理器或者其它的通用功能(例如:
支持向量浮点运算)报告错误并且退出(返回时重新执行异常指令或跳过去执行下一条指令)
在一个不包含浮点运算的系统中,CPU遇到浮点运算指令时,将发生未定义指令异常中断,在该未定义指令异常中断的处理程序中可以通过其他指令序列仿真浮点运算指令。
发生未定义异常时,ARM处理器执行下列操作:
1.PSR_svc=CPSR;
R14_svc=未定义指令后的下一条指令地址2.强制M[4:
0]变为b11011(未定义指令模式);
3.置位CPSR中的I位;
(禁止普通中断IRQ)4.清零CPSR中的T位;
(进入ARM模式)5.强制PC从地址0x00000004开始执行指令(如果配置的是高端向量,则地址为0XFFFF0004)
1.指令预取中止异常表示取指令失败了
取入一条被标记为无效的指令时;
指令在流水线中执行时会引发;
2.数据中止异常表示一个失败的数据访问
在处理器和存储系统之间加载/存储数据出错
a.内部中止异常是由内核自己引起的-如MMU/MPU
MMU错误意味着你需要采取正确的措施并重新执行合适指令
b.外部中止异常是由存储系统引起的
可能表示一个硬件错误
可能是企图访问一个不存在的内存地址
如何处理中止异常取决于所在的系统
在一个没有内存管理的简单系统中,这通常代表一个严重的错误(如:
硬件故障,代码错误)
若有内存管理机制,那么需要确定中止异常的原因并采取正确的措施.例如:
为一个程序分配更多的内存
为程序企图访问的数据或代码加载一个新的页面
如果程序没有访问引起中止异常地址的权限,终止程序。
对于指令预取中止异常,引起异常指令的地址在LR_abt–4处
对于数据访问中止异常,引起异常指令的地址通常是LR_abt-8
在v4和v5TE版本中,有两个寄存器:
FSR(故障状态寄存器)andFAR(故障地址寄存器)
CP15的5号(FSR)和6号寄存器(FAR)
v6有分离的状态寄存器-IFSR和DFSR用来指示指令和数据
都对应CP15的5号寄存器,但是可在MRC指令的第二个操作数中指定如何复用
0(DFSR)或者1(IFSR)
FSR寄存器中的异常中止源:
外部中止异常通常是致命的(至少对在多任务操作系统下运行的处理器是这样)
对于内部中止异常,检查是否需要映射更多的内存或者程序是否在进行非法的数据访问(如:
域错误,访问特权级的内存)
发生异常错误的地址在FAR寄存器中或者(LR_abt-4)
对于数据中止异常,需要注意不精确的中止异常(地址不一定是LR-8)
计算异常返回地址需要注意两点问题
1.异常发生时PC寄存器的值是否已更新
2.异常返回后,被打断的指令是否需要重新执行
校正异常返回地址的一大原因是AR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入 式微 处理 汇总 word