- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统基础第2章 ARM微处理器体系结构内容资料.ppt
USTS * * 大端格式(Big endian) USTS * * 小端格式(Little endian) USTS * * 举例1 程序 LDR R0, =0LDR R1, =0STR R0, [R1] LDRB R2, [R1] R2=? 答案 小端模式:R2 = 0x44 大端模式:R2 = 0x11 LDR 伪指令,使用以下项之一加载寄存器: 一个 32 位常数值 一个地址 LDR伪指令的形式: LDR?Rn, =expr ; =而非# USTS * * 举例2 struct x{ char a; int b; char c; short d;}; 问:在缺省(自然对界)情况下,上述结构需要多少存储空间(小端格式)? 强制对界 编译控制: 汇编align(1/2/4/8) unalign C语言#pragma pack(1/2/4/8) USTS * * 2.7.5 ARM微处理器的异常状态 当正常的程序执行流程发生暂时的停止时,称之为异常(Exception) 例如处理一个外部的中断请求 在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行 处理器允许多个异常同时发生,它们将会按固定的优先级进行处理 中断优先级 中断嵌套 USTS * * 异常类型 具体含义 复位 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行 未定义指令 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真 软件中断 该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用 指令预取中止 若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常 数据中止 若处理器数据访问的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常 IRQ(外部中断请求) 当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务 FIQ(快速中断请求) 当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常 USTS * * 2.7.5 ARM微处理器的异常状态(续) 1 对异常的响应 2 从异常返回 3 各类异常的具体描述 4 异常向量 5 异常优先级 6 应用程序中的异常处理 USTS * * 1 对异常的响应 当出现异常后,ARM处理器会执行以下操作 1 将CPSR复制到相应的SPSR中 2 对CPSR进行设置 根据异常类型,强制设置CPSR的工作模式位 设置中断禁止位,以禁止中断发生 如果处理器处于Thumb状态,则切换到ARM状态 3 将下一条指令的地址存入相应链接寄存器LR LR中保存的是下一条指令的地址(当前执行指令地址+4或+8,与异常类型有关) 4 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处 USTS * * 1 对异常的响应(续) ARM处理器对异常的响应过程用伪码描述为 SPSR_Exception_Mode = CPSR CPSR[4:0] = Exception Mode Number CPSR[5] = 0 ; 切换到ARM工作状态 If Exception_Mode == Reset or FIQ then CPSR[6] = 1 ; 禁止新的FIQ异常 CPSR[7] = 1 ; 禁止新的IRQ异常 R14_Exception_Mode = Return Link PC = Exception Vector Address CPU自动完成 USTS * * 程序A IRQ服务程序 系统模式 IRQ模式 程序 寄存器组 程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断 用户程序运行时发生IRQ中断,硬件完成以下动作: LR_sys SPSR_irq LR_irq LR PC CPSR SPSR SYS 1 ? 0 . . . ? ? ? ? MOD T F I . . . N Z C V 置位I位(禁止IRQ中断) 清零T位(进入ARM状态) 设置MOD位,切换处理器模式至IRQ模式 将下一条指令的地址存入IRQ模式的LR寄存器 将CPSR寄存器内容存入IRQ模式的SPSR寄存器 将跳转地址存入PC,实现跳转 IRQ 0 ? 1 . . . ? ? ? ? BackAddr JumpAddr Jump SYS 1 ? 0 . . . ? ? ? ? “?”表示对该
文档评论(0)