




已阅读5页,还剩112页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统应用 ARM与 C OS 第三讲ARM嵌入式微处理器体系结构安徽工业大学计算机学院 本节提要 1 3 2 5 4 ARM简介 ARM体系结构概览 ARMJTAG调试接口 ARM编程模型 ARM指令集 ARM简介 ARM AdvancedRISCMachinesARM 32位RISC结构IP核提供商 主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP IntelligenceProperty 另外也提供基于ARM架构的开发设计技术软件工具 评估板 调试工具 应用软件 总线架构 外围设备单元 等等 ARM微处理器的应用领域 工业控制领域无线通讯领域网络应用消费电子产品成像和安全产品 ARM微处理器系列 ARM7 10为4个通用处理器系列 分别提供相对独特的性能来满足不同的应用要求 SecurCore系列专为安全要求高的应用而设计 ARM7系列 要求价位和功耗低的应用 如工业控制 Internet设备 移动电话等 ARM9系列 高性能低功耗应用 如无线设备 仪器仪表 安全系统 数码照相机 数码摄相机等 ARM9E系列 使用单一处理器内核提供了微控制器 DSP JAVA应用系统的解决方案 极大的减小了芯片面积和系统的复杂程度 适合需要同时使用DSP和微控制器的应用 如成像设备 工业控制 存储设备 网络设备等 含ARM926EJ S ARM96E S和ARM966E S三种类型 ARM10E系列 高性能 采用2种先进的节能方式使功耗极低 采用新的体系结构 与同等的ARM9相比 在同样的始终频率下性能提高近50 含ARM1020E ARM1022E和ARM1026EJ S三种类型 ARM11系列 采用ARMv6架构 8级流水线 该系列主要有ARM1136J ARM1156T2和ARM1176JZ三个内核型号针对不同应用领域 350M 500MHz时钟频率的内核在0 13um工艺 1 2v条件下 ARM11处理器的功耗可以低至0 4mW MHz ARM微处理器系列 续 SecurCore系列 低功耗 高性能及对安全解决方案的支持 适用于电子商务 电子政务 电子银行业务 网络和认证系统等 含SecurCoreSC100 SecurCoreSC110 SecurCoreSC200 SecurCoreSC210四种类型 SecurCore系列在安全方面的特点 1 灵活的保护单元 以确保OS和应用数据的安全 2 采用软内核技术 防止外部对其进行扫描探测 3 可集成用户自己的安全特性和其它协处理器 ARM11系列 ARMv6结构体系 功耗低 350M 500MHz时钟频率 多媒体处理扩展 增强的Cache结构 适用于消费类电子 无线设备 网络应用和汽车电子产品等需求 Cortex系列 A 系列面向尖端的基于虚拟内存的操作系统和用户应用 R 系列针对实时系统 M 系列对微控制器和低成本应用提供优化 Cortex A8 第一款基于ARMv7构架的应用处理器 第一款超级标量处理器 主频为600MHz到1GHzCortex M3 采用ARMv7 M架构 20或25MHz下工作 它包括所有的16位Thumb指令集和基本的32位Thumb 2指令集架构 Cortex M3处理器不能执行ARM指令集 Thumb 2在Thumb指令集架构 ISA 上进行了大量的改进 它与Thumb相比 具有更高的代码密度并提供16 32位指令的更高性能 Cortex R4 主要面向实时控制领域 如汽车刹车控制等 工作频率的最佳点位是300MHz ARM微处理器系列 续 Intel的Xscale Xscale是基于ARMv5TE体系结构的解决方案 是一款全性能 高性价比 低功耗处理器 支持16位Thumb指令和DSP指令集 已用于数字移动电话 PDA 网络产品等 是Intel目前主要推广的一款ARM微处理器 Intel的StrongARM 融合了Intel的设计和处理技术以及ARM体系结构的电源效率 采用在软件上兼容ARMv4体系结构 同时具有Intel技术优点的体系结构 ARM微处理器的选型 ARM内核的选择系统的工作频率片内存储器的容量片内外围电路的选择 1 3 2 5 4 ARM简介 ARM体系结构概览 ARMJTAG调试接口 ARM编程模型 ARM指令集 ARM处理器的特点 ARM处理器的3大特点如下 小体积 低功耗 成本低 高性能 16位 32位双指令集 全球众多的合作伙伴 当前ARM体系结构的扩充包括 Thumb 16位指令集 用以改善代码密度 DSP 用于DSP应用的算术运算指令集 Jazeller 允许直接执行Java代码的扩充 ARM处理器系列提供的解决方案包括 在无线 消费电子和图像应用方面的开放平台 存储 自动化 工业和网络应用的嵌入式实时系统 智能卡和SIM卡的安全应用 ARM Partner OEMCustomer ARM的业务模型 ARM微处理器 微处理器核 ARM6 ARM7 ARM9 ARM10 ARM11扩展 Thumb DSP SIMD Jazelleetc 其它IP核 UART GPIO memorycontrollers etc ARM体系结构版本 Version1 obsolete 基本数据处理指令 无乘法 字节 半字和字的load store指令转移指令 包括子程序调用及链接指令供OS使用的软件中断指令SWI26bit地址总线 寻址空间64MB 226B ARM体系结构版本 续 Version2 obsolete Multiply Multiply accumulate指令支持协处理器操作指令快速中断模式支持线程同步SWP SWPB的最基本存储器与寄存器交换指令26bit地址总线 ARM体系结构版本 续 Version332位寻址能力 4GB 当前程序状态寄存器从R15移到新的CPSR CurrentProgramStatusRegister 增加了程序状态保存寄存器SPSR SavedProgramStatusRegister 用于保存程序异常中断时的程序状态 便于对异常 Exception 的处理增加了中止 Abort 和未定义两种处理器模式增加了MRS MSR指令 以访问新的CPSR SPSR寄存器增加了从异常处理返回的指令T 16位压缩指令集M 增强型乘法器 产生全64位结果 32X32 64or32X32 64 64 ARM体系结构版本 续 Version4符号化和非符号化半字及符号化字节的Load Store指令增加了16位Thumb指令集完善了软件中断SWI指令的功能处理器系统模式引进特权方式时使用用户寄存器操作把一些未使用的指令空间捕获为未定义指令 ARM体系结构版本 续 Version5 ARM10和Xscale采用 带有链接和交换的转移BLX指令计数前导零CLZ CountLoadZeros 指令集BRK中断指令增加了数字信号处理指令 V5TE版 为协处理器增加更多可选择的指令 ARM体系结构版本 续 Version6 2001年发布 2002年发布的ARM11采用 THUMBTM 35 代码压缩DSP扩充 高性能定点DSP功能JazelleTM JAVA性能优化 可提高8倍Media扩充 音 视频性能优化 可提高4倍 ARM体系结构版本 续 Version7 2006年发布 Cortex系列采用 ARMv7架构是在ARMv6架构的基础上诞生的 该架构采用了Thumb 2技术 Thumb 2技术是在ARM的Thumb代码压缩技术的基础上发展起来的 并且保持了对现存ARM解决方案的完整的代码兼容性 Thumb 2技术比纯32位代码少使用31 的内存 减小了系统开销 同时能够提供比已有的基于Thumb技术的解决方案高出38 的性能 ARMv7架构还采用了NEON技术 将DSP和媒体处理能力提高了近4倍 并支持改良的浮点运算 满足下一代3D图形 游戏物理应用以及传统嵌入式控制应用的需求 此外 ARMv7还支持改良的运行环境 以迎合不断增加的JIT JustInTime 和DAC DynamicAdaptiveCompilation 技术的使用 另外 ARMv7架构对于早期的ARM处理器软件也提供很好的兼容性 ARMv7架构定义了三大分工明确的系列 A 系列面向尖端的基于虚拟内存的操作系统和用户应用 R 系列针对实时系统 M 系列对微控制器和低成本应用提供优化 ARM体系结构更新 体系结构变化 1 THUMB指令集 T THUMB指令集 32位ARM指令集的子集 按16位指令重新编码代码尺寸小 upto40 compression 简化设计 体系结构变化 2 长乘法指令 M 32x32 64bit硬件乘法器提供全64位结果增强DSP指令集 E 可附加在ARM中的DSP指令64bit转换在v5版本中第一次推出处理器内核的变化D 在片调试 处理器可响应调试暂停请求I EmbeddedICE 支持片上断点调试 体系结构变化 3 ARMDSP指令集对于音频DSP应用提供高达70 的处理速度Jazelle提供比基于软件的JAVA虚拟机 JVM 更高的性能与非JAVA加速核相比 提供8倍JAVA加速性能和降低80 的功耗139字节码直接在硬件上执行 88个字节码在软件上执行 1 3 2 5 4 嵌入式微处理器及其应用 ARM体系结构概览 ARMJTAG调试接口 ARM编程模型 ARM指令集 ARM7TDMI的指令流水线 从存储器取指 指令所用的寄存器译码 从从寄存器组中读寄存器移位和ALU操作把寄存器写回到存储器组 每条指令可以分3个阶段执行 ARM单周期指令3段流水线操作 t 指令 1 2 3 指令流水线 为增加处理器指令流的速度 ARM7系列使用3级流水线 允许多个操作同时处理 比逐条指令执行要快 PC指向正被取指的指令 而非正在执行的指令 Fetch Decode Execute 从存储器中读取指令 解码指令 寄存器读 从寄存器Bank 移位及ALU操作寄存器写 到寄存器Bank PCPC PC 4PC 2 PC 8PC 4 ARMThumb 处理器的工作状态 ARM7TDMI处理器有两种工作状态 ARM 32 bit 按字排列的ARM指令集Thumb 16 bit 按半字排列的Thumb指令集在严格控制成本的应用中 使用Thumb指令集可以得到密度更高的代码 但在异常处理等情况下 必须使用ARM指令集 因此必须在两种工作状态之间切换 并且处理器工作状态切换后不影响处理器的工作模式和相应寄存器中的内容 ARM处理器总是在ARM状态下开始执行代码 处理器的工作状态 ARM7TDMI核的操作状态可能通过BX指令 分支和交换指令 在ARM状态和Thumb状态之间切换 1 进入Thumb状态 当操作数寄存器的状态位 位0 为1时 执行BX指令可使微处理器从ARM状态切换到Thumb状态 此外 当处理器处于Thumb状态时发生异常 如IRQ FIQ Undef Abort SWI等 则异常返回时 自动切换到Thumb状态 2 进入ARM状态 当操作数寄存器的状态位 位0 为0时 执行BX指令可使微处理器从Thumb状态切换到ARM状态 此外 处理器进行异常处理时 把PC指针放入异常模式链接寄存器中 并从异常向量地址开始执行程序 也可以使处理器切换到ARM状态 例 从ARM状态切换到Thumb状态 LDRR0 Label 1BXR0从Thumb状态切换到ARM状态 LDRR0 LabelBXR0 存储体系结构 评价存储器性能的3个主要指标 容量 速度 价格容量 速度 价格之间是相互矛盾的 因此要采用一些新技术和新方法来构成主存储器以满足CPU的需要 如 1 引入并行和重叠技术来构成并行主存储系统 采用多体存储交叉编址 2 在CPU与主存之间插入高速缓存等 并行主存结构 参考有关资料 1 单体单字存储器2 单体多字存储器3 多体单字交叉存储器 存储体系的形式 1 主存 辅存 2级 存储层次2 Cache 主存 辅存 3级 存储层次存储层次结构的组成原则1 每位价格从上到下依次递减 2 存储容量从上到下依次增加 3 存取速度从上到下依次减慢 4 CPU的访问频度从上到下依次减慢少 层次结构成功的关键 存储器模式 大端模式字数据的高位字节存储在低地址中字数据的低字节则存放在高地址中小端模式 默认 低地址中存放字数据的低字节高地址中存放字数据的高字节 数据和指令类型 ARM采用的是32位架构 ARM约定 Byte 8bitsHalfword 16bits 2byte Word 32bits 4byte 大部分ARMcore提供 ARM指令集 32 bit Thumb指令集 T变种 16 bit Jazellecores支持Javabytecode J变种 4TEJ 指令长度及数据类型 ARM微处理器的指令长度可以是32位 ARM状态 也可以为16位 Thumb 状态ARM微处理器支持字节 8位 半字 16位 字 32位 3种数据类型字需要4字节对齐 地址的低两位为0 2字之间差4字节 半字需要2字节对齐 地址的最低位为0 在内部 所有ARM操作都是面向32位的操作数 只有数据传送指令支持较短的字节和半字的数据类型 从存储器调入一个字节或半字时 将按符号位扩展为32位再进行内部处理 操作模式 ARM处理器有7种工作模式 由CPSR的低4位决定 用户模式 usr 正常的程序执行模式 M 4 0 10000快速中断模式 fiq 支持高速数据传输或通道处理 M 4 0 10001外部中断模式 irq 用于通用中断处理 M 4 0 10010管理员模式 svc 操作系统的保护模式 M 4 0 10011 中止模式 abt 支持虚拟内存和 或内存保护 M 4 0 10111系统模式 sys 支持操作系统的特殊用户模式 运行操作系统任务 M 4 0 11111未定义模式 und 支持硬件协处理器的软件仿真 M 4 0 11011除了用户模式外 其他模式均可视为特权模式 PrivilegedModes 除SYS模式外的5种特权模式又称为异常模式 ExceptionModes 处理器工作模式 2 大多数程序运行在用户模式下 这时应用程序不能访问一些受操作系统保护的系统资源 也不能直接进行处理器模式的切换 当需要进行模式切换时 应用程序可以产生异常处理 在异常处理过程中切换处理器的运行模式 这种体系结构的优点使操作系统可以控制整个系统的资源 当应用程序发生异常中断时 处理器进入相应的异常模式 每种异常模式下都有相应的一组寄存器 以供相应的异常处理程序使用 这样可以保证进入异常模式后 用户模式下的寄存器 保存了程序状态 不会被破坏 寄存器组织 1 37个寄存器分为7组 各工作模式只能访问自己的寄存器组 各寄存器组中的部分寄存器可以重叠 寄存器 2 37寄存器31个通用32位寄存器 包括程序计数器PC未分组寄存器R0 R7 各处理器模式共享分组寄存器R8 R14 在不同处理器模式下作用不同R8 R12有2组物理寄存器 一组属于快速模式 另一组属于其它模式R13 R14有6组物理寄存器 其中用户和系统模式共一组 其它模式各有自己的一组 R13通常作为堆栈指针 SP R14常用作链接寄存器 LR 程序计数器PC R15 寄存器 2 6个状态寄存器15通用寄存器 R0toR14 以及1或者2个状态寄存器和程序计数器在任何时候都是可以访问的可访问的寄存器取决于处理器的模式其它寄存器 thebankedregisters 的状态在支持IRQ FIQ 管理员 中止和未定义模式处理时被切换 寄存器 3 R0到R15可以直接访问R0到R14是通用寄存器R13 堆栈指针 sp 通常 每种处理器模式都有自己单独的堆栈R14 链接寄存器 lr R15包含程序计数器 PC CPSR 当前程序状态寄存器 包括代码标志状态和当前模式位5个SPSRs 程序状态保存寄存器 当异常发生时保存CPSR状态 栈指针寄存器 R13 R13通常作为栈指针使用 每一种异常模式都有自己的R13 程序初始化的时候 使R13指向该异常模式专用的栈地址 当进入异常时 可以把需要保存的寄存器保存在R13所指向的栈中 当退出异常时 再将保存在R13所指向的栈中的寄存器弹出来 这样就使异常处理程序不会破坏其中断程序的运行现场 链接寄存器 R14 1 每一种处理器模式自己的物理R14中存放当前子程序的返回地址 当通过BL指令调用子程序时 R14被设置成该子程序的返回地址 在子程序中 当把R14的值复制到程序计数器PC中时 子程序返回 可以通过下面两种方式实现这种子程序的返回操作 MOVPC LRBXLR或者在子程序入口使用下面的指令将PC保存到栈中 STMFDSP LR LDMFDSP PC 2 当异常中断发生时 该异常模式特定的物理R14被设置成该异常模式将要返回的地址 对于有些异常模式 R14的值可能与将返回的地址有一个常数的偏移量 程序计数器 R15 程序计数器R15又称为PC 由于ARM采用流水线机制 当正确读取了PC的值时 该值为当前执行指令地址值加8个字节 也就是说 对于ARM指令集来说 PC指向当前执行指令的下两条指令的地址 由于ARM指令是字对齐的 PC值的第0 1位总为0 程序状态寄存器 1 ARM7TDMI包含当前程序状态寄存器 CPSR 加上5个程序状态保存寄存器SPSR 当异常发生时 用于保存CPSR的状态由于用户模式和系统模式不属于异常模式 他们没有SPSR这些寄存器的功能是 保存ALU当前操作信息控制允许和禁止中断设置处理器操作模式 程序状态寄存器 条件位 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位 处理器模式位 0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System 程序状态寄存器PSR的模式位 程序指针PC r15 当处理器执行在ARM状态 所有指令32bits宽所有指令必须word对齐所以pc值由bits 31 2 决定 bits 1 0 未定义 所以指令不能halfword byte对齐 当处理器执行在Thumb状态 所有指令16bits宽所有指令必须halfword对齐所以pc值由bits 31 1 决定 bits 0 未定义 所以指令不能byte对齐 当处理器执行在Jazelle状态 所有指令8bits宽处理器执行word存取一次取4条指令 异常 1 什么是异常 Exceptions 正常的程序执行流程发生暂时停止 处理器转而去处理一个临时的事件 如外部中断或试图执行未定义指令都会引起异常 其由来自于内部或外部的中断源产生 处理异常之前必须保留处理器的状态 异常 复位 Reset 当处理器复位引脚有效时 系统产生复位异常中断 程序跳转到复位异常中断处理程序处执行 复位异常中断一般在下面三种情况下产生 系统上电 系统复位 跳转到复位中断向量处执行 软复位 软件中断 softwareinterrupt SWI 由用户定义的异常中断 可用于用户模式下的程序调用特权操作指令 在实时操作系统中可以通过该机制实现系统功能调用 通过软件中断产生进行管理员模式中获得通常要求特殊的管理功能 如操作系统支持 未定义的指令 undefinedinstruction 当ARM处理器或者协处理器认为当前指令未定义时 产生未定义的指令异常中断 当ARM接受到一条不能处理的指令 ARM把这条指令提供给任何一个协处理器执行如果协处理器可以执行这条指令但此时协处理器忙 ARM将等待直到协处理器准备好或中断发生如果没有协处理器处理这条指令 那么ARM将处理未定义的指令陷井 指令预取中止 PrefechAbort 如果处理器预取的指令的地址不存在 或者该地址不允许当前指令访问 当该被预取的指令执行时 处理器产生指令预取中止异常中断 数据访问中止 DataAbort 如果数据访问指令的目标地址不存在 或者该地址不允许当前指令访问 处理器产生数据访问中止异常中断 外部中断请求 IRQ 当处理器的外部中断请求引脚有效 而且CPSR寄存器的I控制位被清除时 处理器产生外部中断请求 IRQ 异常中断 系统中各外设通常通过该异常中断请求处理器服务 快速中断请求 FIQ 当处理器的外部中断请求引脚有效 而且CPSR寄存器的F控制位被清除时 处理器产生外部中断请求 FIQ 异常中断 异常处理需要解决的问题 去哪儿 如何去 去了干什么 回到哪 如何回 回来后怎么办 VectorTable 进入异常的操作 当异常产生时 ARMcore 拷贝CPSR到SPSR 设置适当的CPSR位 改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断 如需要 保存返回地址到LR 设置PC为相应的异常向量返回时 异常处理需要 从SPSR 恢复CPSR从LR 恢复PCNote 这些操作只能在ARM态执行 Vectortablecanbeat0 xFFFF0000onARM720TandonARM9 10familydevices FIQ IRQ Reserved DataAbort PrefetchAbort SoftwareInterrupt UndefinedInstruction Reset 进入异常的操作 2 SPSR CPSRCPSR 5 0 当运行于ARM状态CPSR 4 0 ExceptionModeNumberIF ResetorFIQthen 当响应FIQ异常时 禁止新的FIQ异常CPSR 6 1 CPSR 7 1 R14 ReturnLinkPC ExceptionVectorAddress 例子 用户模式到FIQ模式 r14 fiq r13 fiq r12 fiq r10 fiq r11 fiq r9 fiq r8 fiq 用户模式CPSR复制到FIQ模式SPSR 返回一个从用户模式计算的地址 PC值存储在FIQ模式 用户模式 FIQ模式 1 3 2 5 4 嵌入式微处理器及其应用 ARM体系结构概览 ARMJTAG调试接口 ARM编程模型 ARM指令集 ARM指令集 Load store结构 在通用寄存器中操作load store 从存储器中读某个值 操作完后再将其放回存储器中指令分类数据处理指令 使用和改变寄存器的值数据传送指令 把存储器的值拷贝到寄存器中 load or把寄存器中的值拷贝到存储器中 store 控制流指令分支分支和链接 保存返回的地址 以恢复最先的次序陷入系统代码 由数据处理指令 跳转指令 Load Store指令 程序状态寄存器指令 协处理器指令 软件中断指令6大类构成 指令格式 指令格式3地址指令格式在ARM状态中使用2地址指令格式在ARM和THUMB状态下使用 指令格式 一般ARM指令的助记符格式 s 操作码ADD 决定指令执行的条件域EQS s 决定指令执行是否影响CPSR寄存器的值影响 目的寄存器R1 第一个操作数 为寄存器R2 第二个操作数5ADDEQSR1 R2 5 ARM指令编码格式 说明 Cond指令执行的条件编码Opcode指令操作符编码S决定指令的操作是否影响CPSR的值Rd操作目标寄存器编码Rn包含第一操作数的寄存器编码Shifter operand表示第二操作数 312827252421201916151211870 ARM指令集 数据处理指令 1 数据处理指令的类别算术操作按位逻辑操作寄存器移位操作比较操作乘法操作操作数 32 bits宽 有3种指定操作数的方式来自寄存器第二操作数可以是常数 立即数 移位寄存器操作数结果 32 bits宽 放在寄存器中长乘法产生64位结果 结果放在2个寄存器中 数据处理指令 2 数据处理指令 3 数据处理指令 4 算术操作 按位逻辑操作 寄存器移位 比较操作 数据处理指令 5 立即数操作 立即数操作 0 255 x22n 0 n 12移位寄存器操作数第二个操作数在与第一个操作数合成之前 是服从于移位操作的 数据处理指令 6 移位操作在任何数据处理指令中 第二个寄存器操作数可以有应用该操作数的移位操作 逻辑移位LSL 逻辑左移字的最小位空位清零LSR 逻辑右移字的最大位空位清零 数据处理指令 7 移位操作 cont d 算术移位ASR LSRASL 算术左移循环移位 ROR RRX 条件码标志 任何数据处理指令都可以设置条件码 N Z V andC 适用于除比较操作外的所有数据处理指令特殊的请求必须在汇编语言中实现 这种请求是通过把 S 增加到选择代码中指定的算术操作设置所有的标志位 N Z C andV 逻辑和移位操作设置NandZ当无移位操作时 保存N和V 或根据移位操作设置 乘法指令集 在寄存器产生32位值 乘法 例子 乘法 乘法累加器 注意最低32 bits置于结果寄存器中 其余被忽略不支持第二立即操作数结果寄存器与源寄存器必须不同if S bitissettheVispreservedandtheCisrenderedmeaningless 数据传送指令 1 单指令传送 LDR STR 单字 32bit 半字 6bit 以及字节 8bit 传送寻址寄存器偏移地址 基址 寄存器偏移立即数偏移地址 基址 立即数常数后变址Post indexing modifyaddressafteruse前变址Pre indexing modifyaddressbeforeuse回写如果可能 更新基址寄存器 分单一数据传送指令 多数据传送指令 数据交换指令3类 数据传送指令 2 多数据传送指令 LDM STM load LDM 或store STM 当前可访问寄存器的任意子集使用堆栈 maintainingfulloremptystackswhichcangrowupordownmemory上下文切换 保存或重新存储工作寄存器块拷贝 在主存储器中移动大数据块寻址Pre PostindexingAutoincrementordecrement回写到基址寄存器Writebackthebaseregister 数据传送指令 3 单数据交换 SWAP 在寄存器和外部存储器之间交换字节或字读存储器和写存储器是放在一起的原子指令执行时不能中断当 LOCK 信号输出操作时 外部存储器管理单元被锁定 当多线程操作时使程序同步 OS支持 锁定信号量 数据传送指令 4 Note r1keepsawordaddress 2LSBsare0 寄存器间接寻址 基址 偏移量寻址 offsetofupto4Kbytes 自动变址寻址 后变址寻址 Note norestrictionsforr1 单寄存器loadandstore 数据传送指令 5 数据传送指令 6 Note 寄存器的部分或全部都可以用单指令传送Note 在表中的寄存器顺序并不重要Note 在表中包括r15i将造成控制流的改变 多寄存器数据传送 IncrementAfter 多寄存器传送寻址模式 r5 r1 r9 r0 r9 STMIAr9 r0 r1 r5 1000 16 100c 16 1018 16 r1 r5 r9 STMDAr9 r0 r1 r5 r0 r9 1000 16 100c 16 1018 16 r5 r9 STMDBr9 r0 r1 r5 r1 r0 r9 1000 16 100c 16 1018 16 r5 r1 r0 r9 r9 STMIBr9 r0 r1 r5 1000 16 100c 16 1018 16 条件执行 所有的ARM指令都可以条件执行指令的执行与否取决于CPSR寄存器的N Z CandV标志位所有的Thumb指令都可以解压成全部条件指令ConditionFieldininstruction0000 EQ Zset equal 0001 NE Zclear notequal 0010 CS Cset unsignedhigherorsame 0011 CC Cclear unsignedlower 0100 MI Nset negative 0101 PL Nclear positiveorzero 0110 VS Vset overflow 0111 VC Vclear nooverflow 1000 HI CsetandZclear unsignedhigher 1001 LS CclearorZset unsignedlowerorsame 1010 GE NsetandVset orNclearandVclear greaterorequal 1011 LT NsetandVclear orNclearandVset lessthan 1100 GT Zclear andeitherNsetandVset orNclearandVclear greaterthan 1101 LE Zset orNsetandVclear orNclearandVset lessthanorequal 1110 AL always1111 NV never 控制流指令 条件执行 条件执行避免使用分支指令Example 使用条件执行 Note add2 letterconditionafterthe3 letteropcode 控制和分支指令 控制指令分支和分支连接跳到希望的指令中保存当前的PC并返回 with L bit 分支和交换跳到期望的指令中与指令集交换Rm 0 1 Subsequentinst areTHUMB Rm 0 0 Subsequentinst areARM PSR指令 程序状态寄存器访问指令 MRS MSR MRS程序状态寄存器到通用寄存器的数据传送指令MSR通用寄存器到程序状态寄存器的数据传送指令 ARM系统初始化过程简介 包括 中断向量表初始化存储器系统初始化堆栈初始化有特殊要求的端口 设备初始化应用程序执行环境改变处理器模式CALL主应用程序 1 中断向量表 中断向量表的程序 AREABoot CODE READONLYENTRYBReset handlerBUndef HandlerBSWI HandlerBPreAbort HandlerB forreservedinterrupt stophereBIRQ handlerBFIQ handler 2 初始化存储器系统 存储器的类型和时序配置存储器的地址分布 ROM地址的重映射 3 初始化堆栈 ARM有7种执行状态 每一种状态堆栈指针寄存器 SP 都是独立的 对每一种模式都要定义SP寄存器的堆栈地址 4 初始化有特殊要求的端口 设备 如驱动指示系统运行状态的一些简单的输出设备 如LED 蜂鸣器等一般外设初始化可以系统初始化之后进行 5 初始化应用程序执行环境 完成必要的从ROM到RAM的数据传输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水环境治理政策分析-全面剖析
- 五年级英语上册unit1wehavenewfriendslesson3教案人教精通版三起
- 2024年6月份房产评估AI模型训练数据清洗标准
- 2024年七月份文化遗产建筑数字化保护技术规范
- 充电站与城市交通融合-全面剖析
- 基于神经网络的图像风格迁移-全面剖析
- 农业数字化转型与产业升级-全面剖析
- 污染治理对生态系统服务的修复作用-全面剖析
- 人教部编版四年级语文下册 课课练-23“诺曼底号”遇难记 人教部编版 含答案
- 人教部编版二年级语文上册 课课练-18《古诗二首 》-人教部编版(含答案)
- 工业互联网平台的商业模式与盈利策略
- 2024年09月2024渤海银行上海分行校园招聘笔试历年参考题库附带答案详解
- 2025年辽宁省辽渔集团招聘笔试参考题库含答案解析
- 《员工招聘与选拔》课件
- 南昌起义模板
- 【MOOC】体育舞蹈与文化-大连理工大学 中国大学慕课MOOC答案
- 接处警流程培训
- 2024年商丘职业技术学院单招职业技能测试题库附答案
- 《园林植物病虫害》课件
- 小红书食用农产品承诺书示例
- 空调维保服务投标方案 (技术方案)
评论
0/150
提交评论