第六章-ARM处理器201604011_第1页
第六章-ARM处理器201604011_第2页
第六章-ARM处理器201604011_第3页
第六章-ARM处理器201604011_第4页
第六章-ARM处理器201604011_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux与嵌入式系统主讲张玺君/方君丽Email:393378116@TEL算机与通信学院物联网工程系嵌入式无处不在嵌入式系统(EmbeddedComputingSystem)1.嵌入式系统的定义专用性面向具体应用计算机硬件软件软硬件可以剪裁功能、成本、体积、功耗满足以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统2.嵌入式系统的组成典型的嵌入式系统组成示例硬件平台的多样性是嵌入式系统的主要特点之一3.程序移植移植的必要性基于嵌入式处理器的原因基于操作系统原因新旧的操作系统的更替应用软件不能操作系统平台要求操作系统和应用软件的整体移植把应用软件移植到新的操作系统上处理器淘汰硬件平台不同3.程序移植JavaC/C++汇编语言编译器目标文件编译器目标文件编译器目标文件链接器可重定位器程序定位器可执行文件汇编语言的移植非常困难,甚至等于重新开发C语言的可移植性比较好由于技术的快速发展,在设计嵌入式应用系统是,一种较好的设计思路和习惯是在设计的开始阶段就考虑到系统的一致性问题。设计易于移植的嵌入式应用软件需要遵循层次化和模块化的软件设计方法。3.程序移植应用软件输入输出模块(与硬件无关)uart_drv.c硬件抽象层(与硬件相关)uart_regrw.c嵌入式微控制器硬件基于模块化层次化的嵌入式系统应用软件结构示例intuart_init(……);

//初始化UARTintuart_putc(……);//通过UART发送一个字符intuart_puts(……);//通过UART发送一个字节流intuart_getc(……);//通过UART读取一个字符intuart_gets(……);//通过UAR收取字节流Register_UART_SendRegister_UART_ReceiveRegister_UART_ModeRegister_UART_Controlvoiduart_reg_write(…);//写寄存器voiduart_reg_read(…);//读寄存器定义虚拟UART端口寄存器和访问代码intuart_putc(……){//把待发送字符写到发送寄存器,调用voiduart_reg_write);//发送完成,函数返回}如果更换了微处理器,一直的时候只需要修改uart_regrw.c中的读写函数4.硬件抽象层(HAL)和板级支持包BSP应用程序嵌入式中间件嵌入式操作系统硬件抽象层(HAL)和板级支持包BSP嵌入式硬件板级初始化串口驱动LCD驱动键盘驱动Flash驱动以太网驱动其他驱动4.硬件抽象层(HAL)和板级支持包BSP嵌入式处理平台多样性解决硬件差异性增强可移植性硬件抽象层HAL/板级支持包BSP介于硬件和软件之间为软件提供硬件特性,为硬件进行驱动是嵌入式系统很重要的软件组成部分处理系统启动、硬件初始化以及中断与异常,完成进入嵌入式操作系统的运行。硬件相关性BSP作为软硬件间的接口,必须为操作系统提供操作和控制硬件的方法。而嵌入式系统的硬件环境具有应用相关性。操作系统相关性不同的操作系统具有各自的软件层次结构。因此,不同的操作系统具有特定的硬件接口形式。4.硬件抽象层(HAL)和板级支持包BSP硬件检测初始化系统设备装入操作系统调度操作系统向硬件发出的指令BIOS操作系统启动以前的硬件和软件初始化操作BSP/HAL

对于开发板提供商来说,BSP就是开发板的生产商提供的一个资料和资源包。通常包括:一硬件相关:

1开发板原理图

2开发板元件列表

3接口定义

4地址分布二软件相关:

1某些操作系统的bootloader及源代码

2某些操作系统裁剪好的映像文件(如linux系列可能有源码,如WinCE可能有CEC文件)三服务相关

1售后的技术支持(根据价格,差异很大)

4.硬件抽象层(HAL)和板级支持包BSP硬件抽象层的开发方法移植当前的硬件抽象层通常是根据硬件设备,寻找其驱动然后进行移植;开发如果没有可用的驱动,将被迫重新编写设备驱动,但不利于软件重用,会造成重复劳动4.硬件抽象层(HAL)和板级支持包BSP示例:TIZ-Stack协议栈Z‐Stack在项目中的目录结构hal_assert.c是断言文件,用于调试,hal_drivers.c是驱动文件,抽象出与硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,

Target目录下的文件是跟硬件平台相关的示例:TIZ-Stack协议栈Z-Stack的main函数在ZMain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即由启动代码来初始化硬件系统和软件构架需要的各个模块,另外一个就是开始执行操作系统实体系统初始化流程图扩展:Zigbee、蓝牙、Wifi、RFID、GIS、TCP/IP……扩展:Andriod开发、信息家电、消费电子、工业物联网、网络通信设备、航空航天设备、现代武器……5.嵌入式开发学习路线C语言Linux基础应用程序开发(系统编程、网络编程)系统移植驱动开发ARM编程模型指令系统存储结构I/O模块C++、Java…………第六章ARM处理器1.ARM微处理器概述2.基于ARM的嵌入式系统开发举例3.ARM微处理器编程模型4.ARM处理器的异常处理ARM的三个含义微处理器技术公司ARM-AdvancedRISCMachinesRISC

——ReducedInstructionSetComputer20%:常用80%:不常用CISC体系结构指令数量整个程序代码20%:不常用80%:常用指令构成RISC体系结构结构优化1979年,美国加州大学伯克利分校固定长度简单指令大量使用寄存器加载存储指令批量传输条件执行单周期指令中使用逻辑处理和移位处理RISC体系结构RISC结构非常适合于嵌入式处理器ARM公司是全球领先的16/32位嵌入式RISC(ReducedInstructionSetComputer)微处理器解决方案的供应商,向全球各大电子公司提供高性能、低功耗和低成本的RISC微处理器、外设和系统芯片技术授权。ARM还为开发完整系统提供综合技术支持。

ARM公司成功的原因归功于其三位一体的核心竞争力。首先是其领先业界的产品和技术;其次是其独辟蹊径、最先缔造的知识产权授权商业模式;最后是其庞大、稳固的产业联盟。ARM公司简介ARM处理器应用

到目前为止,ARM微处理器及其技术的应用已经深入到嵌入式的各个领域:

工业控制领域;(嵌入式控制、汽车控制等)成像和安全产品领域(数码相机、数码摄像机、打印机等、SIM卡、智能卡、金融设备、轨道交通等);

网络应用领域(WLAN、VoIP、xDSL等);

消费类电子产品领域(MP3、MP4、机顶盒、游戏控制器、DVD、导航器等);

ARM处理器应用无线通讯领域(85%的无线设备,智能手机、基站、PDA等);数字信号处理领域。ARM处理器的特点

ARM32位具体来讲,ARM处理器的特点主要包括以下几个方面:小体积、低功耗、低成本、高性能;精简指令系统结构RISC(大量通用寄存器、寻址方式灵活简单、简化指令译码、执行速度快效率高);支持Thumb(16位)/ARM32位双指令集,兼容性强

经过多年的发展,ARM处理器已经形成一个庞大的家族。ARM公司目前支持主要系列的处理器产品如下:

ARM7系列处理器;ARM11系列处理器;ARM9E系列处理器;

ARM10E系列处理器;ARM处理器系列概述ARM9系列处理器;Cortex系列处理器;SecurCore系列处理器;ARM7系列低功耗32位内核3级流水线、冯洛伊曼结构执行ARMv4指令集合适对成本和功耗要求高的消费类产品个人音频设备接入及无线设备喷墨打印机数码照相机PDAARM7TDMI应用最广泛ARM处理器系列概述ARM9系列如S3C2410,S3C24405级流水线,哈佛结构执行ARMv4T指令集合适对成本和功耗要求高的消费类产品手持设备(视频电话、PDA)数字消费产品(机顶盒、游戏控制器、视频播放器)成像设备(数码相机、数字摄像机)汽车(通信和信息系统)ARM处理器系列概述ARM11系列8级流水线,分离的Load-store和算数流水线高性能的存储系统设计、影像处理性能强大的ARMv6指令集结构,ARMJazelle技术提高嵌入式Java代码的执行效率,ARMDSP扩展,提供片上安全ARMTrustZone技术,ARMThumb-2技术适应更高的代码密度和指令及效率MPCore综合多处理器技术提高了处理器性能,大大节约了成本,与现有的EDA工具完全兼容例如:S3C6410X是基于ARM1176JZF-S核的用于手持、移动等终端设备的通用处理器。ARM处理器系列概述Cortex系列基于ARMv7架构优化(1)Cortex-A主要用于复杂的操作系统和大型应用场合,如高端手机、金融事务处理机等;(2)Cortex-R主要用于实时应用场合,如大型发电机控制器、机械手臂等;(3)Cortex-M主要用户传统的低成本、低功耗、极速中断反应及高处理效率的自动控制场合,如医用器械、电子玩具、无线网络等;ARM处理器系列概述SecurCore系列专为安全需要而设计,提供了完善的32位RISC的安全解决方案,除了具有ARM体系结构低成本、低功耗、高性能等的特点,在支持安全解决方案的优势,如防止外部扫描探测、抵御攻击等,适合场合(1)智能卡(2)SIM(3)金融业(4)付费电视(5)轨道交通ARM处理器系列概述内核功能处理速度存储器寻址能力片内外围电路如何选择嵌入式处理器需求示例处理器简单的处理工作或控制实时性等数码手表、空调、电冰箱等微控制器功能复杂,需要嵌入式操作系统电信交换机、路由器、网关、过程控制16或32位微处理器涉及信号处理和复杂数学计算音视频和图像信号处理、分析和编码设备DSP面向图形、响应速度快桌面计算机、工业计算机等64位处理器如何选择嵌入式处理器参数成本够用处理器速度MIPS/MHz寻址能力总线宽度片上存储器I/O接口功耗价格操作系统支持开发工具价格行业应用厂商等TexasInstrumentFreescaleAtmelAMDSamsung……ARM微处理器S3C2440手册&原理图Feature基本功能特点Overview内部功能基本模块PinDescription管脚功能Register寄存器设置ARM微处理器S3C2440手册&原理图第六章ARM处理器1.ARM微处理器概述2.基于ARM的嵌入式系统开发举例3.ARM微处理器编程模型4.ARM处理器的异常处理案例分析——PDA功能设计基本信息管理:

通讯录、记事本、日程表、便笺……特定行业应用软件股票分析、警用PDA系统、物流系统、工业组态手持终端……常用应用软件社交软件、游戏、输入设备……硬件设计

硬件配置原理方框图设计电路原理图设计PCB图与制版软件设计操作系统驱动程序网络部分应用软件案例分析——PDA硬件设计

硬件配置原理方框图设计电路原理图设计PCB图与制版S3C2410UART红外SD卡LCD接口触摸屏音频输入音频输出振荡器、复位、供电、调试、通信模块等NANDFLashSDRAM蓝牙案例分析——PDA软件设计操作系统驱动程序网络部分应用软件应用软件部分(基本管理、特定应用、社交娱乐等)应用编程接口API系统软件(OS、GUI、电源管理、文件系统)网络部分(TCP/IP协议栈、Telnet)等LCDUART音频其他驱动S3C2410嵌入式硬件处理平台案例分析——水表智能抄表系统设计目的传统机械式的自来水表需要人工操作、工作量大、易出错、便利性不强智能水表:水表中嵌入处理器,自动读取水表数据,传输至抄表手机,抄表手机进行数据处理、缴费单带你,并将数据传送到公司数据库中案例分析——水表智能抄表系统工作原理系统包含两部分:公司数据库部分和抄表员的抄表手机用户的机械水表改装成电子水表后,连接在楼宇汇集器中汇集器定时采集用户水表数据并存储在存储器中抄表员使用抄表手机与汇集器进行通信,一次读取多个用户的用水数据到达公司后,抄表手机与公司极端及进行连接,把抄表数据导入公司数据库案例分析——水表智能抄表系统第六章ARM处理器1.ARM微处理器概述2.基于ARM的嵌入式系统开发举例3.ARM处理器编程模型4.ARM处理器的异常处理3.ARM微处理器编程模型ARM处理器的工作状态ARM体系的存储格式ARM处理器模式ARM寄存器的组织程序状态寄存器CPSR第六章ARM处理器ARM采用的是32位架构(ARMv7)ARM处理器支持以下数据类型:字节Byte: 8bits半字Halfword:16bits(2byte)字Word: 32bits(4byte)双字Doubleword:64位(ARMv8架构中)注意:ARMv8寄存器或操作数是64位宽,但指令长度仍为32位。ARMcore提供:ARM指令集(32-bit)Thumb指令集(T变种)(16-bit)Thumb-2指令集(16位和32位兼容)注意:

ARM处理器复位后开始执行代码时,是处于ARM状态,ARM和Thumb状态通过BX指令切换数据和指令类型3.ARM微处理器编程模型ARM处理器的工作状态ARM体系体系的存储格式ARM处理器模式ARM寄存器的组织程序状态寄存器CPSR存储器存储格式A.小端存储法(0x01234567)地址0x80000x80010x80020x8003数据(16进制表示)0x670x450x230x01数据(二进制表示)01100111010001010010001100000001B.大端存储法地址0x80000x80010x80020x8003数据(16进制表示)0x010x230x450x67数据(二进制表示)00000001001000110100010101100111存储器存储格式大端模式(Big-endian)字数据的高字节存储在低地址中字数据的低字节则存放在高地址中小端模式(little-endian,缺省)低地址中存放字数据的低字节高地址中存放字数据的高字节3124

2316

158

70字地址11109887654432100低地址高地址3124

2316

158

70字地址89101184567401230低地址高地址3.ARM微处理器编程模型ARM处理器的工作状态ARM体系体系的存储格式ARM处理器模式ARM寄存器的组织程序状态寄存器CPSR处理器模式说明备注用户(usr)正常用户程序执行模式不能直接切换到其它模式系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在访问存储器失败时进入此模式未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式处理器工作模式(1)ARM处理器有7种工作模式(ARM11,ARM9)特权模式下程序可以访问所有系统资源,也可以进行处理器模式切换各模式之间的切换,可以通过软件控制来实现,也可以由外部中断或异常而引起特权模式异常模式异常发生时,程序就要跳转到响应地址执行,处理器也会处于相应模式CortexA有九种模式处理器工作模式(2)处理器的模式与CPSR313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0条件标识位中断禁止位控制位M4~M0处理器模式可访问的寄存器10000用户模式PC,R14~R0,CPSR(只读)10001快速中断PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq10010外部中断PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq10011特权模式PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc10111中止模式PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt11011未定义模式PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und11111系统模式PC,R14~R0,CPSR(读写)当异常发生时,在特权模式下,程序可以修改这些位(1)中断禁止位I、F,当I=1时禁止IRQ中断、当F=1时禁止FIQ中断(2)T控制位:用于控制指令执行的状态,T=0表示执行ARM指令,T=1时标识执行Thumb指令;(3)M控制位:控制处理器模式,具体含义如表所示MSRCPSR_c,#0xd3处理器模式与寄存器用户模式系统模式管理模式中止模式未定义模式外部中断模式快速中断模式R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13R13R13_svcR13_abtR13_undR13_irqR13_fiqR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq3.ARM微处理器编程模型ARM处理器的工作状态ARM体系体系的存储格式ARM处理器模式ARM寄存器的组织程序状态寄存器CPSR用户模式系统模式管理模式中止模式未定义模式外部中断模式快速中断模式R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR9R9R9R9R9R9R9_fiqR10R10R10R10R10R10R10_fiqR11R11R11R11R11R11R11_fiqR12R12R12R12R12R12R12_fiqR13R13R13_svcR13_abtR13_undR13_irqR13_fiqR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq各种处理器模式下的寄存器31个通用寄存器6个状态寄存器寄存器R0~R7

(各对应1个物理寄存器);寄存器CPSR(1个物理寄存器)和SPSR(5个寄存器);

寄存器R13(SP)~R14(LR)(各对应6个物理寄存器);

寄存器R15-程序计数器PC(1个物理寄存器);

ARM寄存器寄存器R8~R12(各对应2个物理寄存器);通用寄存器(31)状态寄存器(6)usrsyssvcabtundirqfiqmonhypR0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R0~R7R8R8R8R8R8R8R8_fiqR8R8R9R9R9R9R9R9R9_fiqR9R9R10R10R10R10R10R10R10_fiqR10R10R11R11R11R11R11R11R11_fiqR11R11R12R12R12R12R12R12R12_fiqR12R12R13R13R13_svcR13_abtR13_undR13_irqR13_fiqR13_monR13_hypR14R14R14_svcR14_abtR14_undR14_irqR14_fiqR14_monR14_hypR15R15R15R15R15R15R15R15R15CPSRCPSRCPSRCPSRCPSRCPSRCPSRCPSRCPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_monSPSR_hypContex-A个模式下的寄存器31+4个通用寄存器6+2个状态寄存器处理器的运行模式和寄存器的组织结构与处理器的类型相关。ARM状态下寄存器组织Thumb状态下寄存器组织ARM与Thumb状态下寄存器组织的对应关系寄存器的编程访问取决于处理器的工作状态和运行模式。应用程序在开始阶段初始化该R13,使其指向异常模式专用的堆栈地址。R13在ARM中常用作堆栈指针(习惯用法),指令中常用SP表示。每一种异常模式都拥有自己的物理R13。示例:系统初始化R13MSR CPSR_c,#0xd3;设置管理模式LDR SP,StackSvc;初始化管理模式堆栈……当进入异常处理程序时,可以将需要的寄存器的值保存在R13所指的堆栈中,当退出异常处理程序时,将保存在R13所指堆栈中的寄存器值弹出,这样保护了中断前的现场。ARM处理器内部寄存器-R13Lable程序A程序BR14ARM处理器内部寄存器-R14R14(LR)寄存器与子程序调用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;ARM处理器内部寄存器-R14R14寄存器与异常发生异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。R14在ARM被称为连接寄存器LR,主要如下两个作用(1)在每一种处理模式中,各模式对应的物理R14被设置BL指令或BLX指令调用子程序的返回地址(2)当异常发生时,该异常模式对应的R14被设置成异常模式将要返回的地址。ARM处理器内部寄存器-R14R14寄存器注意要点当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。ARM处理器内部寄存器-R14R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irqARM处理器内部寄存器-R14R14寄存器注意要点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入栈),或者切换到其它处理器模式下。R15在ARM被称为程序计数器PC,表示当前CPU执行的指令地址。向R15中写入一个地址值,可以实现程序的跳转。示例:用PC作为目标寄存器实现程序的无条件跳转MOV PC, address ;address为目标地址示例:用PC作为目标寄存器实现程序子程序的返回BL SubroutineMOV PC, LR ;从子程序返回示例:用PC实现程序异常中断的返回当PC寄存器作为目标寄存器且指令中S位被设置时,指令在执行跳转操作的同时,将当前处理器模式的SPSR内容复制到CPSR中,实现某些异常中断的返回MOVS PC, LR ;从子程序返回ARM处理器内部寄存器-R153.ARM微处理器编程模型ARM处理器的工作状态ARM体系体系的存储格式ARM处理器模式ARM寄存器的组织程序状态寄存器CPSR当前程序状态寄存器CPSR(1)313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0条件标识位中断禁止位控制位条件位:N=1-结果为负,0-结果为正或0Z=1-结果为0,0-结果不为0C=1-进位,0-借位V=1-结果溢出,0结果没溢出Q位:仅ARM5TE/J架构支持指示增强型DSP指令是否溢出J位仅ARM5TE/J架构支持J=1:处理器处于Jazelle状态中断禁止位:I=1:禁止IRQ.F=1:禁止FIQ.TBit仅ARMxT架构支持T=0:处理器处于ARM状态T=1:处理器处于Thumb状态Mode位(处理器模式位):0b10000 User0b10001 FIQ0b10010 IRQ0b10011 Supervisor0b10111 Abort0b11011 Undefined0b11111 System当前程序状态寄存器CPSR(4)以下指令会影响CPSR中的条件标志位(1)比较指令,如CMP(比较指令)、CMN(基于相反数的比较指令)、TEQ(相等测试指令)及TST(位测试指令)(2)目标寄存器不是R15(程序计数器PC)的算数运算指令和逻辑运算指令(3)MSR(通用寄存器到状态寄存器传送指令)(4)MRC(协处理器寄存器到ARM寄存器的数据传送指令)(5)一些LDM指令和位设置的变体指令可以将SPSR的值复制为CPSR,用于从异常中断程序中返回。313029282726876543210NZCVQDNM(RAZ)IFTM4M3M2M1M0条件标识位中断禁止位控制位设置处理器运行模式和工作状态控制允许或者禁止FIQ和IRQ保存ALU当前操作信息,设置条件标志位,控制条件执行当前程序状态寄存器CPSR功能备份状态寄存器,当异常发生时,用于保存CPSR的状态

。usr和sys模式下无SPSRSPSR备份程序状态寄存器SPSRARM9共5个寄存器,每个异常模式下都有一个,用于特定的异常中断发生时保存CPSR的内容。用户和系统模式下没有SPSR,在这两种模式下访问SPSR,会产生不可预知的结果。M4~M0处理器模式可访问的寄存器10000用户模式PC,R14~R0,CPSR(只读)10001快速中断PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq10010外部中断PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq10011特权模式PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc10111中止模式PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt11011未定义模式PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und11111系统模式PC,R14~R0,CPSR(读写)第六章ARM处理器1.ARM微处理器概述2.基于ARM的嵌入式系统开发举例3.ARM处理器编程模型4.ARM处理器的异常处理异常类型处理器模式异常向量复位(RESET)管理svc0X00000000未定义指令(UDEF)未定义und0X00000004软件中断(SWI)管理svc0X00000008指令预取中止(PABT)中止abt0X0000000C数据访问中止(DABT)中止abt0X00000010保留-0X00000014IRQ中断外部中断irq0X00000018FIQ中断快速中断fiq0X0000001CARM处理器异常类型异常优先级(从高到低):RESET、DABT、FIQ、IRQ、PABT、SWI、UDEFARM处理器异常处理异常向量:是异常程序的入口地址,指异常产生后,处理器PC值被强制赋予该异常所对应的存储器地址,处理器从该地址开始执行异常处理程序。在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复.异常发生拷贝CPSR到SPSR_<mode>保存返回地址到LR_<mode>设置CPSR[7:0]位(ARM态,处理器模式,设置中断)设置PC为相应的异常向量异常返回从SPSR_<mode>恢复CPSR从LR_<mode>恢复PC程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异常过程1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2.用户程序运行时发生IRQ中断,硬件完成以下动作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式将下一条指令的地址存入IRQ模式的LR寄存器将CPSR寄存器内容存入IRQ模式的SPSR寄存器将跳转地址存入PC,实现跳转IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示对该位不关心异常过程的伪代码示意SPSR_irq=CPSR ;拷贝CPSR到SPSRCPSR[4:0]=0b10010 ;设置处理器模式CPSR[5]=0 ;设置ARM工作状态CPSR[7]=1 ;禁止IRQ中断R14_irq=BackAdd ;设置返回地址PC=JumpAddr ;将跳转地址或异常向量给PC或(ifhighvertorsconfigredthen PC=0xFFFF0018elsePC=0x00000018)在异常处理结束后,异常处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV将SPSR寄存器的值复制回CPSR寄存器;将LR寄存的值减去一个常量后复制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论