—————————————————————————————
教 案
课程题目 DSP及ARM技术
专题题目 ARM技术
第三讲 ARM7体系结构
授课教员 王金洪
授课单位 研究六室
第三讲 ARM7体系结构
一、教学目的、要求
使学员从总体上了解ARM的体系结构和ARM处理器核。掌握ARM7TDMI的内核和功能,掌握ARM处理器的状态、模式、内部寄存器、程序状态寄存器。重点掌握ARM处理器的异常、中断延迟、存储器及存储器映射I/O。掌握ARM7处理器的寻址方式、指令集、协处理器接口、调试接口,为后面的学习打好基础。
二、教学重点、难点
重点:ARM处理器的状态、模式、内部寄存器、异常、中断延迟、存储器及存储器映射I/O。
难点:ARM处理器的异常、存储器及存储器映射I/O。
三、课堂讲授
采用PowerPoint课件讲授。
四、讲授内容
(一)ARM
ARM是Advanced RISC Machines的缩写。
1、ARM的体系结构
(1)ARM的结构特性:
ARM是精简指令集计算机(RISC),其设计实现了外型非常小但是性能高的结构。ARM处理器结构的简单使ARM的内核非常小,这样使器件的功耗也非常低。它集成了非常典型的RISC结构特性:
● 一个大而统一的寄存器文件。
● 装载/保存结构,数据处理的操作只针对寄存器内容,而不直接对存储器进行操作。
● 简单的寻址方式,所有装载/保存的地址都只由寄存器内容和指令域决定。
● 统一和固定长度的指令域,简化了指令的译码。
● 每一条数据处理指令都对算术逻辑单元(ALU)和移位器控制,以实现对ALU和移位器的最大利用。
● 地址自动增加和自动减少的寻址模式实现了程序循环的优化。
● 多寄存器装载和存储指令实现最大数据吞吐量。
● 所有指令的条件执行实现最快速的代码执行。
(2)ARM的体系结构版本:
从V1~V5,重点了解V4、V5。(见课本P31~32)
2、ARM处理器核
(1)ARM7系列:广泛应用于多媒体和嵌入式设备,包括Internet设备和调制解调器设备以及移动电话、PDA等无线设备。
(2)ARM9系列:主要应用于引擎管理、仪器仪表、安全系统、机顶盒、高端打印机、PDA、网络电脑以及带有MP3音频和MPEG4视频多媒体格式的智能电话中。
(3)ARM9E系列:强化了数字信号处理功能,可应用于需要DSP与微控制器集合的情况。
(4)ARM10系列:其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决
,从而极大地提高了处理机的整型和浮点运算性能,为用户界面的2D和3D图形引擎应用夯实基础,如视频游戏机和高性能打印机等。
(5)SecurCore系列:主要针对新兴的安全市场,以一种全新的安全处理器设计为智能卡和其它安全IC开发提供独特的32位系统设计,并具有特定的反防造方法,从而有助于防止对硬件和软件的盗版。
(6)StrongArm系列:将Intel处理器技术和ARM体系结构融为一体,致力于为手提式通信和消费电子类设备提供理想的解决方案。
(7)Xscale系列:(Intel)提供全性能、高性价比和低功耗的解决方案,支持16位Thumb指令和DSP指令。
(二)ARM7TDMI
ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核,具有广泛应用,其最显著的应用为数字移动电话。
由于ARM结构是基于精简指令集计算机原理而设计的,所以它实现了:高的指令吞吐量;出色的实时中断响应;小的、高性价比的处理器宏单元。
1、三级流水线:
取指—〉译码—〉执行
2、存储器访问:
指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。
数据可以是8位、16位半字、32位字。
3、存储器接口:
存储器周期有4种基本类型:
(1) 内部周期
(2) 非连续周期
(3) 连续周期
(4) 协处理器寄存器传输周期
(三)ARM7TDMI的模块、内核和功能框图
1、见P35的图3.2(ARM7TDMI模块框图)
2、见P36的图3.3(ARM7TDMI内核框图)
1、见P37的图3.4(ARM7TDMI功能框图)
(四)体系结构直接支持的数据类型
ARM处理器支持下列数据类型:
● 字节:8位
● 半字:16位(必须分配为占用2字节)
● 字:32位(必须分配为占用4字节)
(五)处理器状态
ARM7TDMI处理器有两种操作状态:
● ARM状态:32位,这种状态下执行的是字方式的ARM指令。
● Thumb状态:16位,这种状态下执行的是半字方式的Thumb指令。
(六)处理器模式
ARM体系结构支持7种处理器模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式、系统模式。
除用户模式以外的其它模式均为特权模式。
快中断模式、中断模式、管理模式、中止模式、未定义模式称为异常模式,它们除了可以通过程序切换进入外,也可以由特定的异常进入。
见P39表3.1。
(七)内部寄存器
在ARM7TDMI处理器内部有37个用户可见的寄存器:31个通用32位寄存器,6个状态寄存器。
在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。
1、ARM状态寄存器集
(1)各模式可访问的寄存器
在ARM状态下,16个通用寄存器和1个或2个状态寄存器可在任何时候同时被访问。
见表3.2-ARM状态各模式下的寄存器。
(2)一般的通用寄存器
在汇编语言中,寄存器R0~R13为保存数据或地址值的通用寄存器。其中寄存器R0~R7为未分组的寄存器,也就是,对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。
寄存器R8~R14为分组寄存器,其中寄存器R8~R12有两个分组的物理寄存器,一个用于FIQ模式,一个用于其它模式;寄存器R13和R14分别有6个分组的物理寄存器,一个用于用户和系统模式,其余5个分别用于5种异常模式。
(3)堆栈指针R13
寄存器R13通常作为堆栈指针SP,在ARM指令集中,由于没有以特殊方式使用R13的指令或其他功能,只是习惯上都这样使用。
每个异常模式都有其自身的R13分组版本,它通常指向由异常模式所专用的堆栈。
(4)链接寄存器R14
寄存器R14(也称为链接寄存器或LR)在结构上有两个特殊功能:
● 在每种模式下,模式自身的R14版本用于保存子程序返回地址。
● 在发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小常量的偏移)。
(5)程序计数器R15
寄存器R15保存程序计数器PC总是用于特殊用途。
● 读取程序计数器的一般限制
最好避免使用STR和STM指令来保存R15。
● 写程序计数器的一般限制
由于ARM指令以字为边界,因此写入R15值的bit[1:0]通常为0b00。
(6)程序状态寄存器CPSR
所有模式共享一个程序状态寄存器。在异常模式中,另外一个寄存器程序状态保存寄存器SPSR可以被访问。每种异常具有自己的SPSR,在进入异常时,它保存CPSR的当前值;在异常退出时,可通过它恢复CPSR。(后面将详细讲述CPSR的具体内容。)
2、Thumb状态寄存器集
(略)(自学对照ARM部分)
(八)程序状态寄存器
ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR包含:4个条件代码标志(负N、零Z、进位C和溢出V);2个中断禁止位,分别用于一种类型的中断;5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。
1、条件代码标志
大多数数值处理指令可以选择条件是否修改条件代码标志。一般的,如果指令带S后缀,则指令会修改条件代码标志;但有一些指令总是改变条件代码标志。
各标志位的含义如下:
N:运算结果的b31位值。对于有符号二进制补码,结果为负数时,N=1;结果为正数或零时,N=0。
Z:指令结果为0时,Z=1(通常表示比较结果“相等”);否则,Z=0。
C:使用加法运算(包括CMN指令),b31位产生进位时,C=1;否则,C=0。使用减法运算(包括CMP指令),b31位产生进位时,C=0;否则,C=1。对于结合移位操作的非加法/减法指令,C为b31位最后的移出值,其他指令C通常不变。
V:使用加法/减法运算,当发生有符号溢出时,V=1;否则,V=0。其他指令V通常不变。
2、控制位
CPSR的最低8位为控制位。它们分别是中断禁止位、T位、模式位。当发生异常时,控制位改变。当处理器在一个特权模式下操作时,可用软件操作这些位。
(1)中断禁止位
I和F位都是中断禁止位:
● 当I位置位时,IRQ中断被禁止。
● 当F位置位时,FIQ中断被禁止。
(2)T位
T位反映了正在操作的状态:
● 当T位置位时,处理器正在Thumb状态下运行。
● 当T位清零时,处理器正在ARM状态下运行。
(警告:绝对不要强制改变CPSR寄存器中的T位。因为这样做,处理器会进入一个无法预知的状态。)
(3)模式位
M4、M3、M2、M1和M0位(M[4:0])都是模式位。具体见P47表3.4。
3、保留位
CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位,所以一般采用读--修改(相与/相或)--写的方法。
(九)异常
只要正常的程序流被暂时中止,处理器就进入异常模式。如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。
1、异常入口/出口汇总
见P48表3.5。
如果异常处理程序已经把返回地址拷贝到堆栈,可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。
2、进入异常
当处理异常时,ARM7TDMI内核会:
(1)在适当的LR中保存下一条指令的地址。当异常入口来自:
● ARM状态下,ARM7TDMI将下一条指令的地址复制到LR中(当前PC+4或PC+8,取决于异常的类型)。
● Thumb状态下,ARM7TDMI将PC加偏移值(当前PC+4或PC+8,取决于异常的类型)写入LR,当进入异常时,异常处理程序不必确定状态。
(2)将CPSR复制到适当的SPSR。
(3)根据异常将CPSR模式强制设为某一值。
(4)强制PC从相关的异常向量处取指。
ARM7TDMI内核在中断异常时,置位中断禁止标志,这样可防止不受控制的异常嵌套。
(注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。)
3、退出异常
当异常结束时,异常处理程序必须:
(1)将LR中的值减去偏移量后移入PC。偏移量根据异常的类型而有所不同。
(2)将SPSR的值复制回CPSR。
(3)清零在入口置位的中断禁止标志。
(注:复位CPSR的动作会将T、F和I位自动恢复为异常发生前的值。)
4、快速中断请求
快速中断请求FIQ异常支持数据转移或通道处理。在ARM状态中,快中断模式有8个专门的寄存器,可用来满足寄存器保护的需要。将nFIQ信号拉低可实现外部产生FIQ(在具体的芯片中,nFIQ由片内外设拉低,nFIQ是内核的一个信号,对用户不可见)。
在一个特权模式中,可以通过置位CPSR中的F标志来禁止FIQ异常,清零F标志打开FIQ中断。
中断返回:SUBS PC,R14_fiq,#4
5、中断请求
中断请求IRQ异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nFIQ由片内外设拉低,nFIQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ,对于FIQ序列它是被屏蔽的。在特权模式下,都可通过置位CPSR中的I位来禁止IRQ。
中断返回:SUBS PC,R14_irq,#4
6、中止
中止表示当前对存储器的访问不能被完成。这是通过外部ABORT输入指示的(在具体的芯片中,ABORT信号由片内存储器管理部件控制,ABORT是内核的一个信号,对用户不可见)。
处理器在存储器访问周期结束时检测中止异常。有两种类型的中止:预取中止(发生在指令预取过程中)和数据中止(发生在对数据访问时)。
(1)预取中止
在发生预取中止时,ARM7TDMI内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,则中止将不会发生。
在处理中止的原因之后,执行下面指令:
SUBS PC,R14_abt,#4
这个动作恢复了PC和CPSR,并重试被中止的指令。
(2)数据中止
当发生数据中止时,根据指令的类型产生不同的动作:
● 数据转移指令LDR、STR回写到被修改的基址寄存器。
● 交换指令SWP中止好像没有被执行过一样。
● 块数据转移指令LDM、STM完成。
中止的机制使指令分页的虚拟存储器系统能够被实现。
在处理中止的原因之后,执行下面指令:
SUBS PC,R14_abt,#8
这个动作恢复了PC和CPSR,并重试被中止的指令。
7、软件中断指令
软件中断SWI用于进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通常执行下面的指令返回:
MOVS PC,R14_svc
这个动作恢复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。
8、未定义的指令
当ARM7TDMI处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM7TDMI内核执行未定义指令陷阱。软件可使用这一机制通过仿真未定义的协处理器指令来扩展ARM指令集。
在防止失败的指令后,捕获处理器执行下面的指令: MOVS PC,R14_und
这个动作恢复了PC和CPSR,并返回到未定义指令之后的指令。
9、异常向量
见P52表3.6异常向量。
10、异常优先级
当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:复位(最高优先级)->数据中止->FIQ->IRQ->预取中止->未定义指令->SWI(最低优先级)。
有些异常不能一起发生:
● 未定义的指令和SWI异常互斥。它们分别对应于当前指令的一个特定(非重叠)译码。
● 当FIQ使能,并且在发生FIQ的同时产生了一个数据中止,ARM7TDMI内核进入数据中止处理程序,然后立即转到FIQ向量。数据中止的优先级必须高于FIQ,以确保数据转移错误不会被漏过。必须将异常入口的时间增加到系统最坏情况下FIQ的延时时间。
(十)中断延迟
1、最大中断延迟
当FIQ使能时,最坏情况下FIQ的延时时间包含:
● TSYNCMAX 请求通过同步器的最长时间。
● TIDM 最长的指令执行需要的指间。
● TEXC 数据中止入口的指间。
● TFIQ FIQ入口的时间。
(具体时间长度由内核决定。)
2、最小中断延迟
FIQ或IRQ的最小中断延迟是请求通过同步器的时间TSYNCMAX加TFIQ(共4个处理器周期)。
(十一)复位
复位由低电平到高电平。ARM处理器执行下列操作:
● 强制M[4:0]变为b10011(管理模式);
● 置位CPSR中的I和F位;
● 清零CPSR中的T位;
● 强制PC从地址0x00开始对下一条指令进行取指;
● 返回到ARM状态并恢复执行。
(十二)存储器及存储器影射I/O
ARM7TDMI处理器采用冯·诺依曼结构,指令和数据共用一条32位数据总线。只有装载、保存和交换指令可访问存储器中的数据。
ARM7TDMI处理器将存储器看作是一个从0开始的线性递增的字节集会:字节0~3保存第1个存储器的字,字节4~7保存第2个存储器的字,字节8~11保存第3个存储器的字,以此类推。
ARM7TDMI处理器可以将存储器中的字以下列格式存储:大端(Big-endian)格式;小端(Little-endian)格式。
1、地址空间
ARM结构使用单个平面的232个8位字节地址空间。字节地址按照无符号数排列,从0到232-1。
地址空间可以看作是包含230个32位字,地址以字为单位进行分配,也就是将地址除以4。地址为A的字包含4个字节,地址分别为A、A+1、A+2和A+3。地址空间还可被看作是包含231个16位字,地址以半字为单位进行分配。地址为A的字包含2个字节,地址分别为A和A+1。
大多数指令通过指令所指定的偏移量与PC值相加并将结果写入PC来计算目标地址。
(当前指令的地址)+ 8 + 偏移量
另外,正常连续执行的指令实际上是通过计算:
(当前指令的地址)+ 4
2、存储器格式
存储器系统使用下列两种映射机制中的一种:
(1)对于小端(Little-endian)存储器系统
在小端格式中,一个字当中最低地址的字节被看作是最低位字节,最高地址字节被看作是最高位字节。因此,存储器系统字节0连接到数据线7~0。见图3.7。
(2)大端(Big-endian)存储器系统
在大端格式中,ARM7TDMI处理器将最高位字节保存在最低地址字节,最低位字节保存在最高地址字节。因此,存储器系统字节0连接到数据线31~24。见图3.8。
ARM指令集不包含任何直接选择大小端的指令。一个同时支持大小端的基于ARM芯片可以在硬件上配置(一般使用芯片的引脚来配置),以匹配存储器系统所使用的规则。如果芯片有一个
系统控制协处理器,系统控制协处理器的寄存器1的Bit7可用于改变配置输入。
通常只在复位是改变存储器格式的配置使其匹配存储器系统的存储器格式。
3、未对齐的存储器访问
ARM结构通常期望所有的存储器访问都合理地对齐。具体来说,就是字访问的地址通常是字对齐的,而半字访问使用地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。
(1)非对齐的指令取指
如果在ARM状态下将一个非字对齐的地址写入R15,结果通常不可预测。但可以在ARM或Thumb指令取指时,请求系统忽略地址位bit[1:0]或bit0。
(2)非对齐的数据访问
产生非对齐访问的装载/保存指令出现下列定义的动作之一:
● 不可预测。
● 忽略造成访问不对齐的低地址位(bit[1:0]或bit0)。
● 对存储器访问本身忽略造成访问不对齐的低地址位,然后使用低地址位控制装载数据的循环(该动作只适用于LDR和SWP指令)。
4、指令的预取和自修改代码
许多ARM实现在前一条指令的执行尚未完成时将指令从存储器中取出,这个动作称为指令的预取。预取的指令没有被执行的两种典型的情况:
● 当发生异常时,当前指令执行完毕,所有预取的指令都被丢弃,指令的执行从异常向量开始。
● 当发生跳转时,预取的在分支指令后的指令将被丢弃。
所有形式的指令预取都有一个潜在的问题,即存储器中的指令可能在它被预取之后,在被执行之前发生改变。如果发生这种情况,对存储器中的指令进行修改通常并不妨碍已取指令的指令备份执行完毕。(应当尽可能避免使用涉及自修改代码的编程技术。)
(1)指令存储器屏障
每个ARM实现都定义了一系列的操作使自修改代码序列可以可靠地执行,这一串代码称为指令存储器屏障(IMB),它通常同时取决于ARM处理器的实现和存储器系统的实现。
IMB序列必须在新的指令已经保存到存储器之后而尚未执行时执行。
(2)IMB的其它用途(自学)
5、存储器影射的I/O
执行ARM系统I/O功能的标准方法是使用存储器映射的I/O。装载/保存I/O值时,使用提供的I/O功能的特殊存储器地址。
(1) 从存储器映射的I/O取指
存储器映射的I/O位置只用于数据的装载和保存,不用于指令取指。
(2) 对存储器映射I/O的数据访问
对存储器映射I/O的典型要求:
● 限制存储器映射I/O位置的存储器属性。例如在标准存储器系统结构中,存储器位置必须是无高速缓存和无缓冲区的。
● 限制访问存储器映射I/O位置的规格或对齐方式。
● 要求额外的外部硬件。
(3) LDM和STM指令的时间顺序
LDM和STM指令所执行的存储器访问序列的时间顺序只在有限的环境下由结构所定义。这些规则包括:
● 如果指令中所列寄存器包含PC,存储器访问的序列并未定义(意味着这样的LDM和STM指令不适合访问存储器映射的I/O)。
● 如果指令中所列寄存器不包含PC,存储器访问序列的时间顺序按照存储器地址排列,从最低地址开始,到最高地址结束。
● 如果所有由LDM或STM产生的存储器访问都符合实现定义的对待存储器映射I/O位置的要求,那么它们的数目、数据规格和时间顺序都被保护。
● 如果有些由LDM或STM产生的存储器访问符合实现定义的对待存储器映射I/O位置的要求,而有些不符合,那么它们的数目、数据规格和时间顺序不能被保护。
(十三)寻址方式
寻址方式是处理器执行指令时寻找真实操作数地址的方式。ARM处理器支持下面9种寻址方式:
1、寄存器寻址:
2、立即寻址:
3、寄存器移位寻址:ARM指令集特有的寻址方式。
4、寄存器间接寻址:
5、基址寻址:
6、多寄存器寻址:
7、堆栈寻址:多寄存器寻址的特殊形式。
8、块拷贝寻址:多寄存器寻址的特殊形式。
9、相对寻址:基址寻址的特殊形式。(PC-R15)
(十四)ARM7指令集
ARM7TDMI处理器有两个指令集:32位ARM指令集和16位Thumb指令集。
1、ARM指令集
ARM指令集可分为5大类指令:分支指令、数据处理指令、加载和存储指令、协处理器指令、杂项指令。(下一章详细讲解)
2、Thumb指令集
Thumb指令集可分为4大类指令:分支指令、数据处理指令、寄存器加载与存储指令、异常产生指令。(下一章详细讲解)
(十五)协处理器接口
1、协处理器接口简介
(1)一个典型的协处理器包括:
● 指令流水线;
● 指令译码逻辑;
● 寄存器分组;
● 带独立数据通路的特殊处理逻辑。
协处理器和ARM7TDMI处理器连接到同一个数据总线,这意味着协处理器可以对指令流中的指令进行译码并执行那些它所支持的指令。
(2)ARM7TDMI内核用于:
● 求出条件代码的值以确定指令是否必须由协处理器执行,然后使用CPnI(内核与协处理器握手的信号)通知系统中的所有协处理器。
● 产生指令所要求的地址(包括下一条指令的预取)来填充流水线。
● 如果出现协处理器不接受的指令,则执行未定义指令陷阱。
(3)协处理器用于:
● 对指令进行译码以确定是否接受。
● 通过CPA和CPB(内核与协处理器握手的信号)指示它是否接受这一指令。
● 从自身的寄存器组中取出任何需要的值。
● 执行指令所要求的操作。
2、可用的协处理器
一个系统中最多可连接16个协处理器,每个协处理器都通过唯一的ID号识别。ARM7TDMI处理器包含两个内部协处理器:CP14为通信通道协处理器,CP15为cache和MMU功能提供的系统控制协处理器。
见P69表3.7 可用的协处理器。
3、关于未定义的指令
ARM7TDMI处理器执行完全的ARM结构V4T未定义指令的处理。任何一个不被协处理器接受的指令也会使ARM7TDMI处理器执行未定义指令陷阱。
(十六)调试接口
ARM7TDMI处理器的高级调试特性使应用程序、操作系统和硬件的开发变得更加容易。
1、典型调试系统
见图3.9典型的调试系统。
一个调试系统通常具有3个部分:
(1)调试主机
调试主机使您可以使用设置断点或检查存储器内容这些高级命令。
(2)
转换器
是调试主机发出的高级命令与ARM7TDMI处理器JTAG接口的低级命令之间的接口。
(3)调试目标
ARM7TDMI处理器具有便于进行底层调试的硬件扩展。这些扩展可以:
● 暂停程序的执行;
● 检查和修改内核的内部状态;
● 检查存储器系统的状态;
● 执行中止异常,允许实时监控内核;
● 恢复程序执行。
2、调试接口
ARM7TDMI处理器的调试接口是建立在IEEE 1149.1-1990标准、标准测试访问端口和边界扫描结构基础之上的。
3、EmbeddedICE-RT
ARM7TDMI处理器EmbeddedICE-RT模块为ARM7TDMI内核提供集成的片内调试支持。EmbeddedICE-RT通过ARM7TDMI处理器TAP控制串行编程。见图3.10。
EmbeddedICE-RT逻辑包含:
(1)两个实时观察点单元。可以编程这两个观察点或其中一个使内核暂停指令的执行。当编程到EmbeddedICE-RT的值与地址总线、数据总线和不同的控制信号上出现的值相匹配时,指令的执行会被暂停。可以屏蔽其中任何一位使它的值不影响比较。每个观察点单元都可配置为观察点(监视数据的访问)或(监视指令取指)。
(2)中止状态寄存器。该寄存器用于识别产生异常中止的原因。
(3)调试通信通道DCC。DCC在目标系统与主机调试程序之间传递信息。
4、扫描和JTAG接口
在ARM7TDMI处理器中有两个扫描链用于实现调试和EmbeddedICE-RT编程。JTAG类型的测试访问端口(TAP)控制器控制扫描链。
(十七)ETM接口
外部嵌入式跟踪宏单元(ETM)连接到ARM7TDMI处理器,这样就能够实现对正在执行的处理器进行代码的实时跟踪。
自修改代码无法被跟踪。
(十八)
本讲从总体上介绍了ARM的体系结构和ARM处理器核。以ARM7TDMI为例,详细说明了ARM7TDMI的内核和功能,ARM处理器的状态、模式、内部寄存器、程序状态寄存器。重点讲解了ARM处理器的异常、中断延迟、存储器及存储器映射I/O,因为该部分是本讲的难点。同时介绍了ARM7处理器的寻址方式、指令集、协处理器接口、调试接口。
本讲的内容是后续学习“ARM7TDMI(-S)指令系统”和“LPC2000系列ARM硬件结构”的基础。
五、思考题
1、ARM处理器模式和ARM处理器状态有何区别?
2、PC和LR分别使用哪个寄存器?
3、请描述一下ARM7TDMI产生异常的条件分别是什么?各种异常会使处理器进入哪种模式?进入异常时内核有何操作?各种异常的返回指令又是什么?
六、教材、参考书目
● 《ARM嵌入式系统基础教程》周立功 等编著 北京航空航天大学出版社
● 《嵌入式系统开发与应用教程》 田泽 编著 北京航空航天大学出版社
● 《ARM体系结构与编程》杜春雷 编著 清华大学出版社
备注