版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM9嵌入式系统设计与
开发应用4/2/20231ARM9嵌入式系统设计与开发教程第二章基于ARM920T核微处理器通用处理器系列ARM7、ARM9、ARM9E和ARM10E的特点及主要应用领域嵌入式ARM920T内核编程模型、ARM920T的运行模式、寄存器组织及ARM体系结构的存储器格式三星S3C2410X处理器结构22.1ARM处理器简介ARM(AdvancedRISCMachines)处理器是一种低功耗高性能的32位RISC处理器。
什么是RISC架构?
嵌入式微处理器可分为CISC和RISC两类(复杂指令集计算机ComplexInstructionSetComputer—CISC;精简指令集计算机ReducedInstructionSetComputer—RISC)。大家熟悉的大多数台式PC都是使用CISC微处理器,如Intel的x86。RISC结构体系有两大主流:SiliconGraphics公司(硅谷图形公司)的MIPS技术;ARM公司的AdvancedRISCMachines技术。3(5)CPU:由于RISCCPU包含较少的单元电路,因而面积小、功耗低;而CISCCPU包含丰富的电路单元,因而功能强、面积大、功耗大。(6)设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。(7)易用性:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。(8)应用范围:RISC机器更适合于嵌入式应用;而CISC机器则更适合于通用计算机。目前CISC与RISC正在逐步走向融合,如PentiumPro的内核是基于RISC体系结构,而能接受CISC指令后将其分解分类成RISC指令以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融合CISC与RISC两种技术,从软件与硬件方面看二者会取长补短。5ARM处理器的主要特点共有31个32位寄存器:16个在任何模式下可见所有指令都带有条件加载数值的同时进行算术和移位操作在几种模式下操作2.1.1ARM微处理器系列ARM7系列:工业控制、网络设备、移动电话ARM9系列ARM9E系列ARM10E系列SecurCore系列:安全要求较高的应用,如电子银行Intel的StrongARM:便携式通信产品,如掌上电脑Intel的Xscale:Intel主推的ARM微处理器,已用于数字移动电话通用处理器无线设备、消费类电子产品62.1.2ARM7系列微处理器嵌入式ICE-RT(InCircuitEmulator-RralTime)逻辑,调试开发方便
解释:用于提供片内调试支持,它包含一个调试通信通道,在主机调试器和目标之间传送信息,嵌入式ICE-RT通过JTAG测试访问接口进行控制。极低的功耗,适用于便携产品能够提供0.9MIPS/MHZ的三级流水线结构
解释:三级流水线结构是取指-->译码-->执行对操作系统的广泛支持:WindowsCE、Linux指令系统与ARM9、ARM9E、ARM10E兼容主频高达130MHZ,可用于高速运算具有低功耗的32位RISC处理器,主要特点:7D:支持片上Debug,实现实时调试M:内嵌硬件乘法器(multiplier)
解释:硬件乘法器可以在单个指令周期内完成乘法操作,是区别于通用的微处理器的重要标志
I:嵌入式ICE,支持片上断点和调试点92.1.3ARM9系列微处理器具有高性能、低功耗,主要特点:5级流水线,具有分开的指令和数据存储器,指令执行效率更高,具体如下:(1)取指:从存储器中取出指令,并将其放入指令流水线。(2)译码:对指令进行译码。(3)执行:把一个操作数移位,产生ALU(算术逻辑单元)的结果。(4)缓冲/数据:如需要则访问数据存储器;否则ALU的结果只是简单地缓冲1个时钟周期,以便所有的指令具有同样的流水线流程。(5)回写:将指令产生的结果回写到寄存器,包括任何从存储器中读取的数据。5级流水线图10提供1.1MIPS/MHZ的哈佛结构
哈佛结构:是一种将程序指令存储和数据存储分开的存储器结构。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA总线接口AMBA:将RISC处理器集成在其他IP芯核和外设中,它是有效连接IP核的“数字胶”,并且是ARM复用策略的重要组件。它不是芯片与外设之间的接口,而是ARM内核与芯片上其他元件进行通信的接口。全性能的MMU支持WindowsCE、Linux、PalmOS等多种主流嵌入式操作系统。MMU:MemoryManagementUnit,内存管理单元,负责虚拟地址与物理地址的转换。达到每个用户进程都拥有自己独立的地址空间的目标。MPU(MemoryProtectionUnit,内存保护单元)支持实时操作系统支持数据Cache(高速缓冲存储器)和指令Cache11ARM920T以ARM9TDMI为内核,增加了高速缓存和内存管理单元(MMU),系统结构图如图4.3所示。ARM920T结构功能图内置追踪宏单元:ETM定义了一个物理跟踪端口用来传输程序执行流程的信息
RISCCPU16K字节指令缓存指令存储器管理单元高级微处理器总线架构协处理器:系统控制处理器16K字节数据缓存数据存储器管理单元写缓冲器13ARM920T处理器的主要特性ARM9TDMI内核,ARMv4T架构(ARM版本4,支持Thumb)两套指令集:ARM高性能32位指令集、Thumb高代码密度16位指令集。5级流水线结构16K字节数据缓存、指令缓存标准的ARMv4存储器管理单元(MMU)8位、16位、32位的指令总线与数据总线。142.2.1ARM920T内核编程模型字(Word),在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。半字(Half-Word),在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。字节(Byte),在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。ARM920T中支持字节(8位)、半字(16位)、字(32位)3种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。152.2.2ARM体系结构的存储器格式ARM920T体系结构将存储器看做是从零地址开始的字节的线性组合。从0字节到3字节放置第1个存储的字数据,从第4个字节到第7个字节放置第2个存储的字数据,依次排列。作为32位的微处理器,ARM920T体系结构所支持的最大寻址空间为4GB(232字节)。ARM920T体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。大端格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如下图所示。17与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如下图所示:182.2.3处理器模式ARM920T支持7种运行模式,分别为:
用户模式(usr),ARM处理器正常的程序执行状态;
快速中断模式(fiq),用于高速数据传输或通道处理;
外部中断模式(irq),用于通用的中断处理;
管理模式(svc),操作系统使用的保护模式;
数据访问终止模式(abt),当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护;
系统模式(sys),运行具有特权的操作系统任务;
未定义指令中止模式(und),当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的6种模式称为非用户模式或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及访问受保护的系统资源等情况。192)分组寄存器R8-R14:每一次所访问的物理寄存器与处理器当前的运行模式有关。R8-R12:两种模式,对应两个不同的物理寄存器R13、R14:7种模式(用户模式与系统模式共用),对应6个不同的物理寄存器(区分记号R13<mode>、R14<mode>
)R14也称为子程序连接寄存器(SubroutineLinkRegister)或连接寄存器LR。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。在其他情况下,R14用做通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。213)程序计数器PC(R15)寄存器R15用做程序计数器(PC)。在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。4)寄存器R16用做当前程序状态寄存器(CurrentProgramStatusRegister,CPSR),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。22用户与系统模式快速中断模式管理模式终止模式中断模式未定义模式23高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制地访问这些寄存器,将其用做快速的暂存器。如:MOV、CMP、ADD指令。252.2.5程序状态寄存器ARM920T体系结构中包含一个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器(SPSR)。备份的程序状态寄存器用来进行异常处理,其功能包括:
保存ALU中的当前操作信息;
控制允许和禁止中断;
设置处理器的运行模式。程序状态寄存器每一位的安排如图所示。262.2.6.异常(Exceptions)当正常的程序执行流程发生暂时的停止时,称之为异常。在处理异常之前,当前处理器的状态必须保留,这样,当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,处理器会按固定的优先级对多个异常进行处理。1、对异常的响应:按以下步骤操作(1)将下一条指令的地址存入相应连接寄存器LR。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入的,程序在处理异常返回时能从正确的位置重新开始执行。例如:在软件中断异常SWI中,指令MOVPC,R14_svc总是返回到下一条指令,而不管SWI是在ARM状态执行,还是在Thumb状态执行。(2)将CPSR复制到相应的SPSR中。(3)根据异常类型,强制设置CPSR的运行模式位。(4)强制PC从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。292、从异常返回:进入异常处理前可以设置中断禁止位,以禁止异常处理时对中断的响应。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。异常处理完毕之后,执行以下操作从异常返回:(1)将连接寄存器LR的值减去相应的偏移量后送到PC中。(2)将SPSR复制回CPSR中。(3)若在进入异常处理时设置了中断禁止位,要在此清除。3、各类异常的具体描述(1)FIQ(快速中断请求)(2)IRQ(中断请求)(3)Abort(中止)(4)SoftwareInterrupt(软件中断)(5)UndefinedInstruction(未定义指令)304、异常进入/退出表中总结了进入异常处理时保存在相应R14中的PC值,及在退出异常处理时推荐使用的指令。315、异常向量及异常处理
应用程序中的异常处理:当系统运行时,异常可能会随时发生。为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。当异常处理完成以后,返回到主程序继续执行。各异常向量地址如表所示。32当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指令中止、未定义指令、SWI。332.2.7ARM微处理器的指令集加载/存储型,指令集仅能处理寄存器中的数据,处理结果要放回寄存器中。跳转指令数据处理指令程序状态寄存器(PSR)处理指令加载/存储指令协处理器指令异常产生指令341、ARM指令集1)跳转指令:实现程序流程的跳转直接向程序计数器PC写入跳转地址值,可在4GB地址空间中的任意跳转
MOVLR,PC;保存将来的返回地址值从当前指令向前或向后的32MB地址空间的跳转,有4条指令:(1)B指令:B{条件}目标地址(2)BL指令:BL{条件}目标地址(3)BLX指令:BLX目标地址(4)BX指令:BX{条件}目标地址2)数据处理指令(1)MOV指令:加载数据
MOV{条件}{S}目的寄存器,源操作数如:MOVR1,R0MOVPC,R14MOVR1,R0,LSL#335(2)MVN指令:取反后加载数据MVN{条件}{S}目的寄存器,源操作数(3)CMP指令:比较数据CMP{条件}操作数1,操作数2(4)CMN指令:取反后比较CMN{条件}操作数1,操作数2(5)TST指令:按位与运算TST{条件}操作数1,操作数2(6)TEQ指令:按位异或TEQ{条件}操作数1,操作数2(7)ADD指令:相加并存储ADD{条件}{S}目的寄存器,操作数1,操作数2(8)ADC指令:相加并加上标志位,再存储ADC{条件}{S}目的寄存器,操作数1,操作数2(9)SUB指令:相减并存放在目的寄存器(10)SBC指令:相减并减去标志位,再存放在目的寄存器(11)RSB指令:逆向减法,再存放在目的寄存器(12)RSC指令:逆向减法,再减去标志位,再存放在目的寄存器36(13)AND指令:操作数逻辑与运算(14)ORR指令:操作数逻辑或运算(15)EOR指令:操作数逻辑异或运算(16)BIC指令:清除操作数1的某些位,并把结果放置到目的寄存器4)程序状态寄存器访问指令:
MRS{条件}通用寄存器,程序状态寄存器(CPSR/SPSR)
MSR{条件}程序状态寄存器(CPSR/SPSR)_<域>,操作数5)加载/存储指令:
LDR{条件}目的寄存器,<存储器地址>LDRB{条件}目的寄存器,<存储器地址>LDRH{条件}目的寄存器,<存储器地址>STR{条件}源寄存器,<存储器地址>STRB{条件}源寄存器,<存储器地址>STRH{条件}源寄存器,<存储器地址>376)批量数据加载/存储指令:
LDM(或STM){条件}{类型}基址寄存器{!},寄存器列表{/\}7)数据交换指令:
SWP{条件}目的寄存器,源寄存器1,[源寄存器2]SWPB{条件}目的寄存器,源寄存器1,[源寄存器2]8)移位指令:通用寄存器,LSL(或ASL)操作数通用寄存器,LSR(或ASR)操作数通用寄存器,ROR(或RRX)操作数9)协处理器指令:CDP通知ARM协处理器完成特定操作LDC数据传送STC\MCR\MRC10)异常产生指令:
SWI{条件}24位的立即数
BKPT16位的立即数382、ARM汇编器的伪指令伪指令:没有相对应的操作码,为完成汇编程序作各种准备工作。1)符号定义伪指令
GBLA(GBLL或GBLS)全局变量名GBLA定义一个全局的数字变量,并初始化为0GBLL定义一个全局的逻辑变量,并初始化为FGBLS定义一个全局的字符串变量,并初始化为空
LCLA(LCLL或LCLS)局部变量名用于定义一个ARM程序中的局部变量,并将其初始化变量名SETA(SETL或SETS)表达式用于给已定义的全局变量或局部变量赋值名称RLIST{寄存器列表}:对一个通用寄存器列表定义名称392)数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化分配存储单元:DCBDCW(DCWU)DCD(DCDU)DCFD(DCFDU)DCQ(DCQU)SPACE定义结构化的内存表:MAP:定义首地址FIELD:定义数据域3)汇编控制伪指令
IF、ELSE、ENDIFWHILE、WEND40
MACRO、MEND:将一段代码定义为一个整体,称为宏指令
MEXIT:用于从宏定义跳转4)其他常用的伪指令
AREA:用于定义一个代码段或数据段
AREA段名属性1,属性2,…ALLGN:通过添加填充字节的方式,使当前位置满足一定的对齐方式
CODE16:通知编译器其后的指令为16位的Thumb指令
CODE32:通知编译器其后的指令为32位的ARM指令
ENTRY:用于指定汇编程序的入口点41
END:用于通知编译器已经到了源程序的结尾
EQU:用于为程序中的常量、标号等定义一个等效的字符名称
EXPORT:用于在程序中声明一个全局的标号
IMPORT:用于通知编译器要使用的标号在其他的源文件中定义
EXTERN:用于通知编译器要使用的标号在其他源文件中定义,但要在当前源文件中引用
GET:用于将一个源文件包含到当前的源文件中
INCBIN:用于将一个目标文件或数据文件包含到当前的源文件
RN:用于给一个寄存器定义一个别名
ROUT:用于给一个局部变量定义作用范围422.3三星S3C2410X处理器详解
S3C2410X在包含ARM920T核的同时,增加了丰富的外围资源,主要片内外围模块包括:
1个LCD控制器,支持STN和TFT液晶显示屏;
外部存储器管理(SDRAM控制器和芯片选择逻辑);
3个通道的UART;
4个通道的DMA,支持存储器和I/O口之间的传输,以猝发模式提高传输率;
4个具有PWM功能的16位定时/计数器和1个16位内部定时器,支持外部时钟源;43
8通道的10位ADC,最高速率可达500kB/s,10位分辨率;
触摸屏接口;
IIS总线接口;
2个USB主机接口,1个USB设备接口;
2个SPI接口;
SD卡接口和MMC卡接口;
16位看门狗定时器;
117位通用I/O口和24位外部中断源;
8通道10位AD控制器;
电源管理。44S3C2410X及片内外围简介45S3C2410X支持大、小端模式,将存储空间分成8组(Bank),每组大小是128MB,共计1GB。462.3.2特殊功能寄存器
1.内存控制器(MemoryController)内存控制器为访问外部存储空间提供存储器控制信号,共有13个寄存器。472.NandFlash控制器S3C2410X支持NandFlash启动,启动代码存储在NandFlash上。启动时,NandFlash的前4KB将被装载到内部的固定地址中,利用硬件纠错码ECC对数据的正确性检验,然后开始执行其中的启动代码。一般情况下,该启动代码会把NandFlash中的内容拷贝到SDRAM中去,拷贝完后,主程序将在SDRAM中执行。操作流程如图所示。48自动引导模式流程:
复位;
如果自动引导模式使能,NandFlash中的前4KB代码拷贝到内部的小石头区域;
小石头映射到nGCS0;
CPU开始执行小石头区域中的代码。NandFlash模式:
通过NFCONF寄存器设置NandFlash配置;
把NandFlash命令写入NFCMD寄存器;
把NandFlash地址写入NFADDR寄存器;
读/写数据同时通过NFSTAT寄存器检测NandFlas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Crystal-Violet-solution-生命科学试剂-MCE
- 2026年学校图书馆管理系统合同协议
- 中国古代地理学成就概述与试题试卷
- 工厂员工辞退协议书
- 工程调价协议书模板
- 幼儿退园协议书
- 店店联盟协议书
- 店面合作分租协议书
- 建筑工伤死亡协议书
- 弘法寺义工协议书
- 北师大版一年级数学下册《捉迷藏》说课稿课件
- 高考英语高频词组+短语+固定搭配
- 王慧文清华大学《互联网产品管理课》
- 3206回撤作业规程
- 循证医学课件:临床实践指南的评价与应用
- (4.3.1)-4.3平面问题三角形单元刚度矩阵
- GB/T 15796-2011小麦赤霉病测报技术规范
- 2023年上海铁路局校园招聘笔试模拟试题及答案解析
- 橡胶工艺学06橡胶的共混与改性课件
- 厚度自动控制和板形控课件
- 长征英文课件
评论
0/150
提交评论