ARM原理与c程序设计 第二章_第1页
ARM原理与c程序设计 第二章_第2页
ARM原理与c程序设计 第二章_第3页
ARM原理与c程序设计 第二章_第4页
ARM原理与c程序设计 第二章_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路2.1 ARM微处理器工作模式微处理器工作模式2.2 ARM寄存器寄存器2.3 ARM异常异常2.4 S3C2410存储器配置及接口电路设计存储器配置及接口电路设计2.5 S3C2410外设接口电路设计外设接口电路设计本章小结本章小结第二章ARM体系结构与接口电路 2.1 ARM微处理器工作模式微处理器工作模式ARM微处理器支持三种数据类型,即32位的字、16位的半字和8位的字节。对于无符号数,取值范围为02N1,为普通二进制码存储格式;对于有符号数,取值范围为2N1+2N11,为二进制补码存储格式,其中,N取8、16或32,为数据字

2、长。ARM指令严格占一个字或四个连续字节(且首字节地址最后两位为00比特)的存储空间。目前,ARM体系结构支持七种处理器模式,如表2-1所示。表2-1中的模式码是指寄存器CPSR(当前程序状态寄存器)中的低5位,即CPSR4:0。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路 需要说明的是,对于ARM920T核心的S3C2410A处理器,上电复位后工作于管理模式。工作模式之间可以通过MSR指令、软中断、外部中断或异常等切换。上电复位后,可执行指令“MSR CPSR_c,#0 x10”由管理模式切换到用户模式,大多数应用程序工作在用户模式下。进入用户模式后,只能通过异常才能切换到其

3、他工作模式,应用程序不能访问一些受保护的系统资源。用户模式和系统模式之外的五种工作模式统称为特权模式,特权模式下,可以访问所有系统资源,工作模式可以借助MSR指令随意切换,每种特权模式都有一些专用寄存器,用于保存其工作状态。系统模式与用户模式共用相同的寄存器,但是,系统模式属于特权模式,它能访问所有系统资源,可随意切换工作模式,主要供需要访问所有系统资源的操作系统任务使用。第二章ARM体系结构与接口电路 2.2 ARM寄存器寄存器 ARM寄存器都是32位的,其组织如图2-1所示。从图2-1中可以看出,每种模式下最多可访问的寄存器个数为18个,其中,用户模式和系统模式下只能访问17个寄存器。图2

4、-1中同名的寄存器具有相同的物理寄存器,而带有沙粒三角形的寄存器则具有独立的物理寄存器,例如,R0在七种工作模式下都映射到同一个物理寄存器,而R13、R13_svc、R13_abt等表示在不同工作模式下映射到不同的物理寄存器。第二章ARM体系结构与接口电路图2-1 ARM寄存器组织 第二章ARM体系结构与接口电路这样,ARM共有37个物理寄存器,即未分组的寄存器R0R7映射的8个物理寄存器+分组的寄存器R8R14映射的22个物理寄存器+程序计数器PC和当前程序状态寄存器CPSR映射的2个物理寄存器+异常模式下备份程序状态的寄存器SPSR映射的5个物理寄存器=37(图2-1上名称完全相同的寄存器

5、只能计数一次,则数遍图上所有的寄存器,刚好得到37)。一般地,如果某条指令可以使用R0,则它也可以使用R1R13的其他寄存器。在所有工作模式下,R0R7都对应于相同的物理寄存器,因此,在工作模式切换时,这些寄存器的数据可以直接使用,同时,原来的数据就有可能被破坏。因此,R0R7称为未分组的寄存器,用于存放数据。 第二章ARM体系结构与接口电路R8R12在快速中断模式时映射到独立的物理寄存器,这些寄存器均加了后缀_fiq,而在其他工作模式下均映射到相同的物理寄存器,这样R8R12共占有了10个物理寄存器,一般用于存放数据。R13通常用于堆栈指针(SP),保存当前工作模式下的堆栈栈顶;R14被称为

6、链接寄存器(LR),保存子程序调用或跳转时的返回地址。R13和R14在五种异常模式下都有其独立的物理寄存器,因此,R13和R14共占有12个物理寄存器。PC即R15,为程序计数器,存放的是处理器要取的下一条指令的地址(具体地址与流水线个数有关),在七种工作模式下占有同一个物理寄存器。R8R14被称为分组寄存器,这些寄存器在工作模式切换时,原有工作模式下的寄存器不能被访问,而使用新工作模式下的同名寄存器替代,这样,原来的寄存器的数据得到了保护。 第二章ARM体系结构与接口电路上述R0R15通称为通用寄存器,即这些寄存器可以保存数据(或指令数据),也可以用于保存指令地址。此外,还有两个专用寄存器,

7、用于保存当前程序的工作状态,即CPSR和异常模式下保存CPSR值的寄存器SPSR,这两个寄存器占有6个物理寄存器。需要重点指出的是,ARM微处理器工作模式虽然可以切换,但是,其工作模式确定后,ARM微处理器仅能访问图2-1上该模式下的寄存器。第二章ARM体系结构与接口电路2.2.1 通用寄存器通用寄存器通用寄存器包括未分组寄存器R0R7、分组寄存器R8R14和R15(即PC)。如图2-1所示,分组寄存器在某些异常模式下映射为独立的物理地址,此时的寄存器名称被描述为_,例如,图2-1中的R8_fiq和R13_und等,其中,mode分别取为svc、abt、und、irq或fiq等,用户模式和系统

8、模式的寄存器名可以添加后缀_usr和_sys。需要指出的是,在RVDS程序设计时,只需使用寄存器名。 以寄存器R13为例,仿照第小节的1.和2.的内容调试如下的程序(注意图1-16的设置),可以看到不同工作模式下R13的值是不同的。第二章ARM体系结构与接口电路1 AREA INIT, CODE, READONLY2 ENTRY; Enter SVC Mode3 MOV R13, #0 xAA4 MSR CPSR_c, #0 x11 ; Enter FIQ Mode5 MOV R13, #0 xBB6 MSR CPSR_c, #0 x12 ; Enter IRQ Mode7 MOV R13,

9、#0 xCC8 MSR CPSR_c, #0 x1F; Enter SYS Mode9 MOV R13, #0 xDD10 MSR CPSR_c, #0 x13; Enter SVC Mode11 MOV R0, #0 x55第二章ARM体系结构与接口电路12 MSRCPSR_c, #0 x11; Enter FIQ Mode13 MOVR0, #0 x5514 MSRCPSR_c, #0 x12 ; Enter IRQ Mode15 MOVR0, #0 x5516 MSRCPSR_c, #0 x1F; Enter SYS Mode17 MOVR0, #0 x5518 MSRCPSR_c, #

10、0 x13 ; Enter SVC Mode19 MOVR0, #0 x5520 stop21 BLstop22 END第二章ARM体系结构与接口电路程序的解释如下(R13在RVDEBUG中的寄存器视图中为SP):第1行:定义只读代码段INIT;第2行:标识程序入口,程序复位后进入SVC模式;第3行:在SVC模式下,R13置成0 xAA;第4行:进入FIQ模式;第5行:在FIQ模式下,R13置成0 xBB;第6行:进入IRQ模式;第7行:在IRQ模式下,R13置成0 xCC;第8行:进入SYS模式;第9行:在SYS模式下,R13置成0 xDD;第10行:再次进入SVC模式;第二章ARM体系结构

11、与接口电路第11行:在SVC模式下,R0置成0 x55,此时,可以看到R13的值为0 xAA;第12行:再次进入FIQ模式;第13行:在FIQ模式下,R0置成0 x55,此时,可以看到R13的值为0 xBB;第14行:再次进入IRQ模式;第15行:在IRQ模式下,R0置成0 x55,此时,可以看到R13的值为0 xCC;第16行:再次进入SYS模式;第17行:在SYS模式下,R0置成0 x55,此时,可以看到R13的值为0 xDD;第18行:再次进入SVC模式;第二章ARM体系结构与接口电路第19行:在SVC模式下,R0置成0 x55,此时,可以看到R13的值为0 xAA;第20、21行:死循

12、环跳转;第22行:程序段结束标志。从程序的运行情况可以看出,R13在不同的工作模式下虽然具有相同的标识名,但对应于不同的物理寄存器,它们的赋值互不影响(注意:R13一般用作SP指针,上面的赋值意义不大,仅用于说明分组寄存器在不同的工作模式下对应不同的物理寄存器这一特点)。第二章ARM体系结构与接口电路2.2.2 程序状态寄存器程序状态寄存器32位的当前程序状态寄存器(CPSR)分为4个8位区域,从高位至低位依次为标志位域(CPSR_f)、状态位域(CPSR_s)、扩展位域(CPSR_x)和控制位域(CPSR_c)。每种异常模式下都各有一个备份CPSR值用的寄存器,称为备份的程序状态寄存器(SP

13、SR),用于异常发生时保存CPSR的值(用户模式和系统模式下没有SPSR)。CPSR(或SPSR)寄存器位如图2-2所示。图2-2 CPSR寄存器位的含义第二章ARM体系结构与接口电路图2-2中各位分为四类:其一,保留位,为后续ARM版本扩展功能保留的位,图中使用Res、RESERVED标记这些位;其二,用户模式下可写的位,这些位为N、Z、C、V、Q、E和GE3:0,其中,Q出现在ARMv5E以上版本中,E和GE3:0在ARMv6以上版本中,所有这些位特权模式下也均可写;其三,特权模式下可写的位,这些位为A、I、F和M4:0,用户模式下无法向这些位写入,其中,A用于ARMv6以上版本;其四,执

14、行状态位,这些位为J和T,在ARM状态下必须为0。注意:所有CPSR的各位,在用户模式下都是可以读出的。对CPSR的访问操作一般是这样的:如果想设置某位或某几位,先执行指令MRS读出CPSR的值;然后,借助于与、或、异或等位操作仅把需要设置的位赋值,不需要设置的位的值保持不变;最后,执行MSR指令把设置好的值写回CPSR。第二章ARM体系结构与接口电路1条件码标识位条件码标识位图2-2的第31位至28位依次为N、Z、C和V,被定义为条件码标识位,取自Negative、Zero、Carry和oVerflow中的大写字母。一般地,算术、逻辑和赋值指令后添加S(目的寄存器不是R15)或比较指令(如C

15、MN、CMP、TEQ和TST)等的执行会影响CPSR中的条件码标识位。此外,MSR、MRC(目的寄存器为R15)、LDM指令的某些变种、特权模式下使用REF指令从存储器向CPSR装入数据、目的寄存器为R15的少数算术和逻辑指令变种等的执行也会影响条件码标识位。第二章ARM体系结构与接口电路对于二进制补码表示的有符号数运算,N=1表示运算结果为负,N=0表示结果大于或等于0。Z=1表示运算结果为0,Z=0表示运算结果非0。C有两种情况:对于加法指令(包括CMN),当C=1时表示有进位,当C=0时表示无进位;对于减法指令(包括CMP),当C=0时有借位,C=1时无借位。无论操作数是否为二进制补码表

16、示的有符号数,只要V=1,则表示最高位发生溢出,否则,V=0表示无溢出。 第二章ARM体系结构与接口电路2中断状态位中断状态位 图2-2中CPSR的第7位和第6位依次为I和F,用于表示中断状态。如果I=1,则IRQ中断被屏蔽;如果I=0,则IRQ中断使能。如果F=1,则FIQ中断被屏蔽;如果F=0,则FIQ中断被使能。3工作模式位工作模式位 第节中指出ARM有七种工作模式,工作于哪种模式受CPSR中的工作模式位M4:0控制,这些位处于CPSR寄存器的低五位,即图2-2中的第40位。工作模式位的含义如表 2-2所示。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路2.2.3 PC与指

17、令流水线与指令流水线流水线是RISC处理器执行指令的方式,ARM7支持三级流水线,ARM9支持五级流水线,ARM10支持六级流水线。ARM9与ARM7相比,指令吞吐量增加了约13%。ARM7和ARM9的流水线如图2-3所示。第二章ARM体系结构与接口电路图2-3 ARM7和ARM9的流水线对于五级流水线来说,每个机器周期内可以有五个指令的不同阶段同时处理,但只有一条指令处于执行阶段,其他四条指令处于取指、译码、存储和写阶段。 第二章ARM体系结构与接口电路当某条指令正处于执行阶段时,PC寄存器指向此时要取指的指令,对于ARM7和ARM9来说,如图2-3所示,PC指向该正在执行的指令的地址加上2

18、条指令的地址。对于所有流水线来说,执行阶段与取指阶段间的管道数乘以每条指令所占的字节数,再加上当前正处于执行阶段的指令地址,即为PC指向的下一条指令的地址。对于ARM7和ARM9来说,虽然流水线级数不同,但是执行阶段与取指阶段间的管道数均为2,所以,PC指向的下一条指令的地址均为当前处于执行阶段的指令地址+8字节(每条32位的ARM指令占有4个字节)。对于ARM10和ARM11等,按相同的方法推理PC的值。第二章ARM体系结构与接口电路2.3 ARM异常异常异常是由内部或外部的触发源引起的,异常发生后,ARM处理器将中断当前的操作,而跳转到异常向量地址处执行异常服务程序(或称中断服务程序)。除

19、了上电复位异常之外,其他的异常服务程序跳转执行前,处理器将自动保存当前的程序状态,异常服务程序执行完毕后,将返回到被中断的程序处继续执行。异常向量表如表2-3所示。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路异常发生后,R14和SPSR用于保存处理器状态,具体如下:R14_=返回地址SPSR_=CPSRCPSR4:0=异常模式标识码如果=复位或FIQ,则CPSR6=1,屏蔽快速中断否则,CPSR6不变CPSR7=1,屏蔽常规中断PC=异常向量地址第二章ARM体系结构与接口电路对于上述伪语言表示,当某种异常发生后,程序的返回地址保存在该异常模式下的R14(即LR)中,程序状态CP

20、SR保存在该异常模式的SPSR中;然后,CPSR的M4:0被置位成该异常模式位,如果发生的异常为复位或FIQ异常,则要屏蔽快速中断;最后,屏蔽常规中断,PC指向异常向量表中该异常向量的地址处。第二章ARM体系结构与接口电路异常服务程序处理完后,SPSR复制到CPSR,R14(LR)复制至PC(此时的PC为程序被异常中断前的执行地址),程序将从PC处继续执行。异常返回有两种方式:其一,借助带S的数据处理指令,且PC为目的寄存器;其二,借助多寄存器加载指令赋值CPSR,例如:希望异常返回到特定的地址处,则进入异常前将该地址保存在堆栈内,即SUB R14,R14,#4 ;获得R14(即LR)STMF

21、D SP!,R14 ;R14压入堆栈中异常返回时,执行第二章ARM体系结构与接口电路LDMFD SP!,PC ;R14出栈,赋给PC上述三行代码的含义依次为:R14减去4赋给R14;将其他需要保存内容的寄存器和R14压入堆栈中,SP(即R13,为堆栈指针)指向栈顶,“!”表示SP减少后的值赋给SP;将SP指向的堆栈数据依次出栈,赋给寄存器列表中的寄存器和PC,“!”表示SP增加后的值赋给SP,“”表示将SPSR的值传回CPSR中。对这些语句更深入的理解请参考第三章。下面具体介绍一下每个异常。第二章ARM体系结构与接口电路2.3.1 复位异常复位异常外部输入复位信号有效后,ARM微处理器将执行以

22、下操作:R14_svc = 不确定值SPSR_svc = 不确定值CPSR4:0 = 0b10011 / 上电复位后进入管理模式CPSR5 = 0 / 工作在ARM状态CPSR6 = 1 / 屏蔽快速中断CPSR7 = 1 / 屏蔽普通中断如果高端异常向量地址配置了,则PC = 0 xFFFF0000第二章ARM体系结构与接口电路否则,PC = 0 x00000000由此可见,上电复位后的ARM微处理器处于管理工作模式下,且为执行ARM指令的ARM状态,从地址0 x0开始执行指令,普通中断和快速中断均处于被屏蔽状态,连接寄存器LR(即R14)和备份的程序状态寄存器SPSR的值不确定。复位异常一

23、般发生于ARM硬件系统上电工作瞬时,或者由于手工复位按键复位以及看门狗电路引起的复位等。复位异常服务程序需要完成系统初始化工作,包括配置时钟、存储器、高速缓存、堆栈、片上外设寄存器等。复位异常程序执行初始化过程时应避免SWI软件中断、未定义指令中断及存储器访问导致的中止等异常,系统初始化成功后ARM处理器进入工作状态。第二章ARM体系结构与接口电路2.3.2 中断请求异常中断请求异常 ARM微处理器外部IRQ中断引脚有效,且CPSR的第I位(即CPSR7)为0时,可产生IRQ普通中断,ARM微处理器将继续执行处于流水线“执行”阶段的指令,然后跳转到IRQ中断服务程序。如果IRQ中断产生了,AR

24、M微处理器自动执行如下操作:R14_irq = 下一条将被执行的指令地址 + 4SPSR_irq = CPSRCPSR4:0 = 0b10010 / 进入IRQ模式CPSR5 = 0 / 工作在ARM状态第二章ARM体系结构与接口电路CPSR6保持不变CPSR7 = 1 / 屏蔽再次产生的IRQ中断如果高端异常向量地址配置了,则PC = 0 xFFFF0018否则,PC = 0 x00000018IRQ中断服务程序执行完毕后,借助如下指令返回:SUBS PC, R14, #4上述SUBS指令中,由于PC为目的操作数,因此,将执行两个操作:即R14_irq的值赋给PC,SPSR_irq的值赋给C

25、PSR。第二章ARM体系结构与接口电路典型的IRQ中断服务程序结构为:ISR_irq: / IRQ中断服务程序开始标号SUBS PC, R14, #4 / IRQ中断服务程序返回指令另一种IRQ中断服务程序结构为:ISR_irq: / IRQ中断服务程序开始标号SUB R14, R14, #4 / IRQ中断服务程序第一条语句MOVS PC, R14 / IRQ中断服务程序返回指令在MOVS中,PC为目的操作数,因此,“MOVS PC, R14”将R14的值写入PC中,同时自动实现从SPSR_irq中恢复CPSR的值。 第二章ARM体系结构与接口电路以上两种IRQ中断服务程序结构具有一个共同的

26、特点,即在中断处理代码中不能更改R14的值,否则将导致中断返回的地址错误。所以,常用的方法为借助堆栈实现中断服务程序,其结构如下:ISR_irq: / IRQ中断服务程序开始标号SUB R14, R14, #4 / R14 = R14 4STMFD R13!, R0 R3, R14 / R13为堆栈指针,将R0至R3和R14保存在堆栈中 LDMFD R13!, R0 R3, PC / IRQ中断服务程序返回语句,从堆栈中恢复PC的值,并强制CPSR从SPSR寄存器恢复第二章ARM体系结构与接口电路2.3.3 快速中断请求异常快速中断请求异常当ARM微处理器外部FIQ引脚有效,且CPSR的F位为

27、0时,可产生FIQ快速中断请求,其优先级高于IRQ,主要用于对实时数据流的快速传输和处理。ARM微处理器检测到FIQ异常时,当前处于流水线“执行”阶段的指令执行完成后,跳转到FIQ快速中断服务程序,ARM微处理器自动实现如下操作:R14_fiq = 下一条要执行的指令地址 + 4SPSR_fiq = CPSRCPSR4:0 = 0b10001 / 进入FIQ工作模式CPSR5 = 0 / 工作在ARM状态第二章ARM体系结构与接口电路CPSR6 = 1 / 屏蔽再次产生的快速中断CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,则PC = 0 xFFFF001C否则,PC =

28、0 x0000001C从快速中断返回的方法与从IRQ中断返回的方法相同,典型的语句为SUBS PC, R14, #4第二章ARM体系结构与接口电路2.3.4 软件中断异常软件中断异常ARM微处理器通过执行SWI(软件中断)指令进入管理模式,这是用户模式转换到特权模式的常用方法。SWI指令执行时,ARM微处理器自动实现如下操作:R14_svc = SWI指令的下一条指令地址SPSR_svc = CPSRCPSR4:0 = 0b10011 / 进入管理模式CPSR5 = 0 / 工作在ARM状态CPSR6保持不变 CPSR7 = 1 / 屏蔽IRQ中断第二章ARM体系结构与接口电路如果高端异常向量

29、地址配置了,则PC = 0 xFFFF0008否则,PC = 0 x00000008从软件中断异常返回的典型语句为MOVS PC, R14第二章ARM体系结构与接口电路2.3.5 数据中止异常数据中止异常数据中止异常是由存储系统引发的。当要访问的存储空间数据无效时,将产生数据中止异常。ARM微处理器自动实现以下操作:R14_abt = 被中止的指令地址 + 8SPSR_abt = CPSRCPSR4:0 = 0b10111 / 进入中止工作模式CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断第二章ARM体系结构与接口电路如果高端异常向量地址配置了,

30、则PC = 0 xFFFF0010否则,PC = 0 x00000010从数据中止异常服务程序返回的典型语句为SUBS PC, R14, #8第二章ARM体系结构与接口电路2.3.6 预取指令异常预取指令异常预取指令异常由存储系统引发,当取指的指令无效,且ARM微处理器试图执行该无效指令时,将产生预取指令异常,ARM微处理器将自动实现以下操作:R14_abt = 被中止的指令地址 + 4SPSR_abt = CPSRCPSR4:0 = 0b10111 / 进入中止模式CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断第二章ARM体系结构与接口电路如果

31、高端异常向量地址配置了,则PC = 0 xFFFF000C否则,PC = 0 x0000000C从预取指令异常服务程序返回的典型语句为SUBS PC, R14, #4第二章ARM体系结构与接口电路2.3.7 未定义指令异常未定义指令异常 如果ARM微处理器要执行一条协处理器指令,将等待外部协处理器确认该指令可以被执行。如果没有外部协处理器应答,将产生未定义指令异常。未定义指令异常主要用于没有硬件协处理器系统的协处理器软件仿真或者通用目的指令集软件仿真扩展。当未定义指令异常发生后,ARM微处理器自动执行以下操作:R14_und = 未定义指令后的下一条指令的地址SPSR_und = CPSRCP

32、SR4:0 = 0b11011 / 进入未定义指令模式第二章ARM体系结构与接口电路CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,则PC = 0 xFFFF0004否则,PC = 0 x00000004从未定义指令异常返回的典型语句为MOVS PC, R14第二章ARM体系结构与接口电路2.3.8 异常返回地址异常返回地址异常处理是ARM微处理器控制软件设计的核心内容,主要包括异常优先级、异常嵌套、异常入口和异常返回等。其中,异常优先级避免了多个异常同时发生时的资源竞争,多个异常同时发生时,优先级较高的异常优先得到处理

33、,例如,FIQ和IRQ中断同时发生,则FIQ中断得到处理;异常嵌套使得某个异常服务程序处理过程中可以响应其他的异常,例如,数据中止异常服务程序执行过程中,由于没有屏蔽FIQ中断,当外部FIQ中断产生后,将执行FIQ中断服务程序,FIQ中断服务程序执行完后,再继续处理数据中止异常;异常入口点为异常发生后PC寄存器装入的值,是ARM微处理器自动强制PC跳转的地址值。第二章ARM体系结构与接口电路异常返回地址是相对于异常发生前的程序而言的。异常发生后,PC将跳转到异常入口点,对应异常模式的LR寄存器设置为基于跳转前的PC值的一个特定地址,异常服务程序执行过程中,不能修改LR的值(如果异常服务程序中要

34、使用LR寄存器,必须在异常服务程序开始处将LR的值压栈)。异常服务程序执行完毕后,PC的值需要恢复为跳转前执行的最后一条指令的下一条指令,这条指令的地址即为异常返回地址。不同的异常处理,其返回地址不完全相同,如表2-4所示。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路从表2-4可以看出,对于SWI、IRQ、FIQ和未定义指令异常,异常返回地址为异常跳转前的程序最后执行完的指令的下一条指令地址;而数据中止和预取指中止异常的返回地址则为异常跳转前的程序未得到执行的那条指令地址。需要指出的是异常发生后的LR值是ARM微处理器自动设置的,无法修改;而返回地址是程序配置的,可以人为修改。

35、例如,对于数据中止异常,不希望异常返回后重复执行跳转时没有执行的指令,可以使用以下语句SUBS PC, R14, #4跳转到其下一条指令地址(PC_b + 4)处。第二章ARM体系结构与接口电路2.4 S3C2410存储器配置及接口电路设计存储器配置及接口电路设计 ARM微处理器存储器配置涉及协处理器寄存器CP15、存储管理单元(MMU)和高速缓存(Cache)等,将在第四章中展开论述,本节具体讨论基于ARM920T核的S3C2410芯片的存储器配置。S3C2410是SAMSUNG公司代工的高性价比ARM9系列微处理器芯片,支持外扩SDRAM、NAND FLASH,寻址空间为128MB/区块(

36、共有8区块,即1GB空间),片内具有4KB SRAM,集成MMU和丰富的片上外设,集成独立的16KB指令Cache和16KB数据Cache,支持C/OS-、Windows CE和嵌入式Linux等嵌入式操作系统,适用于移动设备和小型通用嵌入式应用场合。第二章ARM体系结构与接口电路2.4.1 存储格式存储格式ARM920T将存储空间按字节进行物理编址,第0个字节的地址为0 x00000000,第1个字节的地址为0 x00000001,地址0 x00000000至0 x00000003(即第0个字节至第3个字节)存放第一个字,地址0 x00000004至0 x00000007(即第4个字节至第7

37、个字节)存放第二个字,依次类推。每个字存放的32位首地址的最后两位,即第1和0位为0b00时,称为字对齐存储。字的对齐存储格式有两种,即小端(Little Endian)格式和大端(Big Endian)格式。第二章ARM体系结构与接口电路其中,小端存储格式中,存储字的四个字节的最低地址字节存储字的最低字节,而最高地址字节存储字的最高字节,如图2-4所示。图2-4 小端存储格式第二章ARM体系结构与接口电路图2-4中存储字的位地址是指32位的字数据各位的相对位置;字存储空间的位地址是指存储字数据的连续四个字节按高地址向低地址的位排序位置;方格中的数字表示存储的字数据的字节序号。大端存储格式与小

38、端存储格式相反,存储字的四个字节的最低地址字节存储字的最高字节,而最高地址字节存储字的最低字节,如图2-5所示。小端和大端格式也称为小E和大E存储模式,在S3C2410芯片中,可通过软件设定。 第二章ARM体系结构与接口电路图2-5 大端存储格式第二章ARM体系结构与接口电路2.4.2 映射存储空间映射存储空间 S3C2410复位后的存储器映射空间配置模式受器件管脚OM1和OM0的电平影响而分为两种方式,如图2-6所示。可访问映射地址空间共分成8个区块(Bank),每区块为128MB,其中,第6和7区块大小可以配置,各个区块的地址是连续编址的,区块0至5的编址是固定的,当区块6小于128MB时

39、,区块7的首地址仍然为区块6的末地址加1,如表2-5所示。区块0的访问字长为16位或32位,其余7个区块的访问字长可为8位、16位或32位,且各区块的程序访问周期可以编程,因此,各区块实际访问的存储大小和时序是可编程的。各个区块均可以外扩SROM(SROM指SRAM和ROM型存储器);只有区块6和7才能外扩SDRAM,且支持自刷新和掉电工作模式。第二章ARM体系结构与接口电路图2-6 复位后S3C2410映射存储空间第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路从表2-5可以看出,区块6和7的大小必须相等,且编址是连续的。1区块区块0的总线宽度的总线宽度由于区块0作为启动ROM区

40、块,在访问区块0前,必需设定该区块的总线宽度。可以设定为16位或32位宽度,由上电复位时S3C2410的管脚OM0和OM1(合记为OM1:0)的电压决定,如表2-6所示。这里OM为Operating Mode(操作模式)的缩写。第二章ARM体系结构与接口电路由表2-6可以看出,如果使用NAND型FLASH作为启动ROM,则OM1:0需配置为0b00;如果使用NOR型FLASH,需要根据FLASH的数据总线宽度为16位还是32位,配置OM1:0的值为0b01或0b11。第二章ARM体系结构与接口电路2区块地址连接样式区块地址连接样式S3C2410中,所有区块均可外接SROM,但只有区块6和7可以

41、外接SDRAM。各区块根据外接存储器芯片的数据总线位宽,用到的S3C2410地址管脚总线不同。如果外接8位数据总线的存储器芯片,则S3C2410地址管脚总线A0接外扩存储器的地址线ADDR0,A1接ADDR1,依次类推,直到把外扩存储器芯片所有的地址线都连接好,即地址总线是同名相连接的,这时S3C2410访问外部存储器芯片是按字节访问的。第二章ARM体系结构与接口电路如果外接16位数据总线的存储器芯片,则S3C2410地址管脚线A1接外扩存储器的地址线ADDR0,A2接ADDR1,依次类推,即S3C2410的地址线A0不与外接存储器芯片的地址线相连,而是接地,这时,S3C2410访问外部存储器

42、芯片是按16位的半字访问的,每次访问时,需要一次从数据线上读出两个字节的内容。由于A0为0,故这种读写方式下一定是半字对齐的。与16位的ROM及SROM连接的典型接口如图2-7和图2-8所示。图2-7和图2-8中,方框内部的管脚标号为ROM或SRAM的,方框代表ROM或SRAM芯片,方框外部的标号属于S3C2410的管脚标号。第二章ARM体系结构与接口电路图2-7 与16位ROM的典型接口 第二章ARM体系结构与接口电路图2-8 与16位SRAM的典型接口 第二章ARM体系结构与接口电路如果外接32位数据总线的存储器芯片,则S3C2410地址管脚线A2接外扩存储器的地址线ADDR0,A3接AD

43、DR1,依次类推,即S3C2410的地址线A1和A0不与外接存储器芯片的地址线相连,而是接地,这时,S3C2410访问外部存储器芯片是按32位的字访问的,每次访问时,需要一次从数据线上读出四个字节的内容。由于A1:0 = 0b00,这种读写方式下一定是字对齐的。外接32位数据总线的存储芯片可等效于连接两片16位数据总线的存储芯片,如图2-9所示,读写时,其中一片存储器芯片存放每个字的低16位,另一片存储器芯片存放同一个字的高16位。图2-9中,方框内部标号属于SRAM,外部标号为S3C2410的管脚标号。第二章ARM体系结构与接口电路图2-9 32位典型接口(2片16位SRAM)第二章ARM体

44、系结构与接口电路3SDRAM区块地址配置样式区块地址配置样式 可外扩SDRAM的区块6和7可以配置大小,如表2-5所示,其大小可设为2MB、4MB、8MB、16MB、32MB、64MB、128MB等。这里列出8MB、16MB、32MB、64MB和128MB情况下外扩SDRAM器件时地址线的配置样式,如表2-7所示。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路表2-7中第一列区块大小是指图2-6中S3C2410映射存储空间的区块6或7的大小;第二列SDRAM总线宽度是指SDRAM的数据总线宽度,可取8位、16位或32位;

45、第三列SDRAM芯片容量大小是指每片SDRAM芯片的存储容量大小;第四列存储器配置表示SDRAM的存储结构和使用的片数,例如64Mb大小、16位数据总线以及内部具有4个存储段的SDRAM使用了2片,则存储器配置表示为:(1Mb164段)2片,注意,这里的SDRAM芯片的数据总线宽度可以为4位、8位、16位或32位;第五列SDRAM区段选址是指SDRAM芯片内部分为多个存储段时,用于选取特定存储段的S3C2410管脚地址线。 第二章ARM体系结构与接口电路第五列中的地址线根据区块6或7的容量大小和外接SDRAM的存储段数设置,例如,区块6的大小为8MB,则寻址地址线为A22:0,即最大寻址地址线

46、为A22,当SDRAM芯片有4个存储段时,需要2根地址线,于是,SDRAM芯片区段选址地址线为A22:21。图2-10和图2-11分别为(1Mb164段)1片和(1Mb164段)2片的存储器接口情况。4存储器映射寄存器存储器映射寄存器从图2-6可以看出,映射存储空间的地址0 x48000000至0 x60000000区段为特殊功能寄存器区,S3C2410有丰富的特殊功能寄存器(SFR),详见附录一,各个SFR的描述参见附录二。第二章ARM体系结构与接口电路图2-10 外接8MB SDRAM 第二章ARM体系结构与接口电路图2-11 外接16MB SDRAM第二章ARM体系结构与接口电路2.4.

47、3 NOR型型FLASH接口电路设计接口电路设计 由于S3C2410支持NAND型FLASH作为启动FLASH,启动后,NAND型FLASH仍可以用作外部存储器,此外,NAND型FLASH的容量比NOR型FLASH大得多,并且NAND型FLASH价格便宜。所以,S3C2410一般只需外接NAND型FLASH即可。NOR型FLASH的优点在于其接口类似于SRAM,具有地址总线和数据总线管脚,可以直接访问存储器内部每一个字节,读取速度很快。第二章ARM体系结构与接口电路博创UP-NETARM2410实验箱支持对NOR型FLASH芯片AM29LV160D的存储扩展(技创SBC2440实验板上为AM2

48、9LV800B),由于板上还载有NAND型FLASH芯片K9F1208U0M,所以,AM29LV160D芯片可以不用焊到板子上(这是博创实验箱核心板上有一个空焊盘没装芯片的原因)。第二章ARM体系结构与接口电路1AM29LV160D特性特性AM29LV160D是AMD公司的NOR型FLASH型片,存储容量为2MB,应用十分广泛。其显著特性有:3.3V工作电压;0.23m生产工艺;访问速度最快达70ns;功耗极低,待机模式典型电流为200nA,读典型电流为9mA5MHz,擦写典型电流为20mA5MHz;扇区结构灵活,具有扇区保护特性,支持8位和16位读写模式;寿命在100万次擦写以上;内部数据掉

49、电可保存20年;芯片读写方便;具有硬件复位管脚。AM29LV160D有三种封装型式,其中48脚TSOP外型如图2-12所示,各管脚含义如表2-8所示。第二章ARM体系结构与接口电路图2-12 AM29LV160D芯片封装第二章ARM体系结构与接口电路2AM29LV160D接口电路接口电路AM29LV160D与S3C2410的接口电路如图2-13和图2-14所示。第二章ARM体系结构与接口电路图2-13 AM29LV160D接口电路第二章ARM体系结构与接口电路图2-14 S3C2410部分接口电路第二章ARM体系结构与接口电路说明:图2-13和图2-14使用Protel DXP(Altium

50、DXP)绘制,采用网标表示不同芯片管脚的连通性。图2-13中AM29LV160D的D0至D15即为图2-12中的DQ0至DQ15,通过网标LDATA0至LDATA15与S3C2410的数据总线DATA0至DATA15连接;AM29LV160D的A0至A19通过网标LA1至LA20与S3C2410的地址总线ADDR1至ADDR20连接;其他管脚连接方法相同。图2-13和图2-14中的VDD33表示3.3 V电源;网标nRESET对于AM29LV160D和S3C2410来说均为输入信号,nRESET来源于电源芯片或复位芯片的复位输出脚。第二章ARM体系结构与接口电路AM29LV160D的操作主要有

51、擦片、写片、读片、保护等,介绍这方面操作的参考书很多,笔者在西安电子科技大学出版社出版的C/C+语言硬件程序设计基于TMS320C5000系列DSP一书的第六章中也详细地介绍了该类FLASH芯片的操作,本书不再重复。关于管脚标注的一点补充:一般地,如果数字化芯片的管脚为低有效输入时,常在管脚名称后面添加“#”,或在管脚名称上面添加一个横线(DXP中在每个字母后加“”即可),或在管脚名称前添加字母“n”。第二章ARM体系结构与接口电路2.4.4 NAND型型FLASH接口电路设计接口电路设计 NOR型FLASH芯片在很多基于DSP的系统中十分常用,在基于ARM型芯片的系统中,NAND型FLASH

52、芯片用得更多一些,主要因素为NAND型FLASH芯片容量大、价格低,且ARM芯片支持NAND型FLASH作为启动ROM。博创UP-NETARM2410实验箱上集成了K9F1208U0C芯片(完全兼容K9F1208U0M)。第二章ARM体系结构与接口电路1K9F1208U0M芯片特性芯片特性K9F1208U0M为SAMSUNG公司的64MB大小NAND型FLASH存储器芯片,其主要特性有:工作电压为3.3 V;存储单元阵列为(64M+2048K)8bit,分为4个可同时擦写大小为128Mb的存储面,每个存储面包括1024个存储块和528B的页寄存器;片上写控制器自动管理写入和擦除操作,典型的16

53、KB存储块整块擦除时间为2ms,528B大小的存储页写入的典型时间为200s,连续页读取时间最小可达50ns;I/O管脚用作数据、地址的输入/输出以及控制命令的输入;数据保存时间长达10年;具有硬件数据保护功能。K9F1208U0M芯片的封装如图2-15所示,其管脚含义如表2-9所示。第二章ARM体系结构与接口电路图2-15 K9F1208U0M封装结构第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路2K9F1208U0M接口电路接口电路K9F1208U0M与S3C2410的接口电路如图2-16所示。注意:需要结合图2-14理解图2-16中的网标。在第七章中介绍了对K9F1208U

54、0M访问的程序设计方法。图2-16的接法比较典型,8根I/O口线连接到S3C2410的数据总线DATA0DATA7,K9F1208U0M的控制信号线通过网标FCLE、FALE、nFRE、nFWE、nFCE和FRB连接到图2-14中的S3C2410的NAND FLASH控制总线上。由图2-16和图2-14可知,S3C2410接NAND型FLASH芯片时,不使用地址总线。第二章ARM体系结构与接口电路图2-16 F9F1208U0M接口电路第二章ARM体系结构与接口电路2.4.5 SDRAM接口电路设计接口电路设计 SDRAM是Synchronous Dynamic Random Access M

55、emory的缩写,直译为同步动态随机访问存储器。SDRAM芯片的数据传输速率与同步时钟相同,速率很高。桌面电脑的DDR SDRAM和DDR SDRAM也是SDRAM型内存,DDR为Double Date Rate的缩写,表示数据传输速率是同步时钟的两倍,即时钟信号的上升沿和下降沿均可被用来传送同步数据。博创UP-NETARM2410实验箱使用了两片HYNIX公司的SDRAM型HY57V561620芯片,本节给出HY57V561620芯片与S3C2410的接口电路。第二章ARM体系结构与接口电路1HY57V561620芯片特性芯片特性 HY57V561620芯片为32MB大小的SDRAM存储器,

56、主要特性为:工作电压为3.3V;管脚兼容LVTTL逻辑电平;输入和输出均参考同步时钟上升沿(或称为上升沿触发和上升沿有效);具有自动刷新功能;内部具有4个存储块,每个存储块的大小为4M16bit;支持猝发式(Burst)连续读写方式;输入时钟频率可达166MHz。HY57V561620芯片管脚封装如图2-17所示,各管脚含义如表2-10所示。第二章ARM体系结构与接口电路图2-17 HY57V561620管脚封装结构第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路HY57V561620内部有4个存储块(Bank),通过块地址线BA0和BA1取0b00、0b01、0b10或0b11选

57、择其中的一个块,当RAS有效时,A0A12选中某个存储块的行地址(RA0RA12);然后,当CAS有效且WE为高电平时,A0A8用作这个存储块的列地址(CA0CA8),此时的操作为从相应的地址阵列中读取数据;如果A10为高电平,读操作伴随有自动预充电功能。同理,操作过程中,如果WE为低电平,则表示向地址阵列中写入数据,A10为高电平时,写操作伴随有自动预充电功能。读写HY57V561620的控制真值表如表2-11所示。第二章ARM体系结构与接口电路第二章ARM体系结构与接口电路表2-11中“L”表示低电平,“H”表示高电平,RA为行地址,CA为列地址。13根行地址线和9根列地址线组合成22根地

58、址线,HY57V561620每个存储块的寻址能力为222=4M,4个块的寻址能力为16M,数据总线为16 bit,因此,每片HY57V561620的容量为16M16 bit=32MB。第二章ARM体系结构与接口电路2HY57V561620接口电路接口电路 UP-NETARM2410实验箱中S3C2410外扩了2片HY57V561620,共64MB大小的SDRAM空间,参考表2-7中S3C2410区块6配置大小为64MB以及外接数据总线宽度为32位且有4段空间的SDRAM时的存储器配置方案为(4Mb164段)2片,SDRAM内部区段选址信号接S3C2410的地址线A25:24。由此,可得两片HY

59、57V561620芯片与S3C2410的接口电路图如图2-18和图2-19所示。图2-18和图2-19表明S3C2410映射存储区块6外扩了64MB大小的SDRAM。第二章ARM体系结构与接口电路图2-18 两片HY57V561620接口电路第二章ARM体系结构与接口电路图2-19 S3C2410部分接口电路第二章ARM体系结构与接口电路 2.5 S3C2410外设接口电路设计外设接口电路设计 S3C2410为基于ARM920T的16/32位RISC微处理器芯片,片内集成了丰富的系统外设,消除了为系统配置额外接口器件的需要,大大降低了整个系统的成本。S3C2410片上集成的外设功能有:1.8V

60、或2.0V核电压,3.3V存储器电压,3.3V外部I/O接口(亦称IO接口)电压;集成16KB指令高速缓存和16KB数据高速缓存;内嵌MMU;外部存储器控制器(SDRAM控制和片选逻辑);LCD控制器(支持4K色STN和256K色TFT),带有1通道LCD专用DMA。第二章ARM体系结构与接口电路具有外部请求引脚的4通道DMA;3通道,16字节Tx FIFO和16字节Rx FIFO)/2通道SPI;1通道多主IIC总线/1通道IIS总线控制器;支持SD主接口版本,兼容MMC协议版本;2个USB主机接口/1个USB设备接口版);4个PWM定时器和1个内部定时器;具有看门狗定时器;117个通用目的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论