




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 嵌入式系统体系结构 本章学习目标与要求 1 本章介绍ARM体系结构 ARM9处理器及其存储组织结构 ARM9的异常方式等 通过本章的学习 能够了解ARM处理器内部的主要工作单元 基本工作原理 掌握基本指令 并为以后的程序设计打下基础 2 掌握ARM9微处理器的结构特点及SC2410的结构 掌握ARM9指令集特点和工作模式 重点 3 掌握ARM9下的存储组织结构 大端存储模式 I O端口访问方式 内部寄存器 该内容是全书的核心 分别在系统设计 应用接口设计中用到 4 掌握ARM9的异常工作模式 5 ARM9的寻址模式 该章是嵌入式系统原理的核心点 难点 为嵌入式系统的硬件设计 嵌入式操作系统的移植 内核和驱动模块的开发 应用程序的设计奠定基础 ARM AdvancedRISCMachines 有3种含义 它是一个公司的名称 是一类微处理器的通称 还是一种技术的名称 ARM公司是微处理器行业的一家知名企业 其设计了大量高性能 廉价 低耗能的RISC芯片 并开发了相关技术和软件 ARM处理器具有高性能 低成本和低功耗的特点 适用于嵌入式控制 消费 教育类多媒体 DSP和移动式应用等领域 ARM公司本身不生产芯片 靠转让设计许可 由合作伙伴公司来生产各具特色的芯片 ARM这种商业模式的强大之处在于其价格合理 它在全世界范围的合作伙伴超过100个 其中包括许多著名的半导体公司 ARM公司专注于设计 设计的芯片内核耗电少 成本低 功能强 特有16 32位双指令集 ARM已成为移动通信 手持计算和多媒体数字消费等嵌入式解决方案的RISC实际标准 2 1ARM处理器系列 ARM处理器的产品系列非常广 包括ARM7 ARM9 ARM9E ARM10E ARM11和SecurCore Cortex等 每个系列提供一套特定的性能来满足设计者对功耗 性能 体积的需求 SecurCore是单独一个产品系列 是专门为安全设备而设计的 几个系列的优缺点对比表 几个系列的优缺点对比表 2 2 ARM9微处理器 ARM9系列微处理器是低功耗的32位RISC结构 最适合要求低成本 低功耗的消费类应用产品 是目前应用最广泛 高性价比的嵌入式处理器 国际许多著名的IT芯片制造公司 基于ARM9处理器核生产了多种微控制器芯片 如三星公司的S3C2410 Atmel公司的AT91RM9200 Intel公司的PXA255 Motorola公司的MC9328 CirrusLogic公司的EP93XX系列 等等 ARM920T微处理器的指令流水采用了典型的RISC五级流水线结构 将指令执行过程分为取指 译码 执行 访存和写回5个步骤 五级流水线结构采用分离指令cache和数据cache 将每一个指令处理分配到5个时钟周期内 在每一个时钟周期内同时可能有5个指令在执行 消除了指令执行的性能瓶颈 加快了指令执行速度 续 ARM920T核内部具有指令缓存和数据缓存 允许处理器同时进行取指和读写数据操作 数据可以是 8位 字节 16位 半字 32位 字 字必须是4字节边界对准 半字必须是2字节边界对准 ARM9结构特点 ARM920T微处理器的指令流水采用了典型的RISC五级流水线结构 将指令执行过程分为取指 译码 执行 访存和写回5个步骤 五级流水线结构采用分离指令cache和数据cache 将每一个指令处理分配到5个时钟周期内 在每一个时钟周期内同时可能有5个指令在执行 消除了指令执行的性能瓶颈 加快了指令执行速度 ARM920T微处理器一般使用的是32位的ARM指令集 Thumb指令集是其子集 每条Thumb指令集中的指令代码宽度是16位 其功能与32位的ARM指令一样 处理相同32位的数据时 指令代码占用的程序存储空间分别是2字节和4字节 完成一条指令的时间差一倍 2 2 2ARM9指令集的特点 Thumb指令的操作是在标准的ARM寄存器下进行 在ARM指令和Thumb指令间可以进行切换 具有很好的操作性 执行时16位Thumb指令透明地实时解压缩成32位的Thumb指令 没有明显的性能损失 结论 Thumb指令集的16位指令代码长度 大约是标准ARM指令代码密度的两倍 指令 代码长度 32位体系结构的微处理器 对比16位微处理器 能用单一指令操作32位整形数据 32位寻址空间 16位体系结构的微处理器 对比32位微处理器 需要2个指令完成32位整形数据处理 寻址空间16位 实际编程中程序中并不是所有的指令代码都要处理32位数据 但是采用32位指令浪费程序空间 Thumb指令集在32位体系结构上实现16位指令代码长度 用压缩的指令编码处理32位数据 提高了系统处理性能 Thumb指令优点 Thumb代码与ARM代切换后快速运行 1 4个指令 通过适当的在Thumb指令和ARM之间切换 设计者可以有效地对系统的速度和代码密度进行折中和优化 Thumb指令集的优点 以16位代码密度实现32位ARM微处理资源 32位寻址空间 32位的内部寄存器 32位移为寄存器 32位算术逻辑单元ALU 32位的存储器加载和存储 2 2 3ARM9微处理器工作模式软件根据何种规则让硬件工作 ARM9微处理器核共支持7种工作模式 来实现ARM9的功能 或7种工作状态 因为在不同的工作模式下使用的32位资源如算术运算 逻辑运算使用的寄存器组不一样 同一个程序符号 但实际应用的物理寄存器不一样 名称及意义如表2 1所示 异常模式 特权模式 ARM9微处理器核的工作模式改变方式 软件控制 SWI指令外部中断信号 IRQ FIQ异常处理 通常情况下 系统工作在用户模式下执行应用程序 应用程序 不能访问那些被保护的系统资源 也不能改变处理器核的工作模式 但是 当系统发生异常时 ARM9处理器核的工作模式会改变 当某种异常发生时 ARM9处理器核进入响应的异常工作模式 每种异常工作模式有附加的寄存器 R13堆栈寄存器 R14子程序连接寄存器 SPSR存储程序状态 即CPSR寄存器 的内容 保护用户模式下 或低级异常模式 的状态及参数 5 ARM9的存储组织结构 ARM920T核允许32位长的地址 它把存储器看成是0地址开始的字节的线性组合 即一个地址对应于一个存储字节 其范围是232个字节 8位二进制数 4GB 从小到大PC 00000000FFFFFFFF每个基本地址存放一个字节ARM9可以访问字节 也可以访问字 则访问存储字时 抵制应该是字对准 即字的存储地址可以被4整除 程序分支执行 大多数把指令中的偏移量加到PC寄存器的值上来计算目的地址 然后结果再写回PC寄存器中 实现了分支 因此目的地址 当前执行的指令地址 8 偏移量 PC值 偏移量程序顺序执行 下一条需顺序执行的指令地址 当前执行指令地址 4 PC值 4ARM9存储系统 用来存储程序代码 大端存储系统 字的地址 字中最高有效字节地址 32位数据的最高字节存储在低地址中 最低字节存放在高地之中 小端存储系统 略 模式是ARM9处理器默认模式 通过硬件输入引脚BIGEND 低电平 支持小端模式 高电平 支持大端模式 ARM9体系结构对于存储器单元的访问需要适当的对准 即访问存储单元时字地址应该字对准 地址能被4整除 访问半字时半字节地址对准 被整除 ARM9体系结构采用存储器映射法访问I O端口 为每一个I O端口分配特定的存储地址 向存储地址的写入和读取等同于I O端口的写与读 但是存储器映射的I O端口表识为非高速缓存 非缓存 大端存储和小端存储 ARM9存储器系统的存储单元与地址的对应方式有两种 一种是大端存储系统 如图2 2所示 另一种是小端存储系统 如图2 3所示 大端存储系统中 字的地址对应的是该字中最高有效字节所对应的地址 半字的地址对应的是该半字中最高有效字节所对应的地址 也就是说 32位数据的最高字节存储在低地址中 而其最低字节则存放在高地址中 续 续 小端存储系统中 字的地址对应的是该字中最低有效字节所对应的地址 半字的地址对应的是该半字中最低有效字节所对应的地址 也就是说 32位数据的最高字节存储在高地址中 而其最低字节则存放在低地址中 小端存储模式是ARM9处理器的默认模式 ARM9汇编指令集中 没有相应的指令来选择是采用大端存储系统还是小端存储系统 但可以通过硬件输入引脚来配置它 续 ARM9的每个地址是对应于一个存储字节而不是一个存储字 但ARM9可以访问存储字 访问存储字时 其地址应该是字对准的 既字地址可以被4整除 也就是说 若第1个字在存储空间中是在第0个地址对应的单元 32位 那么 第2个字则应在第4个地址对应的单元 第3个字在第8个地址对应的单元 以此类推 一个字 32位二进制数 是由4个字节组成 假如某个字其地址是X X能被4整除 那么 该字的4个字节对应的地址是X X 1 X 2 X 3 续 程序中若遇到分支指令 大多数是通过把指令中的偏移量加到PC寄存器的值上来计算目的地址 然后把计算结果写回到PC寄存器 此时PC寄存器中的值就不再是顺序的 从而实现了程序分支 目的地址的计算公式如下 目的地址 当前执行的指令地址 8 偏移量 3 内部寄存器软硬件结合的关键 ARM9处理器的内部总共有37个32位的寄存器 其中31个用作通用寄存器 6个用作状态寄存器 每个状态寄存器只使用了其中的12位 这37个寄存器根据处理器的状态及其工作模式的不同而被安排成不同的组 程序代码运行时涉及的工作寄存器组是由RAM9微处理器的工作模式确定的 必须与ARM9微处理器核的工作模式结合理解记忆 注意 R0 R15称为通用寄存器R0 R7是不分组的寄存器 在所有的工作模式下 它们物理上是同一个寄存器 R15是程序计数器 也是不分组的 R16 CPSR 寄存器称为当前程序状态寄存器 在所有处理器模式下 CPSR都是同一个物理寄存器 它保存了序运行的当前状态R8 R14是根据工作模式进行分组的寄存器 它们中的每一个寄存器根据当前工作模式的不同 所访问的寄存器实际可能不是同一个物理寄存器 在各种异常模式下 均有一个称为SPSR的寄存器用于保存进入异常模式前的程序状态 即当异常出现时 SPSR中保留CPSR的值 R13寄存器的作用通常是堆栈指针 又称为SP 每种异常模式都有对应于该模式下的R13物理寄存器 R14寄存器可用作子程序链接寄存器LR LinkRegister 当ARM9处理器执行带链接的分枝指令 如 BL指令 时 R14保存R15 pc 的值 当异常发生时 相应的寄存器分组R14 svc R14 abt R14 und R14 irq和R14 fiq用来保存R15的返回值 R15寄存器的功能是程序计数器 又称为PC 在ARM状态下 R15寄存器的 1 0 位为0b00 31 2 位是PC的值 CPSR寄存器称为当前程序状态寄存器 又称为R16 在所有处理器模式下 CPSR都是同一个物理寄存器 它保存了程序运行的当前状态 在各种异常模式下 均有一个称为SPSR的寄存器用于保存进入异常模式前的程序状态 即当异常出现时 SPSR中保留CPSR的值 CPSR和SPSR均为32位的寄存器 其格式如下 各的符号含义 1 条件码标志N negative Z zero C carry 和V overflow 位称为条件码标志 简称为标志 CPSR中的标志可用于检测以决定指令是否执行 2 控制位程序状态寄存器的最低8位I F T和M 4 0 用做控制位 当异常出现时改变控制位 处理器在特权模式下也可用软件改变 I和F是中断禁止位 I置1时禁止IRQ中断 F置1时禁止FIQ中断 T位T 0时指示ARM执行 T 1时指示Thumb执行 表2 4模式与寄存器 模式位M0 M1 M2 M3和M4是模式位 这些位决定处理器的工作模式 如表2 4所示 表中未列出的模式位的组合是不可用的 Thumb状台的寄存器组是ARM状态下的寄存器子集 有8个通用寄存器 r0 r7 PCSPLR和CPSR 每一种特权模式下均有一组SPLRSPSR的物理寄存器 R15在THUMB状态下其位 0 是0B0 31 1 位是PC值 读R15的结果是读到的值 该指令地址 8写R15的结果是将写入R15中的值 位 1 0 0b00 因为ARM状态要求字对准 作为地址 并转移到此地址继续执行指令 Arm9存储地址 系统模式转换与指令 系统模式 寄存器组与用户模式寄存器组相同 但属于特权模式 共需要访问系统资源的操作系统任务使用 不能由任何异常进入 在系统模式下因该避免使用与异常模式有关的通用寄存器 防止系统模式的状态和数据遭到破坏 ARM9核在32ARM状态下执行32位arm指令 在16thumb态下执行16位thumb指令 在上电或复位而开始执行代码时 ARM9核执行32位arm指令 微处理器内核ARM9在程序的执行过车过程中通过arm指令集和thumb指令集中各自的指令在ARM状态和thumb状态中切换 微处理器内核执行32位或16位指令 不影响处理器的工作模式和响应的寄存器内容 微处理器核执行arm指令 当操作数据寄存器的状态位 寄存器的位 0 1时 指令BX使微处理器核开始执行16位thumb指令 微处理器核执行thumb指令 发生异常 IRQ FRQ UNDEF未定义 ABORT终止 SWI软中断 异常处理执行完成后 自动恢复到thumb指令 微处理器核执行thumb指令 当操作数据寄存器的状态位 寄存器的位 0 0时 指令BX使微处理器核开始执行32位ARM指令注意 微处理器核执行异常处理时 PC指针放入异常模式链接寄存器中LR 并从异常向量地址开始执行程序 使微处理器核开始执行32位ARM指令 2 4ARM9的异常 编写程序的基础 只要正常的程序流程被暂时停止 则异常发生 或者说 异常是由内部或外部产生一个引起处理器处理的事件 例如 外部中断或处理器执行一个未定义的指令都会引起异常 在处理异常之前 处理器状态必须保留 以便在异常处理程序完成后 原来的程序能够重新执行 同一时刻可能会出现多个异常 ARM支持7种类型的异常处理 如下表 异常出现后处理器强制从异常类型所对应的固定存储器地址开始执行程序 这些存储器地址称为异常向量 exceptionvectors 异常类型表 预取中止 取指令存储器中止 异常说明 1 复位异常 处理器上一旦有复位信号输入 ARM处理器立刻停止执行当前指令 复位后 ARM处理器在禁止中断的管理模式下 从地址0 x00000000或0 xFFFF0000开始执行程序 2 未定义指令异常und 当ARM处理器执行 未定义的设备 协处理器指令时 它必须等待任一外部协处理器应答后 才能真正执行这条指令 若协处理器没有响应 就会出现未定义指令异常 另外 试图执行未定义的指令 也会出现未定义指令异常 3 软件中断异常swi 软件中断异常指令SWI进入管理模式 以请求特定的管理函数 4 预取中止abort 存储器系统发出存储器中止 abort 信号 响应取指激活的中止标记所取的指令无效 若处理器试图执行无效指令 则产生预取中止异常 若指令未执行 则不发生预取中止 5 数据中止 存储器系统发出存储器中止信号 响应数据访问激活中止标记的数据无效 6 IRQ 中断请求 通过处理器上的IRQ输入引脚 由外部产生IRQ异常 IRQ异常的优先级比FIQ异常的低 当进入FIQ处理时 会屏蔽掉IRQ异常 7 FIQ 快速中断请求 通过处理器上的FIQ输入引脚 由外部产生FIQ异常 异常的优先级如表所示 从表中可知 复位异常的优先级最高 未定义异常和软件中断异常的优先级最低 异常的优先级 在某时刻可能会同时出现多个异常 ARM处理器则按优先级的高低顺序处理 异常的优先级如表所示 从表中可知 复位异常的优先级最高 未定义异常和软件中断异常的优先级最低 异常向量 异常向量是异常服务程序的入口 在某些ARM的应用中 允许异常向量的位置由32位地址空间低端的正常位置 既0 x00000000 0 x0000001C 移到地址空间高端的另一地址范围0 xFFFF0000 0 xFFFF001C 这些改变后的地址位置称为高端向量 由ImplementationDefined决定是否支持高端向量 如果支持 则在输入硬件配置时 选择是使用正常向量还是高端向量 异常的进入 当处理一个异常时 ARM9完成以下动作 1 将下一条指令的地址保存在相应的LR R14 寄存器中 如果异常是从ARM状态进入 则保存在LR中的是下一条指令的地址 如果异常是从Thumb状态进入 则保存在LR中的是当前PC的偏移量 2 将CPSR复制到相应的SPSR中 3 迫使CPSR模式位M 4 0 的值设置成对应的异常模式值 4 迫使PC从相关的异常向量取下一条指令 5 也可以设置中断禁止位来阻止其他无法处理的异常嵌套 如果在异常发生时处理器是在Thumb状态下 那么当用中断向量地址加载PC时 自动切换进入RAM状态 异常的退出 在完成异常处理后 ARM9完成以下动作 1 将LR寄存器的值减去相应的偏移量 偏移量根据异常的不同而不同 送到PC中 2 将SPSR复制回CPSR中 3 清除中断禁止位标志 续 下表总结了进入异常处理时保存在相应的R14寄存器中的PC值 以及在退出异常处理时推荐使用的指令 ARM9内核 系统架构 应用程序 2 5ARM9的寻址方式 硬件到软件的转换 寻址方式是根据指令中给出的地址码字段来寻找真实操作数地址的方式 ARM处理器支持的基本寻址方式 1 寄存器寻址所需要的值在寄存器中 指令中地址码给出的是寄存器编号 既寄存器的内容为操作数 例如指令 ADDR0 R1 R2 R0 R1 R2 2 立即寻址立即寻址是一种特殊的寻址方式 指令中在操作码字段后面的地址码部分不是操作数地址 而是操作数本身 例如指令 ADDR3 R3 1 R3 R3 1 3 寄存器移位寻址寄存器移位寻址方式是ARM指令集中所特有的 第二个寄存器操作数在与第一个操作数结合之前 选择进行移位操作 例如指令 ADDR3 R2 R1 LSL 3 R3 R2 8 R1 4 寄存器间接寻址指令中的地址码给出某一通用寄存器的编号 在被指定的寄存器中存放操作数的有效地址 而操作数则存放在该地址对应的存储单元中 即寄存器为地址指针 例如指令 LDRR0 R1 R0 R1 5 变址寻址变址寻址就是将基址寄存器的内容与指令中给出的偏移量相加 形成操作数有效地址 变址寻址用于访问基址附近的单元 包括基址加偏移和基址加索引寻址 寄存器间接寻址是偏移量为0的基址加偏移寻址 基址加偏移寻址中的基址寄存器包含的不是确切的地址 基址需加 或减 最大4KB的偏移来计算访问的地址 例如指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 森林水文学课件
- 电力系统职业技能鉴定考试试题及答案
- 2025年市场营销经理职位招聘笔试题及解题策略
- 2025年篮球裁判规则题库及答案
- 2025年轻微型无人机考试题库含完整答案详解【易错题】
- 2025年电力行业信息技术部招聘面试全攻略及模拟题答案
- 2025年初级无损检测员磁粉-MT-模拟面试题及答案详解
- 2025年市场营销经理专业技能考核预测题
- 洪水公务员面试题目及答案
- 2025注册验船师考试(C级船舶检验专业综合能力)自测试题及答案一
- 2025年幼儿园教师大班数学工作总结样本(3篇)
- 2025年毕节市农业发展集团有限公司招聘考试笔试试题(含答案)
- 供应链安全管理知识培训课件
- 牛鼻子引流技术
- (2025年标准)班组承包协议书
- 2025年匹克球裁判试题及答案
- 2025秋苏教版科学三年级上册教学设计(附目录)
- 2025国家能源投资集团有限责任公司审计中心社会招聘12人笔试参考题库附带答案详解(10套)
- 2025年全国I卷高考地理试题和答案
- 《初中必读名著导读:《水浒传》核心知识点与深度解读》
- 深圳微利房管理办法
评论
0/150
提交评论