版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统原理及设计陈子为嵌入式系统原理及设计概述第1页课程安排课时:32课时(上课)+16课时(试验)形式:
专题讲座+讨论+试验+项目设计内容安排第1讲嵌入式系统概述与ARM7体系结构
第2讲指令系统与程序编制
第3讲存放器映射与重映射第4讲系统控制与开启代码第5讲异常与中止第6讲定时器、PWM与实时时钟
第7讲UART与SPI第8讲其它外设模块
嵌入式系统原理及设计概述第2页工程项目:声音播放器数字时钟要按照完整工程项目要求来做。要提交相关技术文档,而且文档要规范作业与试验汇报:
不写作业写博客嵌入式系统原理及设计概述第3页教材与参考书目教材《ARM嵌入式系统基础教程(第2版)》周立功等编著,北京航空航天大学出版社,《ARM嵌入式系统试验教程(一)》周立功等编著,北京航空航天大学出版社,参考书目《深入浅出ARM7——LPC2200》周立功等编著,广州致远电子有限企业,《ARM体系结构及其嵌入式处理器》任哲等编著,北京航空航天大学出版社,,1《ARM程序分析与设计》王宇行编著,北京航空航天大学出版社,,3嵌入式系统原理及设计概述第4页1LECTURE嵌入式系统概述与ARM7体系结构陈子为嵌入式系统原理及设计概述第5页现实中嵌入式系统嵌入式系统原理及设计概述第6页嵌入式系统无处不在嵌入式系统原理及设计概述第7页讨论什么是嵌入式系统、自己身边嵌入式系统、与单片机、DSP联络话题范围不限定,谈谈自己对嵌入式系统了解嵌入式系统原理及设计概述第8页1、什么是嵌入式系统:
来自IEEE定义 “Embeddedsystemisdevicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants”. ——IEEE上述定义主要从应用上加以定义。
能够看出:嵌入式系统是软硬件综合体,还能够涵盖机械等从属装置。嵌入式系统原理及设计概述第9页什么是嵌入式系统:
广义上嵌入式系统是一个应用系统,它最少包含一个可编程计算机(通常是某种形式微控制器、微处理器或数字信号处理芯片(DSP))且使用该系统人普通并未意识到该系统是基于计算机。嵌入式系统原理及设计概述第10页什么是嵌入式系统:
国内经典定义嵌入式系统是
“以应用为中心,以计算机技术为基础,而且软硬件可裁剪,适合用于应用系统对功效、可靠性、成本、体积、功耗有严格要求专用计算机系统”普通由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序等部分组成,用于实现对其它设备控制、监视或管理等功效。嵌入式系统原理及设计概述第11页嵌入式系统特点嵌入式系统与通用型计算机系统相比,含有以下特点:专用性强。可淘汰性。实时性与可靠性好。功耗低。嵌入式系统原理及设计概述第12页通用计算机与嵌入式系统对比特征通用计算机嵌入式系统形式和类型看得见计算机。按其体系结构、运算速度和结构规模等原因分为大、中、小型机和微机。看不见计算机。形式多样,应用领域广泛,按应用来分。组成通用处理器、标准总线和外设。软件和硬件相对独立。面向应用嵌入式微处理器,总线和外部接口多集成在处理器内部。软件与硬件是紧密集成在一起。开发方式开发平台和运行平台都是通用计算机采取交叉开发方式,开发平台普通是通用计算机,运行平台是嵌入式系统。二次开发性应用程序可重新编制普通不能再编程嵌入式系统原理及设计概述第13页嵌入式处理器当前来讲,嵌入式处理器能够分成这么一些类型1、嵌入式微处理器(MicroprocessorUnit,MPU)
2、嵌入式微控制器(MicrocontrollerUnit,MCU)3、嵌入式DSP(DigitalSignalProcessor)处理器4、嵌入式片上系统(SystemonChip,SoC)嵌入式系统原理及设计概述第14页处理器外设存放器I/O“Systemonboard”“Systemonchip”USB以太网memory嵌入式系统原理及设计概述第15页ExternalMemoryCPUAddressDataCacheBusInterfaceWriteBufferMMU/MPURRWWWW(R/W)
外设如USB、LCD控制器等扩展芯片内核(core)处理器存放器子系统SoC片内外设系统片外设备处理器(Processor)芯片(SoC)系统(System)嵌入式系统原理及设计概述第16页微处理器是整个系统关键,通常由3大部分组成:控制单元、算术逻辑单元和存放器。
算术逻辑单元存放器控制单元微处理器存放器输入输出嵌入式系统原理及设计概述第17页嵌入式系统组成嵌入式系统普通由嵌入式硬件和软件组成硬件以微处理器为关键集成存放器和系统专用输入/输出设备软件包含:初始化代码及驱动、嵌入式操作系统和应用程序等,这些软件有机地结合在一起,形成系统特定一体化软件。嵌入式系统原理及设计概述第18页手机大约组成嵌入式系统原理及设计概述第19页微波炉CPUBUSROMRAM输入接口输出接口输入键开门马达磁电管风扇灯具嵌入式处理器喇叭嵌入式系统原理及设计概述第20页嵌入式系统应用领域MicroprocessorCCDpreprocessorPixelcoprocessorA2DD2AJPEGcodecDMAcontrollerMemorycontrollerISAbusinterfaceUARTLCDctrlDisplayctrlMultiplier/AccumDigitalcamerachiplensCCDADigitalCamera嵌入式系统原理及设计概述第21页嵌入式系统硬件部分嵌入式系统软件部分如人大脑,决定了硬件操作模式。经过良好操作系统以及应用程序,把硬件功效发挥到极至。如人手、脚、神经等部位,决定了嵌入式系统先天功效。如运算能力和I/O接口等。嵌入式系统原理及设计概述第22页2ARM介绍ARM企业介绍ARM是AdvancedRISCMachines缩写,它是一家微处理器行业著名企业,该企业设计了大量高性能、廉价、耗能低RISC(精简指令集)处理器。企业特点是只设计芯片,而不生产。它将技术授权给世界上许多著名半导体、软件和OEM厂商,并提供服务。嵌入式系统原理及设计概述第23页ARM企业介绍将技术授权给其它芯片厂商形成各具特色ARM芯片...嵌入式系统原理及设计概述第24页IP商半导体芯片(SOC)商嵌入式系统开发者分工边界个性化强度嵌入式系统组成层次图嵌入式系统原理及设计概述第25页ARM处理器应用当前主要应用于消费类电子领域;到当前为止,基于ARM技术微处理器应用约占据了32位嵌入式微处理器75%以上市场份额全球80%GSM/3G手机、99%CDMA手机以及绝大多数PDA产品均采取ARM体系嵌入式处理器,“掌上计算”相关全部领域皆为其所主宰。ARM技术正在逐步渗透到我们生活各个方面。嵌入式系统原理及设计概述第26页ARM处理器核介绍ARM企业开发了很多系列ARM处理器核,当前最新系列已经是ARMcortex了,而ARM6核以及更早系列已经很罕见了。ARM7ARM9ARM9EARM10ARM11CortexV4V4TV5TEV5TEV6V7ARM体系结构版本ARM体系结构从最初开发到现在有了很大改进,并仍在完善和发展。为了清楚表示每个ARM应用实例所使用指令集,ARM企业定义了7种主要ARM指令集体系结构版本,以版本号V1~V7表示。嵌入式系统原理及设计概述第27页v4v5TESA110v4TARM720TARM7TDMI-SARM920TARM940TARM922TARM966E-SARM946E-SARM1020Ev5TEJ/Jazellev6/JazelleARM7EJ-SARM926EJ-SARM1026EJ-SARM11Micro-ArchitectureRoadmapofARMV4/V5/V6嵌入式系统原理及设计概述第28页项目ARM7ARM9ARM10ARM11流水线3568经典频率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架构冯
诺伊曼哈佛哈佛哈佛嵌入式系统原理及设计概述第29页ARM系列微处理器核特点ARM7ARM7TDMI:整数处理核ARM7TDMI处理器可综合版本;ARM720T:带MMU处理器关键,支持操作系统;ARM7EJ-S:带有DSP和JazelleTM技术,能够实现Java加速功效冯诺伊曼体系结构;ARMTDMI是当前应用最广微处理器核ARM720T带有MMU和8KB指令数据混合cache;ARM7EJ-执行ARMv5TEJ指令,5级流水线,提供Java加速指令,没有存放器保护。ARM9ARM920T:带有独立16KB数据和指令Cache;ARM922T:带有独立8位KB数据和指令Cache;ARM940T–包含更小数据和指令Cache和一个MPU基于ARM9TDMI,带16位Thumb指令集,增强代码密度最多到35%;在0.13µm工艺下最高性能可抵达300MIPS(Dhrystone2.1测试标准);集成了数据和指令Chche;32位AMBA总线接口MMU支持;可在0.18µm、0.15µm和0.13µm工艺硅芯片上实现。嵌入式系统原理及设计概述第30页ARM9EARM926EJ-S:Jazelle技术,有MMU,可配置数据和指令Cache,TCM接口;ARM946E-S:可配置数据和指令Cache及TCM;ARM966E-S:针对要求高性能和低功耗可预测指令执行时间硬实时应用设计ARM968E-S:最小、功耗最小
ARM9E系列处理器,针对嵌入式实时应用设计;ARM9E是针对微控制器、DSP和Java单处理器处理方案;ARM
Jazelle
技术提供8倍Java加速性能(ARM926EJ-S);5-级整数流水线;在0.13µm工艺下最高性能可抵达300MIPS(Dhrystone2.1测试标准);可选择
向量浮点单元VFP9协处理器指令优异海浮点性能,对于3D图形加速和实时控制可抵达
215MFLOPS。高性能AHB总线,带MMU可在0.18µm,0.15µm,0.13µm工艺硅芯片上实现。ARM10EARM1020E:带DSP指令集,在片调试功效,独立32KB数据和指令Cache,MMU支持;ARM1022E:与ARM1020E相同,只是独立数据和指令Cache变为16KB;ARM1026EJ-S:同时含有MPU和MMU,可综合版本;带分支预测6级整数流水线;在0.13µm工艺下最高性能可抵达430MIPS(Dhrystone2.1测试标准);对于3D图形运算和实时控制采取VFP协处理器,浮点运算性能最高可达650MFLOPS;双64位AMBA总线接口和64位内部总路线接口;优化缓存结构提升了处理器访问低速存放器性能;可在0.18µm,0.15µm,0.13µm工艺硅芯片上实现嵌入式系统原理及设计概述第31页ARM11ARM11MPCore:可综合多处理器核,1至4个处理器可配置;ARM1136J(F)-S:可配置数据和指令Cache,可提供1.9位MPEG4编码加速功效;ARM1156T2(F)-S:带集成浮点协处理器,带内存保护单元MPU
;ARM1176JZ(F)-S:带针对CPU和系统安全架构扩展TrustZone技术。增强Thumb、Jazelle、DSP扩展支持;带片上和系统安全TrustZone技术支持;在0.13µm工艺下最高可抵达550MHz;MPCore在0.13µm工艺下最高性能可抵达740MIPS(Dhrystone2.1测试标准);支持多媒体指令SIMD;采取三种电源模式:全速/待命/休眠集成DMATCM低功耗、高性能。SecurCoreSC100:第一个32位安全处理器;、SC110:在SC100上增加密钥协处理器;SC200:带Jazelle技术高级安全处理器;SC210:在SC200上增加密钥协处理器SecurCore是专门为智能卡、安全IC提供32位安全处理器,为电子商务、银行、网络、移动多媒体、公共交通提供安全处理方案;体积小、功耗低,代码压缩密度高;为快速增加Java卡平台提供Java加速功效;嵌入式系统原理及设计概述第32页CortexCortex-A:面向应用微处理器,针对复杂操作系统和应用程序设计;Cortex-R:针对实时系统嵌入式处理器;Cortex-M:针对成本敏感应用优化深度嵌入式处理器;公布,提供增强媒体和数字处理能力,增加了系统性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高代码存放密度,深入降低成本;Intel系列StrongARM:ARMv4体系XScale:ARMv5TE体系,增加MMX指令StrongARM主要应用于手持设备和PDA,5级流水线,含有独立数据和指令Cache,不支持Thumb指令集,当前已停产;XScale是当前Intel企业主推高性能嵌入式处理器,分通用处理器、网络处理器和I/O处理器三类。其中通用处理器有PXA25x、PXA26x、PXA27x三个系列,被广泛应用于智能手机、PDA领域。嵌入式系统原理及设计概述第33页ARM系列产品表示ARM系列产品很多,以ARM7系列为例,其内核ARM7TDMI表示为:·ARM7:ARM系列含有32位整数运算核·T:内含16位压缩指令集Thumb·D:支持片内Debug调试,·M:采取增强型乘法器(Multiplier),·I:内含嵌入式ICE宏单元另外,各产品后缀提供了各种形式与功效选择:·-S:可综合软核Softcore·-E:含有DSP功效·-J:Jazeller,允许直接执行Java字节码嵌入式系统原理及设计概述第34页对本部分要求因为C语言编译器已经考虑到了许多复杂原因,所以作为初学者无需成为一个教授就能够使用LPC2200。不过为了能够设计出可靠应用系统和培养学习新技术能力,作为初学者确实需要对CPU(即ARM内核)运作机制及其独特性能有所了解。同一个系列ARM(比如都是ARM7或均为V4架构),其内核体系结构基本相同,了解其中一个,其它也能很快上手。嵌入式系统原理及设计概述第35页3、ARM7TDMI介绍ARM7TDMI基于ARM体系结构V4版本,是当前低端ARM核。含有广泛应用,其最显著应用为数字移动电话。注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能组成现实芯片。嵌入式系统原理及设计概述第36页冯·诺依曼体系结构ARM7TDMI处理器使用了冯·诺依曼(VonNeumann)结构,指令和数据共用一条32位总线。只有装载、存放和交换指令能够对存放器中数据进行访问。嵌入式系统原理及设计概述第37页冯·诺依曼体系结构指令存放器控制器数据通道输入输出中央处理器存放器程序指令0指令1指令2指令3指令4数据数据0数据1数据2嵌入式系统原理及设计概述第38页哈佛体系结构指令存放器控制器数据通道输入输出CPU程序存放器指令0指令1指令2数据存放器数据0数据1数据2地址指令地址数据嵌入式系统原理及设计概述第39页存放器字与半字ARM处理器直接支持字节(8位)、半字(16位)或者字(32位)数据类型。其中能被4整除地址开始连续4个字节组成一个字,字数据类型为4个连续字节。从偶数地址开始连续2个字节组成一个半字,半字数据类型为2个连续字节。ARM指令长度刚好是1个字。1112342嵌入式系统原理及设计概述第40页方式半字对齐字对齐地址…0x40020x40040x40060x4008……0x40040x40080x400C0x4010…特征bit0=0其它位为任意值bit0=0,bit1=0其它位为任意值字/半字对齐嵌入式系统原理及设计概述第41页存放方式小端存放方式大端存放方式字低位字节嵌入式系统原理及设计概述第42页流水线技术流水线(Pipeline)技术:几个指令能够并行执行允许多个操作同时处理,比逐条指令执行要快。提升了CPU运行效率译码取指执行add译码取指执行sub译码取指执行cmp时间AddSubCmp为增加处理器指令流速度,ARM7系列使用3级流水线.PC指向正被取指指令,而非正在执行指令0x4000PC-80x4004PC-40x4008PC周期1周期2周期3周期4周期5当前周期PC值=当前途序执行位置+8第1条指令第2条指令第3条指令嵌入式系统原理及设计概述第43页预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM11嵌入式系统原理及设计概述第44页4、处理器状态处理器状态ARM7TDMI处理器内核使用V4T版本ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。所以ARM7TDMI处理器有两种操作状态:ARM状态:32位,这种状态下执行是字方式ARM指令;Thumb状态:16位,这种状态下执行半字方式ARM指令。注意:两个状态之间切换并不影响处理器模式或存放器内容。由“当前途序状态存放器CPSR”中第5位(即控制位T)反应处理器正在操作状态。嵌入式系统原理及设计概述第45页ARM指令集与Thumb指令集关系Thumb指令集含有灵活、小巧特点ARM指令集支持ARM核全部特征,含有高效、快速特点嵌入式系统原理及设计概述第46页处理器状态切换使用BX指令将ARM7TDMI内核操作状态在ARM状态和Thumb状态之间进行切换(详见第4章),程序以下所表示。;从Arm状态切换到Thumb状态LDRR0,=Lable+1BXR0;从Thumb状态切换到ARM状态LDRR0,=LableBXR0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号嵌入式系统原理及设计概述第47页处理器模式说明备注用户(usr)正常程序执行模式不能直接切换到其它模式系统(sys)运行操作系统特权任务与用户模式类似,但含有能够直接切换到其它模式等特权快中止(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中止(irq)用于通用中止处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中止响应时进入此模式中止(abt)用于支持虚拟内存和/或存放器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器软件仿真未定义指令异常响应时进入此模式5处理器模式处理器7种模式usersystemfastinterruptrequestinterruptrequestsupervisorabortunderfined嵌入式系统原理及设计概述第48页特权模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统特权任务等与用户模式类似,但含有能够直接切换到其它模式等特权快中止(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中止(irq)用于通用中止处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中止响应时进入此模式中止(abt)用于支持虚拟内存和/或存放器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为特权模式。ARM内部存放器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。另外,特权模式能够自由切换处理器模式,而用户模式不能直接切换到别模式。未定义(und)中止(abt)管理(svc)中止(irq)快中止(fiq)系统(sys)嵌入式系统原理及设计概述第49页异常模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统特权任务等与用户模式类似,但含有能够直接切换到其它模式等特权快中止(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中止(irq)用于通用中止处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中止响应时进入此模式中止(abt)用于支持虚拟内存和/或存放器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器软件仿真未定义指令异常响应时进入此模式未定义(und)中止(abt)管理(svc)中止(irq)快中止(fiq)这五种模式称为异常模式。它们除了能够经过程序切换进入外,也能够由特定异常进入。当特定异常出现时,处理器进入对应模式。每种异常模式都有一些独立存放器,以防止异常退出时用户模式状态不可靠。MSRCPSR_c,#(NoInt|SYS32Mode);从管理模式切换到系统模式MSRCPSR_c,#(NoInt|SVC32Mode);从系统模式切换到管理模式嵌入式系统原理及设计概述第50页用户和系统模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统特权任务等与用户模式类似,但含有能够直接切换到其它模式等特权快中止(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中止(irq)用于通用中止处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中止响应时进入此模式中止(abt)用于支持虚拟内存和/或存放器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器软件仿真未定义指令异常响应时进入此模式这两种模式都不能由异常进入,而且它们使用完全相同存放器组。系统模式是特权模式,不受用户模式限制。操作系统在该模式下访问用户模式存放器就比较方便,而且操作系统一些特权任务能够使用这个模式访问一些受控资源。系统(sys)用户(usr)嵌入式系统原理及设计概述第51页6ARM内部存放器在ARM7TDMI处理器内部有37个用户可见存放器。31个通用32位存放器(包含程序计数器PC)6个状态存放器通用存放器包含R0~R15,能够分为三类:——未分组存放器R0~R7——分组存放器R8~R14——程序计数器PC(R15)状态存放器:——CPSR(CurrentProgramStatusRegister,当前途序状态存放器)——SPSR(SavedProgramStatusRegister,备份程序状态存放器)在不一样工作模式和处理器状态下,程序员能够访问存放器不尽相同。嵌入式系统原理及设计概述第52页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15状态存放器R16(CPSR)CPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下存放器嵌入式系统原理及设计概述第53页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下存放器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0全部37个存放器,分成两大类:31个通用32位存放器;6个状态存放器。嵌入式系统原理及设计概述第54页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中止ARM状态各模式下能够访问存放器嵌入式系统原理及设计概述第55页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中存放器R0~R13为保留数据或地址值通用存放器。它们是完全通用存放器,不会被体系结构作为特殊用途,而且可用于任何使用通用存放器指令。嵌入式系统原理及设计概述第56页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7为未分组存放器,也就是说对于任何处理器模式,这些存放器都对应于相同32位物理存放器。嵌入式系统原理及设计概述第57页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通通用存放器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8存放器R8~R14为分组存放器。它们所对应物理存放器取决于当前处理器模式,几乎全部允许使用通用存放器指令都允许使用分组存放器嵌入式系统原理及设计概述第58页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通通用存放器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8存放器R8~R12有两个分组物理存放器。一个用于除FIQ模式之外全部存放器模式,另一个用于FIQ模式。这么在发生FIQ中止后,能够加速FIQ处理速度。嵌入式系统原理及设计概述第59页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq普通通用存放器存放器R13、R14分别有6个分组物理存放器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13嵌入式系统原理及设计概述第60页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针存放器R13(SP)存放器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13指令或其它功效,只是习惯上都这么使用。不过在Thumb指令集中存在使用R13指令。嵌入式系统原理及设计概述第61页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接存放器R14(LR)R14为链接存放器(LR),在结构上有两个特殊功效:在每种模式下,模式本身R14版本用于保留子程序返回地址;当发生异常时,将R14对应异常模式版本设置为异常返回地址(有些异常有一个小固定偏移量)。嵌入式系统原理及设计概述第62页Lable程序A程序BR14R14(LR)存放器与子程序调用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令下一条指令所在地址存入R14(LR);3.程序B执行最终,将R14存放器内容放入PC,返回程序A;嵌入式系统原理及设计概述第63页R14存放器与异常发生异常发生时,程序要跳转至异常服务程序,对返回地址处理与子程序调用类似,都是由硬件完成。区分在于有些异常有一个小常量偏移。嵌入式系统原理及设计概述第64页R14存放器注意关键点R14R14_irq用户模式下程序IRQ模式下程序AareturnB...XA地址A地址A1.执行用户模式下程序;2.发生IRQ中止,硬件将某个地址存入IRQ模式下R14_irq存放器,用户模式下R14没有被破坏;3.IRQ服务程序A执行完成,将R14_irq存放器内容减去某个常量后存入PC,返回之前被中止程序;未被破坏R14_irq嵌入式系统原理及设计概述第65页R14存放器注意关键点R14R14_irq用户模式下程序IRQ模式下程序AaB...XA地址A地址A1.执行用户模式下程序;2.发生IRQ中止,硬件将某个地址存入IRQ模式下R14_irq存放器,用户模式下R14没有被破坏;3.IRQ服务程序A执行完成,将R14_irq存放器内容减去某个常量后存入PC,返回之前被中止程序;未被破坏IRQ模式下程序BareturnB...XA地址B地址B4.假如在IRQ处理程序中打开IRQ中止,而且再次发生IRQ中止;5.硬件将返回地址保留在R14_irq存放器中,原来保留返回地址将被覆盖,造成错误;R14_irq被破坏6.在程序B返回到程序A,然后在返回到用户模式下被中止程序时,发生错误,将不能正确返回;returnreturn处理方法是确保R14对应版本在发生中止嵌套时不再保留任何有意义值(将R14入栈),或者切换到其它处理器模式下。嵌入式系统原理及设计概述第66页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序计数器R15(PC)存放器R15为程序计数器(PC),它指向正在取指地址。能够认为它是一个通用存放器,不过对于它使用有许多与指令相关限制或特殊情况。假如R15使用方式超出了这些限制,那么结果将是不可预测。嵌入式系统原理及设计概述第67页读R15限制正常操作时,从R15读取值是处理器正在取指地址,即当前正在执行指令地址加上8个字节(两条ARM指令长度)。因为ARM指令总是以字为单位,所以R15存放器最低两位总是为0。LDRR0,PC??????PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码嵌入式系统原理及设计概述第68页读R15限制当使用STR或STM指令保留R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保留(未来可能还有其它数字)。偏移量是8还是12取决于详细ARM芯片,不过对于一个确定芯片,这个值是一个常量。所以最好防止使用STR和STM指令来保留R15,假如极难做到,那么应该在程序中计算出该芯片偏移量。嵌入式系统原理及设计概述第69页读R15限制计算偏移量(PC值和当前指令地址差)程序代码:SUB R1,PC,#4 ;R1=下面STR指令地址STR PC,[R0] ;保留STR指令地址+偏移量LDR R0,[R0] ;然后重装SUB R0,R0,R1 ;计算偏移量04812ARM状态嵌入式系统原理及设计概述第70页写R15限制正常操作时,写入R15值被看成一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。嵌入式系统原理及设计概述第71页写R15限制因为ARM指令以字节为边界,所以写入R15值最低两位通常为0b00。详细规则取决于内核结构版本:在ARM结构V3版及以下版本中,写入R15值最低两位被忽略,所以跳转地址由指令实际目标地址(写入R15值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15值最低两位为0,假如不是,结果将不可预测。嵌入式系统原理及设计概述第72页存放器类别存放器在汇编中名称各模式下实际访问存放器用户系统管理中止未定义中止快中止通用存放器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态存放器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序状态存放器CPSR存放器CPSR为程序状态存放器,在异常模式中,另外一个存放器“程序状态保留存放器(SPSR)”能够被访问。每种异常都有自己SPSR,在进入异常时它保留CPSR当前值,异常退出时可经过它恢复CPSR。详细描述参看3.8小节。嵌入式系统原理及设计概述第73页ARM指令集全部指令都能够被有条件执行,简称条件执行。在以往微控制器中,只有条件转移指令或位测试和设置一类指令是条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府优化绩效考核制度
- 政治部教育培训制度汇编
- 教育内部专项审计制度
- 教育培训基地培训制度
- 教育培训暂行管理制度
- 教育培训机构运行制度
- 教育培训计划制度与流程
- 教育扶贫分级培训制度
- 旅游景区财务规章制度
- 日资企业培训教育制度
- 慢性泪小管炎的护理查房
- 《脑出血护理查房范例》课件
- 售电业务居间服务合同协议
- 毕业设计(论文)-AGV搬运机器人设计-AGV小车
- 2024年浙江出版联团招聘真题
- DB37-T 4401-2021 养老机构分级护理服务规范
- 2025-2030年中国土砂石开采行业市场竞争格局规划分析报告
- 人机配合安全
- 导数中的同构问题【八大题型】解析版-2025年新高考数学一轮复习
- ANCA相关性小血管炎肾损伤病因介绍
- (合同范本)中介佣金协议书
评论
0/150
提交评论