1 / 44

大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

ARM 嵌入式系统结构与编程. 大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut.edu.cn 参考教材: 《ARM 嵌入式系统结构与编程 》 清华大学出版社 2009 年 3 月出版.

wylie-evans
Download Presentation

大连理工大学软件学院 邱铁 办公楼 409 Tel : 87571521 E_mail: qiutie@dlut

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM嵌入式系统结构与编程 • 大连理工大学软件学院 邱铁 办公楼409 Tel:87571521 E_mail: qiutie@dlut.edu.cn 参考教材:《ARM嵌入式系统结构与编程》 清华大学出版社2009年3月出版

  2. 本章主要介绍ARM处理器的产生及版本发展历史,以及各个版本的典型处理器及应用情况和性能分析;ARM处理器的内核调试结构,重点分析了ARM7TDMI-S、ARM9TDMI两种结构;ARM处理器的工作模式及寄存器组织结构,分析了在什么情况下进入到相应的工作模式;ARM处理器支持的内存数据存储格式,分为大端格式和小端格式;最后介绍了ARM7的三级流水线运行机制和ARM9的五级流水线运行机制。 第2章 ARM技术与ARM体系结构

  3. 内容提要 • 2.1 ARM体系结构版本与内核 • 2.2 ARM内核模块 • 2.3 ARM处理器的工作模式 • 2.4 ARM内部寄存器 • 2.5 ARM异常处理 • 2.6 存储方式与存储器映射机制 • 2.7 ARM流水线技术分析

  4. 2.1 ARM体系结构版本与内核 • 第一片ARM处理器是1983年10月到1985年4月 间在位于英国剑桥的Acorn Computer公司开发 • 1990年,ARM公司成立 • 20世纪90年代, ARM快速进入世界市场 • 1995年 StrongARM 问世 • XScale是下一代StrongARM芯片的发展基础 • ARM10TDMI是ARM处理器核中的高端产品 • ARM11是ARM家族中性能最强的一个系列

  5. 2.1.1ARM体系结构版本 4 Jazelle 支持 Java字节码 5TEJ 支持Halfword 和signed halfword / byte 和System mode 5TE 改良的ARM/Thumb 交互作用 以及CLZ 指令 1 2 ARM9EJ-S ARM7EJ-S 3 Saturated maths DSP multiply-accumulate instructions ARM926EJ-S 支持Thumb指令集 4T 6 SIMD SISIMDMD S 早期的ARMs ARM7TDMI ARM9TDMI ARM1020E ARM9E-S ARM11 ARM720T ARM940T XScale ARM966E-S SIMD 7 ARM Cotex

  6. 第一阶段: • 版本V1、V2、V3这3个早期ARM版本功能单一,没有大范围占领市场,主要是处于开发和实验阶段 • 第二阶段: • 从ARM4开始,ARM体系结构处于完善和提高阶段

  7. 版本4与以前版本相比增加了下列指令: • 有符号、无符号的半字和有符号字节的load和store指令。 • 增加了T变种,处理器可以工作于Thumb状态,在该状态下的指令集是16位的Thumb指令集。 • 增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。

  8. 版本5主要由两个变型版本5T、5TE组成 • 相比与版本4,版本5的指令集有了如下的变化: • 提高了T变种中ARM/Thumb混合使用的效率。 • 增加前导零记数(CLZ)指令,该指令可使整数除法和中断优先级排队操作更为有效; • 增加了BKPT(软件断点)指令; • 为协处理器设计提供了更多的可供选择的指令; • 更加严格地定义了乘法指令对条件码标志位的影响。

  9. ARM体系版本6是2001年发布的。新架构v6在降低耗电量的同时还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。

  10. 2.1.2 ARM体系结构的基本版本命名规则 ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S} • 大括号内的字母是可选的,各个字母的含义如下: • x ——系列号,例如ARM7中的“7”、ARM9中的“9”; • y ——内部存储管理/保护单元,例如ARM72中的“2”、ARM94中的“4”; • z ——内含有高速缓存Cache; • T ——技持16位的Thumb指令集; • D ——支持JTAG片上调试; • M ——支持用于长乘法操作(64位结果)的ARM指令,包含快速乘法器; • I ——带有嵌入式追踪宏单元ETM(Embedded Trace Macro),用来设置断点和观察点的调试硬件;

  11. • E ——增强型DSP指令(基于TDMI); • J ——含有Java加速器Jazelle,与Java虚拟机相比,Java加速器Jazelle使Java代码运行速度提高了8倍,功耗降低到原来的80%; • F ——向量浮点单元; • S——可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以被编译成一种易于EDA工具使用的形式。

  12. ARM体系结构的基本版本

  13. 2.2ARM内核模块 • ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),它是ARM公司自己推出的调试工具

  14. ARM调试结构

  15. 2.2.1 ARM7TDMI-S内核结构 • ARM7TDMI-S是一款32位嵌入式RISC处理器。它作为优化的硬核是性能、功耗和面积特性的最佳组合。使用ARM7TDMI核使得系统设计师能够设计出小尺寸、低功耗以及高性能的嵌入式设备。

  16. ARM7TDMI • ARM7TDMI 是基于 ARM7 内核 • 3 级流水线---0.9MIPS/MHz • 冯.诺依曼架构 • CPI(Cycle Per Instruction) 约为1.9 • T - Thumb 架构扩展, 提供两个独立的指令集: • ARM 指令,均为 32位 • Thumb指令,均为 16位 • 两种运行状态,用来选择哪个指令集被执行 • D - 内核具有Debug扩展结构 • M - 增强乘法器 支持64位结果. • I - EmbeddedICE-RT逻辑---提供片上断点和调试点支持

  17. ARM7TDMI 内核信号 nM[4:0] MCLK nMREQ 时钟 nWAIT SEQ LOCK A[31:0] ISYNC D[31:0] BUSEN 存储器接口 配置 BIGEND DIN[31:0] ARM7TDMI 内核 DOUT[31:0] nENOUT nIRQ nRW 中断 nFIQ MAS[1:0] nRESET nTRANS 存储器管理 APE ABORT 总线控制 DBE nOPC nCPI VDD 协处理器接口 CPA 电源 VSS CPB

  18. ARM7TDMI 方框图 控制信号 地址总线 A[31:0] DOUT[31:0] BUS Splitter ARM7TDMI 内核 DIN[31:0] 数据总线 D[31:0] Embedded ICE 逻辑 TAP 控制器 JTAG 接口

  19. ARM7TDMI 内核 ABE A[31:0] 地址 自增器 Incrementer 地址寄存器 P C BIGEND MCLK 寄存器 nWAIT PC Update nRW 指令 解码 MAS[1:0] A L U B u s 解码站 A B u s B B u s ISYNC 指令 解码 nIRQ 乘法器 nFIQ nRESET 及 ABORT nTRANS 读数据 寄存器 nMREQ 桶形 移位器 SEQ 控制 逻辑 LOCK nM[4:0] 写数据 寄存器 nOPC nCPI 32 位 ALU CPA CPB DBE D[31:0]

  20. 外部地址产生 PC[31:2] ARM State PC[31:1] Thumb State ALU[31:0] 地址 寄存器 A[31:0] 0x1C 向量 0x00 INC 自增器

  21. 特 点: • 32/16 位RISC架构(ARM v4T)。 • 具有最高性能和灵活性的32位ARM指令集。 • 代码紧凑的16位Thumb指令集。 • 统一的总线接口,指令与数据都在32位总线上传输。 • 3级流水线。 • 32位算术逻辑单元(ALU)。 • 极小的核心尺寸以及低功耗。 • 完全的静态操作。 • 协处理器接口。 • 扩展的调试设备:

  22. T标志位的作用 Fetch Decode Execute 阶段 1 阶段 2 Mux 32-bit data D[31:0] 0 1 Mux 16 16 Thumb 指令 解码 16 Mux 0 ARM 指令 解码 A[1] 1 T标志

  23. 带Cache的ARM7TDMI JTAG 和非 AMBA 信号 • ARM710T • 8K 统一的 cache • 完整的内存管理单元(mmu),支持虚拟地址和存储器保护 • 写缓冲 控制 逻辑 CP15 ARM7TDMI 内核 地址 MMU AMBA 总线 接口 写 缓冲 AMBA接口 地址 数据 数据写 数据读 Cache ARM7xxT ARM720T 同ARM710T,但支持 WinCE ARM740T 8K 统一的 cache 内存管理单元 写缓冲

  24. ARM7系列内核采用了三条流水线的内核结构,三级流水线分别为取指(Fetch)、译码(Decode)、执行(Execute)ARM7系列内核采用了三条流水线的内核结构,三级流水线分别为取指(Fetch)、译码(Decode)、执行(Execute)

  25. 取指:将指令从存储器中取出,放入指令Cache中。取指:将指令从存储器中取出,放入指令Cache中。 • 译码:由译码逻辑单元完成,是将在上一步指令Cache中的指令进行解释,告诉CPU将如何操作。 • 执行:这阶段包括移位操作、读通用寄存器内容、输出结果、写通用寄存器等。

  26. 需要注意的是,PC指向正被取指的指令而不是正在执行的指令:需要注意的是,PC指向正被取指的指令而不是正在执行的指令:

  27. 详细信息见教材《ARM嵌入式系统结构与编程》第16页详细信息见教材《ARM嵌入式系统结构与编程》第16页

  28. 2.2.2 ARM9内核结构 • ARM920是一款32位嵌入式RISC处理器内核。在指令操作上采用5级流水线 . • 取指:从指令Cache中读取指令。 • 译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。 • 执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。 • 存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache)。 • 寄存器回写:将指令运算或操作结果写回到目标寄存器中。

  29. ARM920 的5级流水线操作

  30. 2.3ARM处理器的工作模式 • ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。

  31. ARM处理器共有7种工作模式 • 1.用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式 • 2.FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。

  32. 3.IRQ模式:也称为普通中断模式,:当一个低优先级(normal)中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。3.IRQ模式:也称为普通中断模式,:当一个低优先级(normal)中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。 • 4.SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。

  33. 5.中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。5.中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。 • 6.未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。 • 7.系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。

  34. 在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这7种工作模式中,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。 • 在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式,每种异常都对应有自己的异常处理入口点。

  35. 2.4内部寄存器 • ARM处理器共有37个寄存器,这些寄存器包括以下两类寄存器。 • (1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。 • (2)6个状态寄存器:状态寄存器也是32位的寄存器,但是目前只使用了其中的14位。

  36. ARM 寄存器 Current Visible Registers Current Visible Registers Current Visible Registers 当前可见寄存器 Current Visible Registers Current Visible Registers r0 r0 r0 r0 r0 r0 r0 Abort Mode SVC Mode Undef Mode FIQ Mode User Mode IRQ Mode r1 r1 r1 r1 r1 r1 r1 r2 r2 r2 r2 r2 r2 r2 Banked out Registers Banked out Registers Banked out Registers Banked out Registers 备用寄存器 Banked out Registers r3 r3 r3 r3 r3 r3 r3 r4 r4 r4 r4 r4 r4 r4 r5 r5 r5 r5 r5 r5 r5 User User User User User FIQ FIQ FIQ FIQ FIQ FIQ IRQ IRQ IRQ IRQ IRQ IRQ SVC SVC SVC SVC SVC SVC Undef Undef Undef Undef Undef Undef Abort Abort Abort Abort Abort Abort r6 r6 r6 r6 r6 r6 r6 r7 r7 r7 r7 r7 r7 r7 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r10 r10 r10 r10 r10 r10 r10 r10 r10 r10 r10 r10 r10 r10 r11 r11 r11 r11 r11 r11 r11 r11 r11 r11 r11 r11 r11 r11 r12 r12 r12 r12 r12 r12 r12 r12 r12 r12 r12 r12 r12 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc) r15 (pc) cpsr cpsr cpsr cpsr cpsr cpsr cpsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr spsr

  37. 寄存器组织概要 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 (sp) r14 (lr) r15 (pc) cpsr User FIQ IRQ SVC Undef Abort Usermoder0-r7,r15,andcpsr Usermoder0-r12,r15,andcpsr Usermoder0-r12,r15,andcpsr Usermoder0-r12,r15,andcpsr Usermoder0-r12,r15,andcpsr Thumb state Low registers r8 r9 Thumb state High registers r10 r11 r12 r13 (sp) r13 (sp) r13 (sp) r13 (sp) r13 (sp) r14 (lr) r14 (lr) r14 (lr) r14 (lr) r14 (lr) spsr spsr spsr spsr spsr Note: System模式使用user模式寄存器集

  38. ARM 寄存器 • ARM 有37个32-Bits长的寄存器. • 1 个用作PC( program counter) • 1个用作CPSR(current program status register) • 5个用作SPSR(saved program status registers) • 30 个通用寄存器

  39. 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: • 相应的r0-r12子集 • 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) • 相应的 r15(the program counter, pc) • 相应的CPSR(current program status register, cpsr) • 特权模式 (除system模式) 还可以存取; • 相应的 spsr (saved program status register)

  40. 条件位: N =1-结果为负,0-结果为正或0 Z = 1-结果为0,0-结果不为0 C =1-进位,0-借位 V =1-结果溢出,0结果没溢出 Q 位: 仅ARM 5TE/J架构支持 指示增强型DSP指令是否溢出 J 位 仅ARM 5TE/J架构支持 J = 1: 处理器处于Jazelle状态 中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ. T Bit 仅ARM xT架构支持 T = 0: 处理器处于 ARM 状态 T = 1: 处理器处于 Thumb 状态 Mode位(处理器模式位): 0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System 程序状态寄存器 31 28 27 24 23 16 15 8 7 6 5 4 0 N Z C V Q I F T mode U n d e f i n e d J

  41. 程序指针PC (r15) • 当处理器执行在ARM状态: • 所有指令 32 bits 宽 • 所有指令必须 word 对齐 • 所以 pc值由bits [31:2]决定, bits [1:0] 未定义 (所以指令不能halfword / byte对齐).

  42. 当处理器执行在Thumb状态: • 所有指令 16 bits 宽 • 所有指令必须 halfword 对齐 • 所以 pc值由bits [31:1]决定, bits [0] 未定义 (所以指令不能 byte对齐).

  43. 第2章 ARM技术与ARM体系结构 上半部 完

  44. 下半部内容提要 • 2.5 ARM异常处理 • 2.6 存储方式与存储器映射机制 • 2.7 ARM流水线技术分析

More Related