一、前言:嵌入式系统: 是指以应用为中心,以计算机技术为基础,软件和硬件可以裁剪, 适应应用系统对功能的、可靠性、体积和功耗严格要求的专用计算机系统。
ARM技术的发展历程:第一片ARM处理器是在1983年10月到1985年4月位于英国剑桥的ACRON COMPUTER公司开发的。于1985年4月26日在ACRON公司进行了首批ARM样片测试并成功运行了测试程序。1990年11月ARM公司在英国剑桥的一个谷仓里成立最初只有12人。
ARM技术的发展历程:第一片ARM处理器是在1983年10月到1985年4月位于英国剑桥的ACRON COMPUTER公司开发的。于1985年4月26日在ACRON公司进行了首批ARM样片测试并成功运行了测试程序。1990年11月ARM公司在英国剑桥的一个谷仓里成立最初只有12人。
1、ARM体系的结构版本:
版本1 : V1体系
*处理乘法指令以外的基本数据处理指令。
*基于字节、字和多字的LOAD/STORE指令。
*包括子程序BL在内的跳转指令。
*共操作系统使用的软件中断指令:SWI。
*本版本总地址空间是26位,目前已经不在使用。(2^26 = 64MB)
版本2 : V2体系
*乘法指令和乘加指令。
*支持协处理器的指令。
*对于FIQ模式,提供额外的两个备份寄存器。
*SWP指令及SWPB指令。
*本版本总地址空间是26位,目前已经不在使用。
版本3 : V3体系
*地址扩展到32位,除去3G版本以外的其他版本是向前兼容的,支持26位地址空间。
*程序状态寄存器从原来的R15移动到新的专用寄存器:Current Program Status Register
*增加了SPSR用于异常中断程序时,保存被中断程序的状态。Saved Program Status Register
*增加了两种处理器模式,是操作系统代码可以方便地使用数据访问中止异常、指令预取异常和未定义指令异常。
*增加了MSR,MRS。用于访问CPSR,SPSR寄存器。
*修改了原来版本中的从异常返回的指令。
版本4 : V4体系
*半字的读取和写入指令。
*读取(LOAD)带符号的字节和半字数据的指令。
*增加了T变种,可以使处理器切换到Thumb状态。
*增加了处理器的特权模式。在该模式下使用的是用户模式下的寄存器。
*版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制要求于以前的26位地址空间兼容。
版本5 : V5体系
*提高了T变种中ARM/THUMB混合使用的效率。
*对T变种的指令和非T变种的指令使用相同的代码生成技术。
*增加了前导零计数(COUNT LEADING ZEROS)指令,该指令可以使整数除法和中断优先级排队操作的更为有效。
*增加了软件断点指令。
*为协处理器提供了更多的可选择的指令。
*更加严格的定义了乘法指令堆条件标志位的影响。
版本6 : V6体系
*2001年发布,其主要特点是增加了SIMD功能扩展。它适合永电池供电的高性能便携式设备。
*处理乘法指令以外的基本数据处理指令。
*基于字节、字和多字的LOAD/STORE指令。
*包括子程序BL在内的跳转指令。
*共操作系统使用的软件中断指令:SWI。
*本版本总地址空间是26位,目前已经不在使用。(2^26 = 64MB)
版本2 : V2体系
*乘法指令和乘加指令。
*支持协处理器的指令。
*对于FIQ模式,提供额外的两个备份寄存器。
*SWP指令及SWPB指令。
*本版本总地址空间是26位,目前已经不在使用。
版本3 : V3体系
*地址扩展到32位,除去3G版本以外的其他版本是向前兼容的,支持26位地址空间。
*程序状态寄存器从原来的R15移动到新的专用寄存器:Current Program Status Register
*增加了SPSR用于异常中断程序时,保存被中断程序的状态。Saved Program Status Register
*增加了两种处理器模式,是操作系统代码可以方便地使用数据访问中止异常、指令预取异常和未定义指令异常。
*增加了MSR,MRS。用于访问CPSR,SPSR寄存器。
*修改了原来版本中的从异常返回的指令。
版本4 : V4体系
*半字的读取和写入指令。
*读取(LOAD)带符号的字节和半字数据的指令。
*增加了T变种,可以使处理器切换到Thumb状态。
*增加了处理器的特权模式。在该模式下使用的是用户模式下的寄存器。
*版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制要求于以前的26位地址空间兼容。
版本5 : V5体系
*提高了T变种中ARM/THUMB混合使用的效率。
*对T变种的指令和非T变种的指令使用相同的代码生成技术。
*增加了前导零计数(COUNT LEADING ZEROS)指令,该指令可以使整数除法和中断优先级排队操作的更为有效。
*增加了软件断点指令。
*为协处理器提供了更多的可选择的指令。
*更加严格的定义了乘法指令堆条件标志位的影响。
版本6 : V6体系
*2001年发布,其主要特点是增加了SIMD功能扩展。它适合永电池供电的高性能便携式设备。
2、ARM体系变种及命名格式
ARM体系的变种:
T(THUMB)。
M(长乘法指令)。
E(增强型DSP指令)。
J(JAVA加速器JAZELLE)。
SIMD(ARM多媒体扩展)。
T(THUMB)。
M(长乘法指令)。
E(增强型DSP指令)。
J(JAVA加速器JAZELLE)。
SIMD(ARM多媒体扩展)。
命名格式
ARM v5 T exP
┃ ┃ ┃ ┃
┃ ┃ ┃ ┖要排除的功能
┃ ┃ ┖变种名称
┃ ┖版本号
┖ARM字符串
3、ARM处理器系列
┃ ┃ ┃ ┃
┃ ┃ ┃ ┖要排除的功能
┃ ┃ ┖变种名称
┃ ┖版本号
┖ARM字符串
3、ARM处理器系列
ARM7:
ARM7TDMI,ARM7TDMI-S,ARM7EJ-S,ARM720T-4
AMR7 T D M I - S
┃ ┃┃┃┃ ┃
┃ ┃┃┃┃ ┖可综合(SYNTHESIZABLE)版本软核
┃ ┃┃┃┖EmbededICE硬件调试仿真功能
┃ ┃┃┖64位乘法指
┃ ┃┖片上调试
┃ ┖THUMB指令
┖AMR7
ARM9:
ARM9系列处理器使用了ARM9TDMI内核,其中包含了16位的THUMB指令集。
ARM9E:
ARM9E系列处理器使用单一的处理器内核提供了微控制器、DSP、JAVA应用系统的解决方案,从而极大的减小了芯片的大小及复杂程度,
ARM7TDMI,ARM7TDMI-S,ARM7EJ-S,ARM720T-4
AMR7 T D M I - S
┃ ┃┃┃┃ ┃
┃ ┃┃┃┃ ┖可综合(SYNTHESIZABLE)版本软核
┃ ┃┃┃┖EmbededICE硬件调试仿真功能
┃ ┃┃┖64位乘法指
┃ ┃┖片上调试
┃ ┖THUMB指令
┖AMR7
ARM9:
ARM9系列处理器使用了ARM9TDMI内核,其中包含了16位的THUMB指令集。
ARM9E:
ARM9E系列处理器使用单一的处理器内核提供了微控制器、DSP、JAVA应用系统的解决方案,从而极大的减小了芯片的大小及复杂程度,
降低了功耗缩短了产品面世的时间。
ARM10E:
ARM10E系列处理器有高性能和低功耗的特点。其采用了新的节能模式,提供了64位的读取和写入体系,包含向量操作的满足IEEE754的
ARM10E:
ARM10E系列处理器有高性能和低功耗的特点。其采用了新的节能模式,提供了64位的读取和写入体系,包含向量操作的满足IEEE754的
浮点运算协处理器,系统集成更加方便,拥有完整的硬件和软件可开发工具。
包含:ARM1020E,ARM1022E,ARM1026EJ-S
SECURCORE:
提供了基于高性能的32位RISC技术的安全解决方案。
包含:SECURCORE SC100, SECURCORE SC110, SECURCORE SC200,SECURCORE SC210。
包含:ARM1020E,ARM1022E,ARM1026EJ-S
SECURCORE:
提供了基于高性能的32位RISC技术的安全解决方案。
包含:SECURCORE SC100, SECURCORE SC110, SECURCORE SC200,SECURCORE SC210。
4、ARM处理器模式
7种运行模式:
USR(用户模式). 特权模式 :SYS(系统) 异常模式:FIQ(快速中断) IRQ(外部中断) SVE(特权) ABT(数据访问中止) UND(未定义)
USR(用户模式). 特权模式 :SYS(系统) 异常模式:FIQ(快速中断) IRQ(外部中断) SVE(特权) ABT(数据访问中止) UND(未定义)
5、ARM寄存器介绍
37个寄存器:
第一类:31个通用寄存器,包括PC在内。都是32位的。
第二类:6个状态寄存器,都是32位的目前只使用了一部分的位。
37个寄存器:
第一类:31个通用寄存器,包括PC在内。都是32位的。
第二类:6个状态寄存器,都是32位的目前只使用了一部分的位。
寄存器R13在ARM中常用作栈指针,每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。
当进入异常模式时,可以将需要使用的寄存器保存在R13所指向的栈指针中,退出时将保存在R13所指的栈中的寄存器弹出。
寄存器R14,又称连接寄存器LR,每一种处理器模式自己物理R14中存放在当前程序的返回地址,使用如下指令可实现子程序的返回操作:
MOV PC ,LR
BX LR
在子程序入口使用下面的指令将PC保存在栈中:STMFD SP! ,{<register>,LR} ,相应返回指令:LDMFD SP! ,{<register>,PC}
寄存器R15,又称PC,读取PC值与写入PC值的非对称操作需要特别注意,如MOV PC ,PC 两个PC所代表的值是不一样的。
6、ARM处理器对异常中段的处理过程
*保存处理器当前状态、中断屏蔽位以及各条件标志位(将CPSR内容保存到SPSR中)
*设置当前程序状态寄存器CPSR中的相应位,使处理器进入相应的执行模式
*将寄存器Ir_mode设置成返回地址
*将程序计数器值PC设置成异常中断的中断向量地址,并跳到相应的异常中断处理程序执行
7、从异常中断处理程序中返回
*恢复中断程序的处理器状态
*返回到发生异常中断指令下一条指令处执行
*复位异常中断处理程序不需要返回