- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-4 ARM体系结构的数据存储格式 注意:ARM体系结构较新的版本对这两种数据存储方式都支持。某些较老的版本只支持小字节序存储方式,编程的时候需要注意。 处理器用于存储数据的方式有两种,分别为大字节序格式和小字节序格式: 大字节序格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小字节序格式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。 存储器格式 存储器系统有两种映射机制: 小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。 大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。 …… …… A+3 A+2 A+1 A 存储器 小端存储模式下,0A地址开始的一个字空间的存储; 1 大端存储模式下,0A地址开始的一个字空间的存储; 2 0x12 0x34 0x56 0x78 …… …… A+3 A+2 A+1 A 存储器 0x78 0x56 0x34 0x12 2-4 ARM体系结构的数据存储格式 2-5 指令长度及数据类型 ARM9处理器指令长度: 在ARM状态下,ARM微处理器的指令长度是32位;在Thumb状态下,指令长度为16位。 ARM9处理器数据类型: ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。 如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐; 如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。 方式 半字对齐 字对齐 地址 …… 0x4002 0x4004 …… …… 0x4004 0x4008 …… 特征 Bit0=0 其他位为任意值 Bit1=0,Bit0=0 其他位为任意值 存储器的存储方式 2-5 指令长度及数据类型 2-6 异常 简介: 只要正常的程序流被暂时中止,处理器将进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM9内核保存当前的处理器状态(CPSR-SPSR),这样当处理程序结束时可以恢复执行原来的程序(SPSR-CPSR)。 2-6-1 ARM所支持的异常 异常类型 具体含义 复位 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。 未定义指令 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。 软件中断 该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。 指令预取中止 若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。 数据中止 若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。 IRQ(外部中断请求) 当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。 FIQ(快速中断请求) 当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。 2-6-1 ARM所支持的异常 IRQ(Interrupt Request): 中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态,IRQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_irq,#4 2-6-1 ARM所支持的异常 IRQ(Interrupt Request): FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset 0x1C 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 2-6-1 ARM所支持的异常 FIQ(Fast Interrupt Request): 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自ARM状态还是T
文档评论(0)