【文档说明】ARM处理器编程基础完整版课件.ppt,共(30)页,965.000 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92583.html
以下为本文档部分文字说明:
嵌入式微控制器编程EmbeddedMicrocontrollerProgramming艾云峰aiyunfeng@gmail.comCollegeofComputing&CommunicationEngineering精选精选内容大纲一、Arm处理器编程基础SOURCE:ARMArch
itectureReferenceManual,ChapterA3精选Arm处理器编程基础1.数据类型2.ARM微处理器的工作状态3.ARM处理器工作模式4.寄存器组织5.异常(Exceptions)6.ARM体系结构的存储器格式精选数据类型字(Word)在ARM体
系结构中,字的长度为32位,其它8位/16位处理器体系结构中,字的长度一般为16位半字(Half-Word)在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致字节(By
te)在ARM体系结构和8位精选ARM微处理器工作状态ARM微处理器的工作状态一般有两种,并可在两种状态之间切换第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令
精选ARM处理器工作模式(1)ARM有7个基本工作模式:User:非特权模式,大部分任务执行在这种模式正常程序执行的模式FIQ:当一个高优先级(fast)中断产生时将会进入这种模式高速数据传输和通道处理IRQ:当一个低优先级(normal)中断产生时将会进入这种模式通常的中断
处理Supervisor:当复位或软中断指令执行时将会进入这种模式供操作系统使用的一种保护模式Abort:当存取异常时将会进入这种模式虚拟存储及存储保护Undef:当执行未定义指令时会进入这种模式软件仿真硬件协处理器System
:使用和User模式相同寄存器集的特权模式特权级的操作系统任务异常模式(Exception)特权模式(Privilige)精选ARM处理器工作模式(2)处理器工作模式的切换方法通过软件控制进行切换通过外部中断进
行切换通过异常处理进行切换用户模式的特点大多数应用程序运行在用户模式下应用程序不能访问受操作系统保护的系统资源不能通过软件控制的方式进行模式切换可通过产生异常处理来切换处理器工作模式精选ARM处理器工作模式(3)异常模式的作用特点当应用程序发生
异常中断时,处理器进入相应的异常模式在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用。这样可以保证进入异常模式时,用户模式下的寄存器(保存了程序运行状态)不被破坏系统模式的特点属于特权模式,主要供操作系统的任务使用,可以直接进行处理器切换操
作系统任务需要访问所有系统资源,使用用户模式下的寄存器而不是异常模式下的寄存器,可保证异常中断发生时任务状态不被破坏精选ARM寄存器组织(1)精选ARM寄存器组织(2)ARM有37个32-Bits长的寄存器,其中包括:31个通用寄存器,包括1个程序计数器PC(programcount
er)6个状态寄存器,包括1个用作CPSR(currentprogramstatusregister)5个用作SPSR(savedprogramstatusregisters)在每一种处理器模式下,有一组相应的寄
存器组。任意时刻,可见的寄存器包括:相应的r0-r12子集相应的r13(thestackpointer,sp)andr14(thelinkregister,lr)相应的r15(theprogramcounter,pc)相应的CPS
R(currentprogramstatusregister,cpsr)特权模式下(除system模式)还可以存取;相应的spsr(savedprogramstatusregister)精选通用寄存器通用寄存器包括R0~R15,可以分为三类:未备份寄存器R0~R7;备份寄存器R
8~R14程序计数器PC(R15)精选通用寄存器-未备份寄存器对于每一个未备份寄存器来说,在所有处理器模式下指的都是同一个物理寄存器,未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器精选通用寄存器–备份寄存器对于备份寄存器R8~R12而言,每个寄存器
对应两个不同的物理寄存器。在快速中断模式下使用寄存器R8~R12,和在其它模式下使用这些寄存器时,使用的是不同的物理寄存器。对于备份寄存器R13和R14而言,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式和系统模式公用的;另
外5个对应于其它5种处理器模式。精选通用寄存器–备份寄存器寄存器R13在ARM指令中常用作堆栈指针。每一种异常模式拥有自己的物理R13,当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常模
式时,将保存在R13所指的栈中的寄存器弹出,从而使异常处理器程序不会破坏其中断程序的运行现场。精选通用寄存器–备份寄存器R14也称作子程序连接寄存器(SubroutineLinkRegister)或连接寄存器LR,在ARM体系中具有下面
两种特殊的作用:每一种处理器模式自己的物理R14存放当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。在子程序中,当把R14的值复制到PC时,子程序返回。实现子程序返回的两种操作:执行下面任何一条指令:MOVPC,LRBXLR
当异常发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址。精选通用寄存器–程序计数器寄存器R15用作程序计数器(PC)由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,当正确读取了PC的值时,该值为当前指令地址值加8,也即是说
,PC指向当前指令的下两条指令的地址。精选程序状态寄存器(1)寄存器R16寄存器R16用作CPSR(CurrentProgramStatusRegister,当前程序状态寄存器),CPSR可在任何运行模式下
被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(SavedProgramStatusRegist
er,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR精选程序状态寄存器(2)精选程序状态寄存器(3)精选程序状态寄存器(4)-运行模式位M[4:0]精选异常(Exceptions)Exceptionsaregeneratedbyin
ternalandexternalsourcestocasusetheprocessortohandleanevent,suchasanexternallygeneratedinterruptorattempttoexecuteanundefinedinstruction.Theproce
ssorstatejustbeforehandlingtheexceptionmustbepreservedsothattheoriginalprogramcanberesumedwhentheexceptionroutinehascompleted.M
orethanoneexceptioncanariseatthesametime.精选Arm体系结构的异常种类精选异常处理模式及异常向量地址精选微处理器对异常的响应ARM微处理器对异常的响应过程用伪码可以描述为:R14_<Ex
ception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0;当运行于ARM工作状态时If
<Exception_Mode>==ResetorFIQthen;当响应FIQ异常时,禁止新的FIQ异常CPSR[6]=1/*否则,禁止IRQ中断*/CPSR[7]=1PC=ExceptionVectorAddress精选从异常处理程序中返回异常处理完毕之后,应编
写程序执行以下几步操作从异常处理程序中返回:1.将SPSR复制回CPSR中。2.将连接寄存器LR的值减去相应的偏移量后送到PC中。可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回精选异常的优先级优先级异常1(最高)复位2数据中止3FIQ4IRQ5预取中止6未定义指
令,SWI精选中断总结Arm的异常中断、中断向量表、中断处理、中断引起的工作模式的改变、中断的作用。IRQ引脚FIQ引脚Reset引脚devicesdevicesReset按键内部指令执行中断模块未定义指令SWI指令指令预取中止数据预取中止复位中断(1)未定义指令
(6)软件中断(6)指令预取中止(5)数据访问中止(2)IRQ(4)FIQ(3)PCCPU0x00x40x80xc0x100x140x180x1c中断向量地址LdrPC,=ResetHandlerLdrPC,=UndeftHandlerLdrPC
,=SWIHandlerLdrPC,=InstrHandlerLdrPC,=DataHandler保留LdrPC,=IRQHandlerLdrPC,=FIQHandler中断处理设置异常模式Flash精选ARM体系中的存储空间ARM体系使用单一的平板地址空间。该地址
空间的大小为2^32个8位字节。这些字节单元的地址是一个无符号的32位数值,其取值范围是0~2^32-1。ARM地址空间也可以看作是2^30个32位的字单元。这些字单元的地址可以被4整除。地址为A的字数据包括地址为A、A+1、A+2、A+3等4个字节单元的内容。在ARM版本4及以上的版
本中,ARM的地址空间也可以看作是2^31个16位的半字单元。这些半字单元的地址可以被2整除。地址为A的半字数据包括地址为A、A+1等2个字节单元的内容。精选Arm存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合ARM体系结构可以用两种方法存储字
数据,称之为大端格式和小端格式精选AnyQuestions?