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

下载本文档

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

文档简介

1、第二章ARM体系结构与接口电路2.1 ARM微处理器工作模式2.2 ARM存放器2.3 ARM异常2.4 S3C2410存储器配置及接口电路设计2.5 S3C2410外设接口电路设计本章小结 2.1 ARM微处理器工作模式ARM微处理器支持三种数据类型,即32位的字、16位的半字和8位的字节。对于无符号数,取值范围为02N1,为普通二进制码存储格式;对于有符号数,取值范围为2N1+2N11,为二进制补码存储格式,其中,N取8、16或32,为数据字长。ARM指令严格占一个字或四个连续字节(且首字节地址最后两位为00比特)的存储空间。目前,ARM体系结构支持七种处理器模式,如表2-1所示。表2-1

2、中的模式码是指存放器CPSR(当前程序状态存放器)中的低5位,即CPSR4:0。 需要说明的是,对于ARM920T核心的S3C2410A处理器,上电复位后工作于管理模式。工作模式之间可以通过MSR指令、软中断、外部中断或异常等切换。上电复位后,可执行指令“MSR CPSR_c,#0 x10由管理模式切换到用户模式,大多数应用程序工作在用户模式下。进入用户模式后,只能通过异常才能切换到其他工作模式,应用程序不能访问一些受保护的系统资源。用户模式和系统模式之外的五种工作模式统称为特权模式,特权模式下,可以访问所有系统资源,工作模式可以借助MSR指令随意切换,每种特权模式都有一些专用存放器,用于保存

3、其工作状态。系统模式与用户模式共用相同的存放器,但是,系统模式属于特权模式,它能访问所有系统资源,可随意切换工作模式,主要供需要访问所有系统资源的操作系统任务使用。 2.2 ARM存放器 ARM存放器都是32位的,其组织如图2-1所示。从图2-1中可以看出,每种模式下最多可访问的存放器个数为18个,其中,用户模式和系统模式下只能访问17个存放器。图2-1中同名的存放器具有相同的物理存放器,而带有沙粒三角形的存放器那么具有独立的物理存放器,例如,R0在七种工作模式下都映射到同一个物理存放器,而R13、R13_svc、R13_abt等表示在不同工作模式下映射到不同的物理存放器。图2-1 ARM存放

4、器组织 这样,ARM共有37个物理存放器,即未分组的存放器R0R7映射的8个物理存放器+分组的存放器R8R14映射的22个物理存放器+程序计数器PC和当前程序状态存放器CPSR映射的2个物理存放器+异常模式下备份程序状态的存放器SPSR映射的5个物理存放器=37(图2-1上名称完全相同的存放器只能计数一次,那么数遍图上所有的存放器,刚好得到37)。一般地,如果某条指令可以使用R0,那么它也可以使用R1R13的其他存放器。在所有工作模式下,R0R7都对应于相同的物理存放器,因此,在工作模式切换时,这些存放器的数据可以直接使用,同时,原来的数据就有可能被破坏。因此,R0R7称为未分组的存放器,用于

5、存放数据。 R8R12在快速中断模式时映射到独立的物理存放器,这些存放器均加了后缀_fiq,而在其他工作模式下均映射到相同的物理存放器,这样R8R12共占有了10个物理存放器,一般用于存放数据。R13通常用于堆栈指针(SP),保存当前工作模式下的堆栈栈顶;R14被称为链接存放器(LR),保存子程序调用或跳转时的返回地址。R13和R14在五种异常模式下都有其独立的物理存放器,因此,R13和R14共占有12个物理存放器。PC即R15,为程序计数器,存放的是处理器要取的下一条指令的地址(具体地址与流水线个数有关),在七种工作模式下占有同一个物理存放器。R8R14被称为分组存放器,这些存放器在工作模式

6、切换时,原有工作模式下的存放器不能被访问,而使用新工作模式下的同名存放器替代,这样,原来的存放器的数据得到了保护。 上述R0R15通称为通用存放器,即这些存放器可以保存数据(或指令数据),也可以用于保存指令地址。此外,还有两个专用存放器,用于保存当前程序的工作状态,即CPSR和异常模式下保存CPSR值的存放器SPSR,这两个存放器占有6个物理存放器。需要重点指出的是,ARM微处理器工作模式虽然可以切换,但是,其工作模式确定后,ARM微处理器仅能访问图2-1上该模式下的存放器。2.2.1 通用存放器通用存放器包括未分组存放器R0R7、分组存放器R8R14和R15(即PC)。如图2-1所示,分组存

7、放器在某些异常模式下映射为独立的物理地址,此时的存放器名称被描述为_,例如,图2-1中的R8_fiq和R13_und等,其中,mode分别取为svc、abt、und、irq或fiq等,用户模式和系统模式的存放器名可以添加后缀_usr和_sys。需要指出的是,在RVDS程序设计时,只需使用存放器名。 以存放器R13为例,仿照第小节的1.和2.的内容调试如下的程序(注意图1-16的设置),可以看到不同工作模式下R13的值是不同的。1 AREA INIT, CODE, READONLY2 ENTRY; Enter SVC Mode3 MOVR13, #0 xAA4 MSRCPSR_c, #0 x11

8、 ; Enter FIQ Mode5 MOVR13, #0 xBB6 MSRCPSR_c, #0 x12 ; Enter IRQ Mode7 MOVR13, #0 xCC8 MSRCPSR_c, #0 x1F; Enter SYS Mode9 MOVR13, #0 xDD10 MSRCPSR_c, #0 x13; Enter SVC Mode11 MOV R0, #0 x5512 MSRCPSR_c, #0 x11; Enter FIQ Mode13 MOVR0, #0 x5514 MSRCPSR_c, #0 x12 ; Enter IRQ Mode15 MOVR0, #0 x5516 MSR

9、CPSR_c, #0 x1F; Enter SYS Mode17 MOVR0, #0 x5518 MSRCPSR_c, #0 x13 ; Enter SVC Mode19 MOVR0, #0 x5520 stop21 BLstop22 END程序的解释如下(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

10、行:在SYS模式下,R13置成0 xDD;第10行:再次进入SVC模式;第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模式;第19行:在SVC模式下,R0置成0 x55,此时,可以看到R13的值为

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

12、异常发生时保存CPSR的值(用户模式和系统模式下没有SPSR)。CPSR(或SPSR)存放器位如图2-2所示。图2-2 CPSR存放器位的含义图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以上版本;其四,执行状态位,这些位为J和T,在ARM状态下必

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

14、MRC(目的存放器为R15)、LDM指令的某些变种、特权模式下使用REF指令从存储器向CPSR装入数据、目的存放器为R15的少数算术和逻辑指令变种等的执行也会影响条件码标识位。对于二进制补码表示的有符号数运算,N=1表示运算结果为负,N=0表示结果大于或等于0。Z=1表示运算结果为0,Z=0表示运算结果非0。C有两种情况:对于加法指令(包括CMN),当C=1时表示有进位,当C=0时表示无进位;对于减法指令(包括CMP),当C=0时有借位,C=1时无借位。无论操作数是否为二进制补码表示的有符号数,只要V=1,那么表示最高位发生溢出,否那么,V=0表示无溢出。 2中断状态位 图2-2中CPSR的第

15、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所示。2.2.3 PC与指令流水线流水线是RISC处理器执行指令的方式,ARM7支持三级流水线,ARM9支持五级流水线,ARM10支持六级流水线。ARM9与ARM7相比,指令吞吐量增加了约13%。ARM7和ARM9的流水线如图2-3所示。

16、图2-3 ARM7和ARM9的流水线对于五级流水线来说,每个机器周期内可以有五个指令的不同阶段同时处理,但只有一条指令处于执行阶段,其他四条指令处于取指、译码、存储和写阶段。 当某条指令正处于执行阶段时,PC存放器指向此时要取指的指令,对于ARM7和ARM9来说,如图2-3所示,PC指向该正在执行的指令的地址加上2条指令的地址。对于所有流水线来说,执行阶段与取指阶段间的管道数乘以每条指令所占的字节数,再加上当前正处于执行阶段的指令地址,即为PC指向的下一条指令的地址。对于ARM7和ARM9来说,虽然流水线级数不同,但是执行阶段与取指阶段间的管道数均为2,所以,PC指向的下一条指令的地址均为当前

17、处于执行阶段的指令地址+8字节(每条32位的ARM指令占有4个字节)。对于ARM10和ARM11等,按相同的方法推理PC的值。2.3 ARM异常异常是由内部或外部的触发源引起的,异常发生后,ARM处理器将中断当前的操作,而跳转到异常向量地址处执行异常效劳程序(或称中断效劳程序)。除了上电复位异常之外,其他的异常效劳程序跳转执行前,处理器将自动保存当前的程序状态,异常效劳程序执行完毕后,将返回到被中断的程序处继续执行。异常向量表如表2-3所示。异常发生后,R14和SPSR用于保存处理器状态,具体如下:R14_=返回地址SPSR_=CPSRCPSR4:0=异常模式标识码如果=复位或FIQ,那么CP

18、SR6=1,屏蔽快速中断否那么,CPSR6不变CPSR7=1,屏蔽常规中断PC=异常向量地址对于上述伪语言表示,当某种异常发生后,程序的返回地址保存在该异常模式下的R14(即LR)中,程序状态CPSR保存在该异常模式的SPSR中;然后,CPSR的M4:0被置位成该异常模式位,如果发生的异常为复位或FIQ异常,那么要屏蔽快速中断;最后,屏蔽常规中断,PC指向异常向量表中该异常向量的地址处。异常效劳程序处理完后,SPSR复制到CPSR,R14(LR)复制至PC(此时的PC为程序被异常中断前的执行地址),程序将从PC处继续执行。异常返回有两种方式:其一,借助带S的数据处理指令,且PC为目的存放器;其

19、二,借助多存放器加载指令赋值CPSR,例如:希望异常返回到特定的地址处,那么进入异常前将该地址保存在堆栈内,即SUB R14,R14,#4 ;获得R14(即LR)STMFD SP!,R14 ;R14压入堆栈中异常返回时,执行LDMFD SP!,PC ;R14出栈,赋给PC上述三行代码的含义依次为:R14减去4赋给R14;将其他需要保存内容的存放器和R14压入堆栈中,SP(即R13,为堆栈指针)指向栈顶,“!表示SP减少后的值赋给SP;将SP指向的堆栈数据依次出栈,赋给存放器列表中的存放器和PC,“!表示SP增加后的值赋给SP,“表示将SPSR的值传回CPSR中。对这些语句更深入的理解请参考第三

20、章。下面具体介绍一下每个异常。2.3.1 复位异常外部输入复位信号有效后,ARM微处理器将执行以下操作:R14_svc = 不确定值SPSR_svc = 不确定值CPSR4:0 = 0b10011 / 上电复位后进入管理模式CPSR5 = 0 / 工作在ARM状态CPSR6 = 1 / 屏蔽快速中断CPSR7 = 1 / 屏蔽普通中断如果高端异常向量地址配置了,那么PC = 0 xFFFF0000否那么,PC = 0 x00000000由此可见,上电复位后的ARM微处理器处于管理工作模式下,且为执行ARM指令的ARM状态,从地址0 x0开始执行指令,普通中断和快速中断均处于被屏蔽状态,连接存放

21、器LR(即R14)和备份的程序状态存放器SPSR的值不确定。复位异常一般发生于ARM硬件系统上电工作瞬时,或者由于手工复位按键复位以及看门狗电路引起的复位等。复位异常效劳程序需要完成系统初始化工作,包括配置时钟、存储器、高速缓存、堆栈、片上外设存放器等。复位异常程序执行初始化过程时应防止SWI软件中断、未定义指令中断及存储器访问导致的中止等异常,系统初始化成功后ARM处理器进入工作状态。2.3.2 中断请求异常 ARM微处理器外部IRQ中断引脚有效,且CPSR的第I位(即CPSR7)为0时,可产生IRQ普通中断,ARM微处理器将继续执行处于流水线“执行阶段的指令,然后跳转到IRQ中断效劳程序。

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

23、PSR。典型的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的值。 以上两种IRQ中断效劳程序结构具有一个共同的特点,即在中断处理代码中不能更改R14的值,否那么将导致中断返

24、回的地址错误。所以,常用的方法为借助堆栈实现中断效劳程序,其结构如下: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存放器恢复2.3.3 快速中断请求异常当ARM微处理器外部FIQ引脚有效,且CPSR的F位为0时,可产生FIQ快速中断请求,其优先级高于IRQ,主要用于对实时数据流的快速传输和处理。ARM微处理器检

25、测到FIQ异常时,当前处于流水线“执行阶段的指令执行完成后,跳转到FIQ快速中断效劳程序,ARM微处理器自动实现如下操作:R14_fiq = 下一条要执行的指令地址 + 4SPSR_fiq = CPSRCPSR4:0 = 0b10001 / 进入FIQ工作模式CPSR5 = 0 / 工作在ARM状态CPSR6 = 1 / 屏蔽再次产生的快速中断CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,那么PC = 0 xFFFF001C否那么,PC = 0 x0000001C从快速中断返回的方法与从IRQ中断返回的方法相同,典型的语句为SUBS PC, R14, #42.3.4 软件中

26、断异常ARM微处理器通过执行SWI(软件中断)指令进入管理模式,这是用户模式转换到特权模式的常用方法。SWI指令执行时,ARM微处理器自动实现如下操作:R14_svc = SWI指令的下一条指令地址SPSR_svc = CPSRCPSR4:0 = 0b10011 / 进入管理模式CPSR5 = 0 / 工作在ARM状态CPSR6保持不变 CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,那么PC = 0 xFFFF0008否那么,PC = 0 x00000008从软件中断异常返回的典型语句为MOVS PC, R142.3.5 数据中止异常数据中止异常是由存储系统引发的。当要访问

27、的存储空间数据无效时,将产生数据中止异常。ARM微处理器自动实现以下操作:R14_abt = 被中止的指令地址 + 8SPSR_abt = CPSRCPSR4:0 = 0b10111 / 进入中止工作模式CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,那么PC = 0 xFFFF0010否那么,PC = 0 x00000010从数据中止异常效劳程序返回的典型语句为SUBS PC, R14, #82.3.6 预取指令异常预取指令异常由存储系统引发,当取指的指令无效,且ARM微处理器试图执行该无效指令时,将产生预取指令异常,

28、ARM微处理器将自动实现以下操作:R14_abt = 被中止的指令地址 + 4SPSR_abt = CPSRCPSR4:0 = 0b10111 / 进入中止模式CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,那么PC = 0 xFFFF000C否那么,PC = 0 x0000000C从预取指令异常效劳程序返回的典型语句为SUBS PC, R14, #42.3.7 未定义指令异常 如果ARM微处理器要执行一条协处理器指令,将等待外部协处理器确认该指令可以被执行。如果没有外部协处理器应答,将产生未定义指令异常。未定义指令异常

29、主要用于没有硬件协处理器系统的协处理器软件仿真或者通用目的指令集软件仿真扩展。当未定义指令异常发生后,ARM微处理器自动执行以下操作:R14_und = 未定义指令后的下一条指令的地址SPSR_und = CPSRCPSR4:0 = 0b11011 / 进入未定义指令模式CPSR5 = 0 / 处于ARM状态CPSR6保持不变CPSR7 = 1 / 屏蔽IRQ中断如果高端异常向量地址配置了,那么PC = 0 xFFFF0004否那么,PC = 0 x00000004从未定义指令异常返回的典型语句为MOVS PC, R142.3.8 异常返回地址异常处理是ARM微处理器控制软件设计的核心内容,主

30、要包括异常优先级、异常嵌套、异常入口和异常返回等。其中,异常优先级防止了多个异常同时发生时的资源竞争,多个异常同时发生时,优先级较高的异常优先得到处理,例如,FIQ和IRQ中断同时发生,那么FIQ中断得到处理;异常嵌套使得某个异常效劳程序处理过程中可以响应其他的异常,例如,数据中止异常效劳程序执行过程中,由于没有屏蔽FIQ中断,当外部FIQ中断产生后,将执行FIQ中断效劳程序,FIQ中断效劳程序执行完后,再继续处理数据中止异常;异常入口点为异常发生后PC存放器装入的值,是ARM微处理器自动强制PC跳转的地址值。异常返回地址是相对于异常发生前的程序而言的。异常发生后,PC将跳转到异常入口点,对应

31、异常模式的LR存放器设置为基于跳转前的PC值的一个特定地址,异常效劳程序执行过程中,不能修改LR的值(如果异常效劳程序中要使用LR存放器,必须在异常效劳程序开始处将LR的值压栈)。异常效劳程序执行完毕后,PC的值需要恢复为跳转前执行的最后一条指令的下一条指令,这条指令的地址即为异常返回地址。不同的异常处理,其返回地址不完全相同,如表2-4所示。从表2-4可以看出,对于SWI、IRQ、FIQ和未定义指令异常,异常返回地址为异常跳转前的程序最后执行完的指令的下一条指令地址;而数据中止和预取指中止异常的返回地址那么为异常跳转前的程序未得到执行的那条指令地址。需要指出的是异常发生后的LR值是ARM微处

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

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

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

35、低字节,如图2-5所示。小端和大端格式也称为小E和大E存储模式,在S3C2410芯片中,可通过软件设定。 图2-5 大端存储格式2.4.2 映射存储空间 S3C2410复位后的存储器映射空间配置模式受器件管脚OM1和OM0的电平影响而分为两种方式,如图2-6所示。可访问映射地址空间共分成8个区块(Bank),每区块为128MB,其中,第6和7区块大小可以配置,各个区块的地址是连续编址的,区块0至5的编址是固定的,当区块6小于128MB时,区块7的首地址仍然为区块6的末地址加1,如表2-5所示。区块0的访问字长为16位或32位,其余7个区块的访问字长可为8位、16位或32位,且各区块的程序访问周

36、期可以编程,因此,各区块实际访问的存储大小和时序是可编程的。各个区块均可以外扩SROM(SROM指SRAM和ROM型存储器);只有区块6和7才能外扩SDRAM,且支持自刷新和掉电工作模式。图2-6 复位后S3C2410映射存储空间从表2-5可以看出,区块6和7的大小必须相等,且编址是连续的。1区块0的总线宽度由于区块0作为启动ROM区块,在访问区块0前,必需设定该区块的总线宽度。可以设定为16位或32位宽度,由上电复位时S3C2410的管脚OM0和OM1(合记为OM1:0)的电压决定,如表2-6所示。这里OM为Operating Mode(操作模式)的缩写。由表2-6可以看出,如果使用NAND

37、型FLASH作为启动ROM,那么OM1:0需配置为0b00;如果使用NOR型FLASH,需要根据FLASH的数据总线宽度为16位还是32位,配置OM1:0的值为0b01或0b11。2区块地址连接样式S3C2410中,所有区块均可外接SROM,但只有区块6和7可以外接SDRAM。各区块根据外接存储器芯片的数据总线位宽,用到的S3C2410地址管脚总线不同。如果外接8位数据总线的存储器芯片,那么S3C2410地址管脚总线A0接外扩存储器的地址线ADDR0,A1接ADDR1,依次类推,直到把外扩存储器芯片所有的地址线都连接好,即地址总线是同名相连接的,这时S3C2410访问外部存储器芯片是按字节访问

38、的。如果外接16位数据总线的存储器芯片,那么S3C2410地址管脚线A1接外扩存储器的地址线ADDR0,A2接ADDR1,依次类推,即S3C2410的地址线A0不与外接存储器芯片的地址线相连,而是接地,这时,S3C2410访问外部存储器芯片是按16位的半字访问的,每次访问时,需要一次从数据线上读出两个字节的内容。由于A0为0,故这种读写方式下一定是半字对齐的。与16位的ROM及SROM连接的典型接口如图2-7和图2-8所示。图2-7和图2-8中,方框内部的管脚标号为ROM或SRAM的,方框代表ROM或SRAM芯片,方框外部的标号属于S3C2410的管脚标号。图2-7 与16位ROM的典型接口

39、图2-8 与16位SRAM的典型接口 如果外接32位数据总线的存储器芯片,那么S3C2410地址管脚线A2接外扩存储器的地址线ADDR0,A3接ADDR1,依次类推,即S3C2410的地址线A1和A0不与外接存储器芯片的地址线相连,而是接地,这时,S3C2410访问外部存储器芯片是按32位的字访问的,每次访问时,需要一次从数据线上读出四个字节的内容。由于A1:0 = 0b00,这种读写方式下一定是字对齐的。外接32位数据总线的存储芯片可等效于连接两片16位数据总线的存储芯片,如图2-9所示,读写时,其中一片存储器芯片存放每个字的低16位,另一片存储器芯片存放同一个字的高16位。图2-9中,方框

40、内部标号属于SRAM,外部标号为S3C2410的管脚标号。图2-9 32位典型接口(2片16位SRAM)3SDRAM区块地址配置样式 可外扩SDRAM的区块6和7可以配置大小,如表2-5所示,其大小可设为2MB、4MB、8MB、16MB、32MB、64MB、128MB等。这里列出8MB、16MB、32MB、64MB和128MB情况下外扩SDRAM器件时地址线的配置样式,如表2-7所示。表2-7中第一列区块大小是指图2-6中S3C2410映射存储空间的区块6或7的大小;第二列SDRAM总线宽度是指SDRAM的数据总线宽度,可取8位、16位或32位;第三列SDRAM芯片容量大小是指每片SDRAM芯

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

42、芯片区段选址地址线为A22:21。图2-10和图2-11分别为(1Mb164段)1片和(1Mb164段)2片的存储器接口情况。4存储器映射存放器从图2-6可以看出,映射存储空间的地址0 x48000000至0 x60000000区段为特殊功能存放器区,S3C2410有丰富的特殊功能存放器(SFR),详见附录一,各个SFR的描述参见附录二。图2-10 外接8MB SDRAM 图2-11 外接16MB SDRAM2.4.3 NOR型FLASH接口电路设计 由于S3C2410支持NAND型FLASH作为启动FLASH,启动后,NAND型FLASH仍可以用作外部存储器,此外,NAND型FLASH的容量

43、比NOR型FLASH大得多,并且NAND型FLASH价格廉价。所以,S3C2410一般只需外接NAND型FLASH即可。NOR型FLASH的优点在于其接口类似于SRAM,具有地址总线和数据总线管脚,可以直接访问存储器内部每一个字节,读取速度很快。博创UP-NETARM2410实验箱支持对NOR型FLASH芯片AM29LV160D的存储扩展(技创SBC2440实验板上为AM29LV800B),由于板上还载有NAND型FLASH芯片K9F1208U0M,所以,AM29LV160D芯片可以不用焊到板子上(这是博创实验箱核心板上有一个空焊盘没装芯片的原因)。1AM29LV160D特性AM29LV160

44、D是AMD公司的NOR型FLASH型片,存储容量为2MB,应用十分广泛。其显著特性有:3.3V工作电压;0.23m生产工艺;访问速度最快达70ns;功耗极低,待机模式典型电流为200nA,读典型电流为9mA5MHz,擦写典型电流为20mA5MHz;扇区结构灵活,具有扇区保护特性,支持8位和16位读写模式;寿命在100万次擦写以上;内部数据掉电可保存20年;芯片读写方便;具有硬件复位管脚。AM29LV160D有三种封装型式,其中48脚TSOP外型如图2-12所示,各管脚含义如表2-8所示。图2-12 AM29LV160D芯片封装2AM29LV160D接口电路AM29LV160D与S3C2410的

45、接口电路如图2-13和图2-14所示。图2-13 AM29LV160D接口电路图2-14 S3C2410局部接口电路说明:图2-13和图2-14使用Protel DXP(Altium 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电源;网

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

47、计 NOR型FLASH芯片在很多基于DSP的系统中十分常用,在基于ARM型芯片的系统中,NAND型FLASH芯片用得更多一些,主要因素为NAND型FLASH芯片容量大、价格低,且ARM芯片支持NAND型FLASH作为启动ROM。博创UP-NETARM2410实验箱上集成了K9F1208U0C芯片(完全兼容K9F1208U0M)。1K9F1208U0M芯片特性K9F1208U0M为SAMSUNG公司的64MB大小NAND型FLASH存储器芯片,其主要特性有:工作电压为3.3 V;存储单元阵列为(64M+2048K)8bit,分为4个可同时擦写大小为128Mb的存储面,每个存储面包括1024个存储

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

49、-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芯片时,不使用地址总线。图2-16 F9F1208U0M接口电路2.4.5 SDRAM接口电路设计 SDRAM是Synchronous Dynamic Random Access Memory的缩写,直译为同步动态随机访问存储器。SDRAM芯片的数据传输速率与同步时钟相同,速率很高

50、。桌面电脑的DDR SDRAM和DDR SDRAM也是SDRAM型内存,DDR为Double Date Rate的缩写,表示数据传输速率是同步时钟的两倍,即时钟信号的上升沿和下降沿均可被用来传送同步数据。博创UP-NETARM2410实验箱使用了两片HYNIX公司的SDRAM型HY57V561620芯片,本节给出HY57V561620芯片与S3C2410的接口电路。1HY57V561620芯片特性 HY57V561620芯片为32MB大小的SDRAM存储器,主要特性为:工作电压为3.3V;管脚兼容LVTTL逻辑电平;输入和输出均参考同步时钟上升沿(或称为上升沿触发和上升沿有效);具有自动刷新功

51、能;内部具有4个存储块,每个存储块的大小为4M16bit;支持猝发式(Burst)连续读写方式;输入时钟频率可达166MHz。HY57V561620芯片管脚封装如图2-17所示,各管脚含义如表2-10所示。图2-17 HY57V561620管脚封装结构HY57V561620内部有4个存储块(Bank),通过块地址线BA0和BA1取0b00、0b01、0b10或0b11选择其中的一个块,当RAS有效时,A0A12选中某个存储块的行地址(RA0RA12);然后,当CAS有效且WE为高电平时,A0A8用作这个存储块的列地址(CA0CA8),此时的操作为从相应的地址阵列中读取数据;如果A10为高电平,

52、读操作伴随有自动预充电功能。同理,操作过程中,如果WE为低电平,那么表示向地址阵列中写入数据,A10为高电平时,写操作伴随有自动预充电功能。读写HY57V561620的控制真值表如表2-11所示。表2-11中“L表示低电平,“H表示高电平,RA为行地址,CA为列地址。13根行地址线和9根列地址线组合成22根地址线,HY57V561620每个存储块的寻址能力为222=4M,4个块的寻址能力为16M,数据总线为16 bit,因此,每片HY57V561620的容量为16M16 bit=32MB。2HY57V561620接口电路 UP-NETARM2410实验箱中S3C2410外扩了2片HY57V56

53、1620,共64MB大小的SDRAM空间,参考表2-7中S3C2410区块6配置大小为64MB以及外接数据总线宽度为32位且有4段空间的SDRAM时的存储器配置方案为(4Mb164段)2片,SDRAM内部区段选址信号接S3C2410的地址线A25:24。由此,可得两片HY57V561620芯片与S3C2410的接口电路图如图2-18和图2-19所示。图2-18和图2-19说明S3C2410映射存储区块6外扩了64MB大小的SDRAM。图2-18 两片HY57V561620接口电路图2-19 S3C2410局部接口电路 2.5 S3C2410外设接口电路设计 S3C2410为基于ARM920T的

54、16/32位RISC微处理器芯片,片内集成了丰富的系统外设,消除了为系统配置额外接口器件的需要,大大降低了整个系统的本钱。S3C2410片上集成的外设功能有:1.8V或2.0V核电压,3.3V存储器电压,3.3V外部I/O接口(亦称IO接口)电压;集成16KB指令高速缓存和16KB数据高速缓存;内嵌MMU;外部存储器控制器(SDRAM控制和片选逻辑);LCD控制器(支持4K色STN和256K色TFT),带有1通道LCD专用DMA。具有外部请求引脚的4通道DMA;3通道,16字节Tx FIFO和16字节Rx FIFO)/2通道SPI;1通道多主IIC总线/1通道IIS总线控制器;支持SD主接口版

55、本,兼容MMC协议版本;2个USB主机接口/1个USB设备接口版);4个PWM定时器和1个内部定时器;具有看门狗定时器;117个通用目的I/O口/24个外部中断源;8通道10位ADC和触摸屏接口;具有日历功能的RTC;带PLL的片内时钟发生器;具有正常、低速、空闲、掉电工作模式。2.5.1 片上外设及其映射存放器 S3C2410芯片管脚结构及含义参见附录三。S3C2410功能结构框图如图2-20所示。图2-20 S3C2410功能结构框图由图2-20可见,S3C2410核心为支持JTAG功能内嵌ICE单元的ARM9TDMI微处理器核,ARM920TDMI通过系统控制协处理器CP15存放器C13

56、借助指令MMU(存储器管理单元)和数据MMU以及AMBA总线到外部存储器寻址指令和数据,或通过C13到16KB指令Cache和16KB数据Cache快速寻址指令和数据,指令地址和数据地址通过总线IVA31:0和DVA31:0传送。选址后,使用总线ID31:0和总线DD31:0借助指令MMU和数据MMU以及AMBA总线访问外部存储器的指令或数据,或直接在16KB指令Cache和16KB数据Cache中读写或存取指令和数据。MMU指向AMBA总线的连接总线IPA31:0或DPA31:0是指指令或数据的物理地址,而C13单元连接MMU单元的IVA31:0或DVA31:0是指指令或数据的映射(或称虚拟

57、)地址。 MMU的作用是把ARM920T核产生的地址(称为虚拟地址)转化为物理地址去访问外部的存储器。CP15用于配置MMU,写缓冲器(Write Buffer)可用于保存16个字和4个地址,写回物理地址伴随缓存器(WriteBack PA Tag RAM)可把数据Cache更新的数据快速刷回外部存储器。16KB的高速Cache存储阵列为512行32B,带宽为64位,访问Cache的地址总线为ARM920T核的虚拟地址通过C13翻译后的地址总线,Cache处于ARM920T核和外部存储器(称为主存)之间,用于缓冲将要读/写的主存数据,有效地提高ARM920T核的数据处理速度。 AMBA总线包括

58、AHB总线和APB总线。由图2-20可知,AHB总线主要用于扩展LCD DMA、LCD控制器(图中的CONT.为Controller的缩写),USB主机控制器,NAND FLASH控制器及启动控制,中断控制器;电源管理,SRAM/NOR FLASH/SDRAM存储器控制器等。APB总线主要用于扩展UART、USB设备、SDI/MMC、看门狗定时器、SPI、IIC、IIS、GPIO、RTC、ADC、定时器/PWM等。AHB和APB都具有总线控制器,能实现总线仲裁和译码功能。所有片上外设通过外设存放器管理。片上外设相关的存储器映射存放器及其含义参见附录一和附录二。2.5.2 LED接口电路设计UP

59、-NETARM2410实验箱上有3个贴片的LED灯、2个7段数码管和1个88点阵的LED阵列,其连接电路图如图2-21至图2-28所示。图2-21 总线隔离驱动图2-22 CPLD控制电路图2-23 EPM240的JTAG口 图2-24 七段LED数码管图图2-25 88LED阵列图2-26 LED灯 图2-27 与门电路 图2-28 与LED显示相关的S3C2410局部电路上述图中,图2-23为图2-22中CPLD的JTAG下载口电路。从图2-26和图2-28可以看出,LED灯的控制直接由S3C2410的通用目的IO口GPC5GPC7控制,当这些管脚置为低电平时,对应的LED灯会亮。结合图2

60、-21、图2-22、图2-24、图2-27和图2-28以及图2-6,理解2个7段数码电路的工作原理。图2-24中2个7段数码管的控制输入LED1ALED1G和LED1DP以及LED2ALED2G和LED2DP,来自图2-22中CPLD的IO口,这些IO口被配置为输出。图2-22中DATA0DATA7和A1A4通过简单的组合逻辑与LED1ALED1G和LED1DP以及LED2ALED2G和LED2DP在CPLD内部相连通(需要编制VHDL语言程序)。 这个控制逻辑为当A8=1且A4:1=0b1000时,DATA7:0连通LED2A:G和LED2DP;当A8=1且A4:1=0b1001时,DATA

温馨提示

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

评论

0/150

提交评论