嵌入式系统技术教程 教学课件 ppt 作者 张石 第二章ARM微处理器的编程模型

上传人:E**** 文档编号:89409451 上传时间:2019-05-24 格式:PPT 页数:86 大小:1.03MB
返回 下载 相关 举报
嵌入式系统技术教程 教学课件 ppt 作者  张石 第二章ARM微处理器的编程模型_第1页
第1页 / 共86页
嵌入式系统技术教程 教学课件 ppt 作者  张石 第二章ARM微处理器的编程模型_第2页
第2页 / 共86页
嵌入式系统技术教程 教学课件 ppt 作者  张石 第二章ARM微处理器的编程模型_第3页
第3页 / 共86页
嵌入式系统技术教程 教学课件 ppt 作者  张石 第二章ARM微处理器的编程模型_第4页
第4页 / 共86页
嵌入式系统技术教程 教学课件 ppt 作者  张石 第二章ARM微处理器的编程模型_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《嵌入式系统技术教程 教学课件 ppt 作者 张石 第二章ARM微处理器的编程模型》由会员分享,可在线阅读,更多相关《嵌入式系统技术教程 教学课件 ppt 作者 张石 第二章ARM微处理器的编程模型(86页珍藏版)》请在金锄头文库上搜索。

1、ARM 应用系统设计 第二章 ARM微处理器的编程模型 (体系结构),佘黎煌 东北大学信息科学与工程学院 电子信息工程研究所,ARM微处理器的编程模型,ARM微处理器的数据类型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态,2.1 数据类型,字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。 字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。 (注:字必须与4字节的边界对准。) 半字(Half-Word):在A

2、RM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致。(注:半字必须与2字节的边界对准。),ARM微处理器的编程模型,ARM微处理器的数据类型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态,ARM的体系结构,ARM的指令存储结构,THUMB的指令存储结构,32位 存储 结构,16位 存储 结构,ARM微处理器的工作状态,窄带系统 当系统具有32位的数据总线宽度时,ARM比THUMB有更好的性能表现 当系统的数据总线宽度小于32位时,THUMB比ARM性能更好(比如16的存储器,1

3、条ARM指令需要两个存储器访问周期) 代码尺寸 同样一段C代码,用THUMB指令编译的结果,其长度只占ARM编译结果的65%左右.,2.2 ARM微处理器的工作状态,ARM微处理器的工作状态一般有两种:,ARM状态处理器执行32位的字对齐的 ARM指令; Thumb状态处理器执行16位的、半字对齐的 Thumb指令。,ARM微处理器的工作状态,THUMB指令集在功能上只是ARM指令集的一个子集,某些功能只能在ARM状态下执行,如CPSR和协处理器的访问. 进行异常响应时,处理器会自动进入ARM状态. 即使是一个单纯的THUMB应用系统,必须加一个汇编的交互头程序,因为系统总是自动从ARM开始启

4、动.,处理器状态切换,进入Thumb状态: 当操作数寄存器的状态位(位0)为1时,执行 BX指令进入Thumb状态。 如果处理器在Thumb状态进入异常,则当异常 处理返回时,自动转换到Thumb状态。,进入ARM状态。 当操作数寄存器的状态位(位0)为0时执行BX指令进入ARM状态。 当处理器进行异常处理是时,进入ARM状态从异常向量地址处开始执行。,处理器状态切换,使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换,程序如下所示。,;从Arm状态切换到Thumb状态 LDR R0,=Lable+1 BX R0 ;从Thumb状态切换到ARM状态 LDR R

5、0,=Lable BX R0,地址最低位为1,表示切换到Thumb状态,地址最低位为0,表示切换到ARM状态,跳转地址标号,2.2 ARM微处理器的工作状态,处理器状态切换,CODE32 ;ARM状态下的代码 LDR R0, =Into_Thumb+1 ;产生跳转地址并且设置最低位 BX R0 ;Branch Exchange 进入Thumb状态 CODE16 ;Thumb状态下的子函数 Into_Thumb LDR R3, =Back_to_ARM ;产生字对齐的跳转地址,最低位被清除 BX R3 ;Branch Exchange 返回到ARM状态 CODE32 ;ARM状态下的子函数 Ba

6、ch_to_ARM,ARM微处理器的编程模型,ARM微处理器的数据类型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态,2.3 ARM体系结构的存储器格式,ARM体系结构所支持的最大寻址空间为4GB(232字节) 大端格式(Big Endian) 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式(Little Endian) 低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。,2.3 ARM体系结构的存储器格式,(0H)=0123H (4H)=4567H (8H)=89

7、ABH,Big Endian,(0H)=3210H (4H)=7654H (8H)=BA98H,Little Endian,2.3 ARM体系结构的存储器格式,r0 = 0x11223344,STR r0, r1,LDRB r2, r1,r1 = 0x100,Memory,3 2 1 0,0 1 2 3,Byte Lane,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,00,00,00,44,31,24

8、,23,16,15,8,7,0,00,00,00,11,Little endian,Big endian,R2 = 0x44,R2 = 0x11,ARM微处理器的编程模型,ARM微处理器的数据类型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态,简介,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。,2.4 处理器模式,处理器模式,2.4 处理器模式,特权模式,除用户模式外,其它模式均为特权

9、模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,2. 4 处理器模式,异常模式,这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。,2. 4 处理器模式,用户和系统模式,这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一

10、些特权任务可以使用这个模式访问一些受控的资源。,2.4 处理器模式,处理器启动时的模式转换图,管理模式SVC (Supervisor),多种特权模式变化,用户程序的运行模式,复位后 缺省模式,主要完成各模式的堆栈设置,注意不要进入用户模式,一般为用户模式User,ARM微处理器的处理器模式(2),ARM微处理器的运行模式可以通过软件改变(特权模式),也可以通过外部中断或异常处理改变。 大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。也不能改变模式。除非异常发生。 特权模式可以自由地访问系统资源和改变模式。,ARM微处理器的编程模型,ARM微处理

11、器的数据类型 ARM微处理器的工作状态 ARM体系结构的存储器格式 ARM微处理器的处理器模式 ARM体系结构的寄存器组织 ARM微处理器的异常状态,简介,2.5 寄存器组织,ARM处理器有37(31+6)个物理寄存器,有18个可编程访问的寄存器。 寄存器被安排成部分重叠的组。在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。 分组的寄存器在处理处理器异常和特权操作时可得到快速的上下文切换。,ARM状态各模式下的寄存器,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类: 31个通用32位寄存器; 6个状态寄存器。,ARM状态各模式下可以访问的寄存器,一般的通用寄存器,

12、在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。,一般的通用寄存器,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,一般的通用寄存器,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器,一般的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,一般的通

13、用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,堆栈指针寄存器R13(SP),寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,链接寄存器R14(LR),R14为链接寄存器(LR),在结构上有两个特殊功能: 在每种模式下,模式自身的R14版本用于保存子程序返回地址; 当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,R14寄存器与子程序调用,MOV PC,LR,R14(

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

15、断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。,2.5 寄存器组织,R14寄存器注意要点,a,return,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,R14寄存器注意要点,a,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户

16、模式下的R14没有被破坏;,3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,a,return,地址B,4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断,或者调用子程序;,5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;,被破坏,6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;,return,return,解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。,2.5 寄存器组织,程序计数器R15(PC),寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号