书签 分享 收藏 举报 版权申诉 / 72
上传文档赚钱

类型ARM嵌入式系统基础教程第二章(18)课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4372133
  • 上传时间:2022-12-03
  • 格式:PPT
  • 页数:72
  • 大小:551.38KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《ARM嵌入式系统基础教程第二章(18)课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ARM 嵌入式 系统 基础教程 第二 18 课件
    资源描述:

    1、周立功单片机 ARM体系结构 ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:大的、统一的寄存器文件;装载/保存结构,数据处理 操作只针对寄存器的内容,而不直接对存储器进行操作;简单的寻址模式;统一和固定长度的指令域,简化了指令的译码。周立功单片机 ARM体系结构ARM体系结构的特点:每条数据处理指令都对算术逻辑单元和移位器控制,以实现ALU和移位器的最大利用;地址自动增加和减少寻址模式,优化程序循环;多寄存器装载和存储指令实现最大数据吞吐量;所有指令的条件执行实现最快速的代码执行。周立功单片机 各ARM体系结构版本 ARM体系结

    2、构从最初开发到现在有了巨大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了5种主要的ARM指令集体系结构版本,以版本号V1V5表示。周立功单片机3.1 ARM简介 ARM处理器核简介 ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscale周立功单片机3.1 ARM简介 ARM处理器核简介ARM7 该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jaze

    3、lle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。周立功单片机3.1 ARM简介 ARM处理器核简介ARM9 该系列包括ARM9TDMI、ARM920T和带有告诉缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。周立功单片机3.1 ARM简介 ARM处理器核简介ARM10 该系列包括ARM102

    4、0E和ARM1020E处理器核,其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。可以用于视频游戏机和高性能打印机等场合。周立功单片机3.1 ARM简介 ARM处理器核简介SecurCore 该系列涵盖了SC100、SC110、SC200和SC210处理核。该系列处理器主要针对新兴的安全市场,以一种全新的安全处理器设计为智能卡和其它安全IC开发提供独特的32位系统设计,并具有特定反伪造方法,从而有助于防止对硬件和软件的盗版。周立功单片机3.1 ARM简介 ARM处理器核简介Xscale Intel Xscale微控制器则提供全性能

    5、、高性价比、低功耗的解决方案,支持16位Thumb指令并集成数字信号处理(DSP)指令。周立功单片机3.2 ARM7TDMI 简介 ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动电话。注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。周立功单片机3.2 ARM7TDMI 简介 ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持EmbededICE

    6、观察硬件;ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;ARM7 T D M I-S周立功单片机3.2 ARM7TDMI 简介 ARM7TDMI处理器是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机(RISC),比复杂指令集计算机(CISC)要简单得多。这样的简化实现了:高的指令吞吐量;出色的实时中断响应;小的、高性价比的处理器宏单元。周立功单片机3.2 ARM7TDMI 三级流水线 ARM7TDMI处理器使用流水线来增加处理器指令流的速度。这样可使几

    7、个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。ARM7TDMI的流水线分3级,分别为:取指译码执行周立功单片机3.2 ARM7TDMI 三级流水线 正常操作过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出。这三条指令之间的位置关系如下表所示:周立功单片机3.2 ARM7TDMI 存储器访问 ARM7TDMI处理器使用了冯诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。数据可以是字节(8位)、半字(16位)或者字(32位)。周立功单片机3.2 ARM

    8、7TDMI 存储器访问计算机结构说明:“冯诺依曼”结构:把代码作为一种特殊的数据来操作,指令总线和数据总线及其存储区域是统一的;“哈佛”结构:指令总线和数据总线及其存储区是分开、独立的。周立功单片机3.2 ARM7TDMI 存储器访问 ARM7TDMI处理器的存储器接口可以使潜在的性能得以实现,这样减少了存储器的使用。对速度有严格要求的控制信号使用流水线,这样使系统控制功能以标准的低功耗逻辑实现。ARM7TDMI处理器的存储器周期有4个基本类型:内部周期;非连续的周期;连续 的周期;协处理器寄存器的传输周期。周立功单片机 3.3 ARM7TDMI的模块和内核框图Em beddedIC E-R

    9、TCPUDBG R NG(0)DBG R NG(1)DBG EXT(0)DBG EXT(1)TAPADDR 31:0LO C KW R ITESIZE1:0PR O T1:0TR ANS1:0W DATA31:0R DATA31:0DBG TDIDBG nTR STDBG TM SDBG TC K ENDBG TDO宏单元控制器协处理器接口信号12Em beddedICE-RTARM7TDMI模块周立功单片机 3.3 ARM7TDMI的模块和内核框图ARM7TDMI模块地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增加器乘法器桶形移位器32位ALU写数据寄存器指令管线读数据寄存器T

    10、humb指令译码器指令译码和控制逻辑ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG输出DBG输入CP控制CP握手WDATA31:0RDATA31:0扫描调试控制周立功单片机 3.3 ARM7TDMI的模块和内核框图ARM7TDMI模块CPBCPACPnICPTBITCPSEQCPnMREQCPnOPCCPnTRAN STRANS1:0 PROT1:0 SIZE1:0 WRITEABORTRDATA31:0WDATA31:0ADDR31:0 DBGTDODBGnTDO E NDBGnTRS

    11、 TDBGTDIDBGTMSDBGTCKE NDBGCOMM T XDBGCOMM R XDBGRNG 0 DBGRNG 1 DBGENDBGEXT 0 DBGEXT 1 DBGnEXE CDBGACKDBGBREA KDBGRQLOCKCFGBIGE N DnRESETnFIQnIRQCLKENCLKDBGINST RVALIDARM7TDM I-SDMORE同步的Em bededICE-RT扫描调试访问 端口存储器接口存储器管理接 口协处理器接口时钟中断总线控制仲裁调试处理器周立功单片机3.4 体系结构直接支持的数据类型 体系结构直接支持的数据类型ARM处理器支持下列数据类型:字节 8位半

    12、字 16位(必须分配为占用两个字节)字 32为(必须分配为占用4各字节)1112342周立功单片机 体系结构直接支持的数据类型注意:V4版本之后的ARM结构都支持这3种结构(包括V4版本),而以前的版本只支持字节和字;当数据类型定义为无符号型时,N位数据值使用正常的二进制格式表示范围为02N-1的非负整数;当数据类型定义为有符号型时,N位数据值使用2的补码格式表示范围为-2N-1+2N-1-1的整数;3.4 体系结构直接支持的数据类型周立功单片机 体系结构直接支持的数据类型注意:所有数据操作,例如ADD,都以字为单位;装载和保存指令可以对字节、半字和字进行操作,当装载字节或半字时自动实现零扩展

    13、或符号扩展;ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)。3.4 体系结构直接支持的数据类型周立功单片机3.5 处理器状态 处理器状态 ARM7TDMI处理器内核使用V4T版本的ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI处理器有两种操作状态:ARM状态:32位,这种状态下执行的是字方式的ARM指令;Thumb状态:16位,这种状态下执行半字方式的ARM指令。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。周立功单片机3.5 处理器状态 处理器状态 使用BX指令将ARM7TDMI内核的操作状

    14、态在ARM状态和Thumb状态之间进行切换(详见第4章),程序如下所示。;从Arm状态切换到Thumb状态 LDR R0,=Lable+1 BX R0;从Thumb状态切换到ARM状态 LDR R0,=Lable BX R0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号周立功单片机3.6 处理器模式 简介 ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式,如下表所示。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。周立功单片机3.6 处理器模式 处理

    15、器模式周立功单片机3.6 处理器模式 特权模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。未定义 (und)中止 (abt)管理 (svc)中断 (irq)快中断 (fiq)系统 (sys)周立功单片机3.6 处理器模式 异常模式 未定义 (und)中止 (abt)管理 (svc)中断 (irq)快中断 (fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模

    16、式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。周立功单片机3.6 处理器模式 用户和系统模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。系统 (sys)用户 (usr)周立功单片机3.7 内部寄存器 简介 在ARM7TDMI处理器内部有37个用户可见的寄存器。在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。周立功单片机ARM状态各模式下的寄存器周立功单片机ARM状态各模式下的寄存器SPSR_f

    17、iqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。周立功单片机无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无CPSRR15R14R13R12R11R10R9R8R7R6R

    18、5R4R3R2R1R0系统系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fi

    19、qR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARM状态各模式下可以访问的寄存器周立功单片机一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。周立功单片机一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13

    20、_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。周立功单片机一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取

    21、决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器周立功单片机一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。周立功单片机一般的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_und

    22、R13_abtR13_svcR13周立功单片机堆栈指针寄存器R13(SP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。周立功单片机链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。周立功单片机Lable程序A程序BR143.7 内部寄存器 R14寄存器与子程序调用BL Lable地址A?MOV PC,

    23、LRR14(地址A)Lable?1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14;3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;周立功单片机3.7 内部寄存器 R14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。周立功单片机3.7 内部寄存器 R14寄存器注意要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破

    24、坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。周立功单片机3.7 内部寄存器 R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏周立功单片机3.7 内部寄存器 R14寄存器

    25、注意要点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寄存器中,原来保存的返回地址将被覆盖,造成错误;被破坏6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序

    26、时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。周立功单片机程序计数器R15(PC)寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。周立功单片机3.7 内部寄存器 读R15的限制 正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R1

    27、5寄存器的最低两位总是为0。LDR R0,PC?PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码周立功单片机3.7 内部寄存器 读R15的限制 当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。周立功单片机3.7 内部寄存器 读R15的限制计算偏移量程序代码:SUBR1,PC,#4;R1=下面STR指令的地址STRPC

    28、,R0;保存STR指令地址+偏移量LDRR0,R0;然后重装SUBR0,R0,R1;计算偏移量周立功单片机3.7 内部寄存器 写R15的限制 正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。周立功单片机3.7 内部寄存器 写R15的限制 由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0 xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为

    29、0,如果不是,结果将不可预测。周立功单片机程序状态寄存器CPSR 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。详细描述参看3.8小节。周立功单片机3.7 内部寄存器 Thumb状态寄存器 Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。周立功单片机Thumb状态各模式下的寄存器CPSRCPSR状

    30、态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1a4,v1v4必须用小写。周立功单片机Th

    31、umb状态下的通用寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同

    32、的32为物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。周立功单片机Thumb状态下的堆栈指针寄存器(SP)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别

    33、 堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。R13_fiqR13_irqR13_undR13_abtR13_svcR13周立功单片机Thumb状态下的链接寄存器R14(LR)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1

    34、(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别 链接寄存器LR对应ARM状态寄存器R14,在结构上有两个特殊功能,详见“ARM状态下的链接寄存器LR”。注意:在发生异常时,处理器自动进入ARM状态。R14_fiqR14_irqR14_undR14_abtR14_svcR14周立功单片机3.7 内部寄存器 ARM状态和Thumb状态之间寄存器的关系 Thumb状态寄存器与ARM状态寄存器有如下的关系:Thumb状态R0R7与ARM状态R0R7相同;Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相

    35、同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)。周立功单片机 R1 R2 R3 R4 R5 T humb R6 R7(C PSR)(SPSR)R1 R2 R3 R4 R5 A R M R6 R7 R8(C PSR)(SPSR)R9 R10 R11 R12 R0 R0 状态 状态 堆栈指针(SP)连接寄存器(LR)程序计数器(PC)当前程序状态寄存器 被保存程序状态寄存器 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)当前程序状态寄存器 被保存程序状态寄存器 Thumb状态寄存器在Arm状态寄存

    36、器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)低寄存器高寄存器周立功单片机3.7 内部寄存器 在Thumb状态中访问高寄存器 在Thumb状态中,高寄存器(R8R15)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制,但可以将它们用于快速暂存。可以使用MOV、CMP和ADD指令对高寄存器操作,详见第4章。周立功单片机3.8 程序状态寄存器 简介 ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(

    37、N)、零(Z)、进位(C)和溢出(V));2个中断禁止位,分别控制一种类型的中断;5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。周立功单片机NZCV IM0M1M2M3M4TF.31 30 29 28 27 26 8 7 6 5 4 3 2 1 03.8 程序状态寄存器 简介条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TFCPSR寄存器的格式周立功单片机3.8 程序状态寄存器 简介 每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常发生之前的CPSR。CPSR和

    38、SPSR通过特殊指令进行访问。详细信息请参阅第4章。周立功单片机3.8 程序状态寄存器 条件代码标志 大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。N、Z、C和V位都是条件代码标志。通过算术操作、逻辑操作、MSR或者LDM指令可以对这些位进行设置。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。周立功单片机3.8 程序状态寄存器 条件代码标志各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;

    39、Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;周立功单片机3.8 程序状态寄存器 条件代码标志各标志位的含义如下:C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。周立功单片机3.8 程序状态寄存器 控制位 CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这

    40、些位。它们分别是:中断禁止位;T位;模式位。周立功单片机3.8 程序状态寄存器 控制位中断禁止位包括I和F位:当I位置位时,IRQ中断被禁止;当F位置位时,FIQ中断被禁止。T位反映了正在操作的状态:当T位置位时,处理器正在Thumb状态下运行;当T位清零时,处理器正在ARM状态下运行。周立功单片机3.8 程序状态寄存器 控制位模式位包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。周立功单片机CPSR模式位设置表周立功单片机3.8 程序状态寄存器 保留位 CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ARM嵌入式系统基础教程第二章(18)课件.ppt
    链接地址:https://www.163wenku.com/p-4372133.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库