第 4 章 应用系统设计

56
4 第第第 第第 4.1 第第第第 4.2 ARM920T 第第 4.3 S3C2410X 第第第第第 4.4 第第第第第第 4.5 第第第第 第第 4.6 JTAG 第第第第第第 4.7 第第第第第第第 JTAG 第第第第

Upload: baina

Post on 19-Mar-2016

93 views

Category:

Documents


7 download

DESCRIPTION

第 4 章 应用系统设计. 4.1 系统设计概述 4.2 ARM920T 简介 4.3 S3C2410X 处理器详解 4.4 单元电路设计 4.5 存储器系统设计 4.6 JTAG 调试接口设计 4.7 综合训练之通过 JTAG 访问外设. 4.1 系统设计概述. 4.2 ARM920T 简介. ARM920T 是 ARM920TDMI 系列中的一款通用性的微处理器, ARM920TDMI 系列微处理器包含如下几种类型的内核。  ARM9TDMI :只有内核。  ARM940T :由内核、高速缓存和内存保护单元组成。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 4 章  应用系统设计

第 4章 应用系统设计4.1 系统设计概述4.2 ARM920T 简介4.3 S3C2410X 处理器详解4.4 单元电路设计4.5 存储器系统设计4.6 JTAG 调试接口设计4.7 综合训练之通过 JTAG 访问外设

Page 2: 第 4 章  应用系统设计

4.1 系统设计概述

Page 3: 第 4 章  应用系统设计

4.2 ARM920T 简介ARM920T 是 ARM920TDMI 系列中的一款通用性的微处理器, ARM920TDMI系列微处理器包含如下几种类型的内核。 ARM9TDMI :只有内核。 ARM940T :由内核、高速缓存和内存保护单元组成。 ARM920T :由内核、高速缓存和内存管理单元( MMU )组成。

4.2.1 ARM920T 系统结构分析4.2.2 ARM920T 内核编程模型

Page 4: 第 4 章  应用系统设计

ARM920T 系统结构分析ARM9TDMI 采用 5 级流水线,其结构图如图 4.2 所示,具有分开的指令和数据存储器, 5 级流水线具体如下。( 1 )取指:从存储器中取出指令,并将其放入指令流水线。( 2 )译码:对指令进行译码。( 3 )执行:把一个操作数移位,产生 ALU 的结果。( 4 )缓冲 / 数据:如果需要,则访问数据存储器;否则 ALU 的结果只是简单地缓冲 1 个时钟周期,以便所有的指令具有同样的流水线流程。( 5 )回写:将指令产生的结果回写到寄存器,包括任何从存储器中读取的数据。ARM9TDMI 处理器一个显著的特点是采用指令和数据分离访问的方式,即采用了指令缓存( I-Cache )和数据缓存( D-Cache )。这样可以把指令访问和数据访问单独安排 1 级流水线。

Page 5: 第 4 章  应用系统设计

ARM920T 以 ARM9TDMI 为内核,增加了高速缓存和内存管理单元,系统结构图如图 4.3 所示。

Page 6: 第 4 章  应用系统设计

ARM920T 内核编程模型字( Word ),在 ARM 体系结构中,字的长度为 32 位,而在 8 位 /16 位处理器体系结构中,字的长度一般为 16 位。半字( Half-Word ),在 ARM 体系结构中,半字的长度为 16 位,与 8 位 /16 位处理器体系结构中字的长度一致。字节( Byte ),在 ARM 体系结构和 8 位 /16 位处理器体系结构中,字节的长度均为 8 位。指令长度可以是 32 位(在 ARM 状态下),也可以为 16 位(在 Thumb 状态下)。ARM920T 中支持字节( 8 位)、半字( 16 位)、字( 32 位) 3 种数据类型,其中,字需要 4 字节对齐,半字需要 2 字节对齐。1 . ARM 微处理器的工作状态从编程的角度看, ARM920T 微处理器的工作状态一般有两种: ARM 状态,此时处理器执行 32 位的、字对齐的 ARM 指令; Thumb 状态,此时处理器执行 16 位的、半字对齐的 Thumb 指令。ARM 指令集和 Thumb 指令集均有切换处理器状态的指令,在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但 ARM 微处理器在开始执行代码时,应该处于 ARM 状态。当操作数寄存器的状态位(位 0 )为 1 时,可以采用执行 BX 指令的方法,使微处理器从 ARM 状态切换到 Thumb 状态。当操作数寄存器的状态位为 0 时,执行 BX 指令可以使微处理器从 Thumb 状态切换到 ARM 状态。此外,在处理器进行异常处理时,将 PC 指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到 ARM 状态。

Page 7: 第 4 章  应用系统设计

2 . ARM 体系结构的存储器格式ARM920T 体系结构将存储器看做是从零地址开始的字节的线性组合。从 0字节到 3 字节放置第 1 个存储的字数据,从第 4 个字节到第 7 个字节放置第 2 个存储的字数据,依次排列。作为 32 位的微处理器, ARM920T 体系结构所支持的最大寻址空间为 4GB ( 232 字节)。ARM920T 体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。大端格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图 4.4 所示。

Page 8: 第 4 章  应用系统设计

与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图 4.5 所示

Page 9: 第 4 章  应用系统设计

3 .处理器模式ARM920T 支持 7 种运行模式,分别为: 用户模式( usr ), ARM 处理器正常的程序执行状态; 快速中断模式( fiq ),用于高速数据传输或通道处理; 外部中断模式( irq ),用于通用的中断处理; 管理模式( svc ),操作系统使用的保护模式; 数据访问终止模式( abt ),当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护; 系统模式( sys ),运行具有特权的操作系统任务; 未定义指令中止模式( und ),当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM 微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的 6 种模式称为非用户模式或特权模式;其中除去用户模式和系统模式以外的 5 种又称为异常模式,常用于处理中断或异常,以及访问受保护的系统资源等情况。

Page 10: 第 4 章  应用系统设计

4 .寄存器组织ARM920T共有 37 个 32 位寄存器,其中 31 个为通用寄存器, 6 个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。在 ARM 状态下,任一时刻可以访问 16 个通用寄存器和 1~2 个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器,图 4.6 所示为在每一种运行模式下,可以访问的寄存器。在 ARM 状态下有 16 个直接访问寄存器 R0~R15 ,除 R15 寄存器外均为通用目的,可用来存储数据或地址值。除此之外,还有第 17 个寄存器用来存储状态信息。R14 也称为子程序连接寄存器( Subroutine Link Register )或连接寄存器 L

R 。当执行 BL子程序调用指令时, R14 中得到 R15 (程序计数器 PC )的备份。在其他情况下, R14 用做通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器 R14_svc 、 R14_irq 、 R14_fiq 、 R14_abt 和 R14_und 用来保存 R15 的返回值。寄存器 R15 用做程序计数器( PC )。在 ARM 状态下,位 [1:0] 为 0 ,位[31:2] 用于保存 PC ;在 Thumb 状态下,位 [0] 为 0 ,位 [31:1] 用于保存 PC 。寄存器 R16 用做当前程序状态寄存器( Current Program Status Register ,CPSR ), CPSR 可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

Page 11: 第 4 章  应用系统设计
Page 12: 第 4 章  应用系统设计

每一种非用户模式下都有一个专用的物理状态寄存器,称为 SPSR ( Saved Program Status Register ,备份的程序状态寄存器)。当异常发生时, SPSR用于保存 CPSR 的当前值,从异常退出时则可由 SPSR来恢复 CPSR 。

fiq 模式下有 7 个分组寄存器 R8_fiq~R14_fiq ,在 ARM 状态下,许多 fiq 处理都不用保存任何寄存器。 usr 、 fiq 、 irq 、 svc 、 abt 、 und 模式下有两个分组寄存器 R13 和 R14 ,而每种模式都有一个自己的堆栈指针和连接寄存器 . 。Thumb 状态下的寄存器集是 ARM 状态下寄存器集的一个子集,程序可以直接访问 8 个通用寄存器( R7~R0 )、程序计数器( PC )、堆栈指针( SP )、连接寄存器( LR )和 CPSR 。同时,在每一种特权模式下都有一组 SP 、 LR和 SPSR 。图 4.7 所示表明 Thumb 状态下的寄存器组织。Thumb 状态下的寄存器组织与 ARM 状态下的寄存器组织存在如下关系: Thumb 状态下和 ARM 状态下的 R0~R7 是相同的; Thumb 状态下和 ARM 状态下的 CPSR 和所有的 SPSR 是相同的; Thumb 状态下的 SP 对应于 ARM 状态下的 R13 ; Thumb 状态下的 LR 对应于 ARM 状态下的 R14 ; Thumb 状态下的程序计数器对应于 ARM 状态下的 R15 。以上的对应关系如图 4.8 所示。在 Thumb 状态下,高位寄存器 R8~R15 并不是标准寄存器集的一部分,但可使用汇编语言程序受限制地访问这些寄存器,将其用做快速的暂存器。使用带特殊变量的 MOV 指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用 CMP 和 ADD 指令进行比较或加上低位寄存器中的值。

Page 13: 第 4 章  应用系统设计
Page 14: 第 4 章  应用系统设计

5 .程序状态寄存器ARM920T 体系结构中包含一个当前程序状态寄存器( CPSR )和 5 个备份的程序状态寄存器( SPSR )。备份的程序状态寄存器用来进行异常处理,其功能包括: 保存 ALU 中的当前操作信息; 控制允许和禁止中断; 设置处理器的运行模式。程序状态寄存器每一位的安排如图 4.9 所示。

Page 15: 第 4 章  应用系统设计

6 .条件码标志( Condition Code Flags )N 、 Z 、 C 、 V 均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如表 4.1所示。

Page 16: 第 4 章  应用系统设计

7 .控制位CPSR 的低 8 位(包括 I 、 F 、 T 和 M[4 : 0] )称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。 中断禁止位 I 、 F :置 1 时,禁止 IRQ 中断和 FIQ 中断。 T标志位:该位反映处理器的运行状态。当该位为 1 时,程序运行于 Thu

mb 状态,否则运行于 ARM 状态。该信号反映在外部引脚 TBIT上。在程序中不得修改 CPSR 中的 TBIT 位,否则处理器工作状态不能确定。 运行模式位 M[4 : 0] : M0 、 M1 、 M2 、 M3 、 M4 是模式位。这些位决定了处理器的运行模式。具体含义如表 4.2 所示。 保留位: CPSR 中的其余位为保留位,当改变 CPSR 中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于 ARM版本的扩展。

Page 17: 第 4 章  应用系统设计

8 .异常( Exceptions )当正常的程序执行流程发生暂时的停止时,称之为异常。在处理异常之前,当前处理器的状态必须保留,这样,当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,处理器会按固定的优先级对多个异常进行处理。 ARM920T 对异常的处理按以下步骤操作:( 1 )将下一条指令的地址存入相应连接寄存器 LR 。若异常是从 ARM 状态进入, LR 寄存器中保存的是下一条指令的地址(当前 PC+ 4 或 PC+ 8 ,与异常的类型有关);若异常是从 Thumb 状态进入,则在 LR 寄存器中保存当前 PC 的偏移量。这样,异常处理程序就不需要确定异常是从何种状态进入的,程序在处理异常返回时能从正确的位置重新开始执行。例如:在软件中断异常 SWI 中,指令 MOV PC , R14_svc总是返回到下一条指令,而不管 SWI 是在 ARM 状态执行,还是在 Thumb 状态执行。( 2 )将 CPSR复制到相应的 SPSR 中。( 3 )根据异常类型,强制设置 CPSR 的运行模式位。( 4 )强制 PC 从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。进入异常处理前可以设置中断禁止位,以禁止异常处理时对中断的响应。如果异常发生时,处理器处于 Thumb 状态,则当异常向量地址加载入 PC 时,处理器自动切换到 ARM 状态。异常处理完毕之后,执行以下操作从异常返回:( 1 )将连接寄存器 LR 的值减去相应的偏移量后送到 PC 中。( 2 )将 SPSR复制回 CPSR 中。( 3 )若在进入异常处理时设置了中断禁止位,要在此清除。

Page 18: 第 4 章  应用系统设计

表 4.3总结了进入异常处理时保存在相应 R14 中的 PC值,及在退出异常处理时推荐使用的指令。

Page 19: 第 4 章  应用系统设计

应用程序中的异常处理:当系统运行时,异常可能会随时发生。为保证在 ARM 处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。当 ARM 处理器发生异常时,程序计数器 PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。当异常处理完成以后,返回到主程序继续执行。各异常向量地址如表 4.4 所示。

当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。异常优先级由高到低的排列次序为:复位、数据中止、 FIQ 、 IRQ 、预取指令中止、未定义指令、 SWI 。

Page 20: 第 4 章  应用系统设计

4.3 S3C2410X 处理器详解S3C2410X 在包含 ARM920T 核的同时,增加了丰富的外围资源,如图 4.10所示。主要片内外围模块包括: 1 个 LCD控制器,支持 STN 和 TFT液晶显示屏; 外部存储器管理( SDRAM控制器和芯片选择逻辑); 3 个通道的 UART ; 4 个通道的 DMA ,支持存储器和 I/O 口之间的传输,以猝发模式提高传输率; 4 个具有 PWM功能的 16 位定时 / 计数器和 1 个 16 位内部定时器,支持外部时钟源; 8 通道的 10 位 ADC ,最高速率可达 500kB/s , 10 位分辨率; 触摸屏接口; IIS总线接口; 2 个 USB主机接口, 1 个 USB 设备接口; 2 个 SPI 接口; SD卡接口和 MMC卡接口; 16 位看门狗定时器; 117 位通用 I/O 口和 24 位外部中断源; 8 通道 10 位 AD控制器; 电源管理。

Page 21: 第 4 章  应用系统设计

S3C2410X 及片内外围简介

Page 22: 第 4 章  应用系统设计

S3C2410X 支持大、小端模式,将存储空间分成 8 组( Bank ),每组大小是 128MB ,共计 1GB 。

Page 23: 第 4 章  应用系统设计

特殊功能寄存器 1 .内存控制器( Memory Controller )内存控制器为访问外部存储空间提供存储器控制信号,共有 13 个寄存器。

Page 24: 第 4 章  应用系统设计

2 . Nand Flash 控制器S3C2410X 支持 Nand Flash启动,启动代码存储在 Nand Flash上。启动时, Nand Flash 的前 4KB 将被装载到内部的固定地址中,利用硬件纠错码 ECC 对数据的正确性检验,然后开始执行其中的启动代码。一般情况下,该启动代码会把Nand Flash 中的内容拷贝到 SDRAM 中去,拷贝完后,主程序将在 SDRAM 中执行。操作流程如图 4.13 所示。

Page 25: 第 4 章  应用系统设计

自动引导模式流程: 复位; 如果自动引导模式使能, Nand Flash 中的前 4KB 代码拷贝到内部的小石头区域; 小石头映射到 nGCS0 ; CPU 开始执行小石头区域中的代码。Nand Flash 模式: 通过 NFCONF 寄存器设置 Nand Flash配置; 把 Nand Flash命令写入 NFCMD 寄存器; 把 Nand Flash 地址写入 NFADDR 寄存器; 读 / 写数据同时通过 NFSTAT 寄存器检测 Nand Flash 状态。读操作前或者程序执行后检查 R/nB信号。

Page 26: 第 4 章  应用系统设计

3 .时钟和电源管理S3C2410X 的主时钟由外部晶振或者外部时钟提供,选择后可以生成 3 种时钟信号,分别是 CPU 使用的 FCLK , AHB总线使用的 HCLK 和 APB总线使用的 PCLK 。时钟管理模块同时拥有两个锁相环,一个称为 MPLL ,用于 FCLK 、 HCLK和 PCLK ;另一个称为 UPLL ,用于 USB 设备。对时钟的选择是通过 OM[3:2]实现的。 OM[3:2]=00B 时,晶体为 MPLL CLK 和 UPLL CLK提供时钟源; OM[3:2]=01B 时,晶体为 MPLL CLK提供时钟源, EXTCLK 为 UPLL CLK提供时钟源; OM[3:2]=10B 时, EXTCLK 为 MPLL CLK提供时钟源,晶体为 UPLL CLK提供时钟源; OM[3:2]=11B 时, EXTCLK 为 MPLL CLK 和 UPLL CLK提供时钟。( 1 )锁相环 PLL 。锁相环最基本的结构由 3 个基本的部件组成:鉴相器( PFD )、环路滤波器( Loop Filter )和压控振荡器( VCO ),如图 4.14 所示。鉴相器是个相位比较装置,它把输入信号 Fref 与压控振荡器输出分频后的信号 Fvco 的相位进行比较,产生对应于两个信号相位差的误差电压。环路滤波器的作用是滤除误差电压中的高频成分和噪声,以保证环路所要求的性能,增加系统的稳定性。压控振荡器受控制电压的控制,使压控振荡器的频率向输入信号的频率靠拢,直至消除频差而锁定。由此可见,锁相环是个相位误差控制系统。它比较输入信号和压控振荡器输出信号之间的相位差,从而产生误差控制电压来调整压控振荡器的频率,以达到与输入信号同频。

Page 27: 第 4 章  应用系统设计

S3C2410X增加了 1个转换泵和 3个除法器来增加控制。转换泵首先对 PFD的输出信号按一定比例转换,然后传递给外部滤波器,最后由外部滤波器驱动压控振荡 VCO。除法器 P对输入信号 Fin分频产生信号 Fref,除法器M对压控振荡器输出信号分频产生信号 Fvco,分频器 S对压控振荡器输出信号分频后生成了MPLL。在环路开始工作时,如果 Fref与 Fvco频率不同,则是由于两信号之间存在固有的频率差,因此它们之间的相位差一直在变化,使得鉴相器 PFD输出的误差电压就在一定范围内变化。在这种误差电压的控制下,压控振荡器的频率也在变化。若 Fvco的频率能够变化到与 Fref相等,那么在满足稳定性条件下就在这个频率上稳定下来。达到稳定后, Fref与 Fvco “之间的频差为零,相差不再随时间变化,误差电压为一固定值,此时环路进入 锁”定 状态。这就是锁相环工作的大致过程。系统稳定后 Fref与 Fvco相等,可得输出频率MPLL与输入时钟频率 Fin的关系式:

( 8)( 2) 2sM FinMPLLP

Page 28: 第 4 章  应用系统设计

( 2 )时钟控制逻辑。时钟控制逻辑决定了所使用的时钟源,是采用 MPLL 作为 FCLK ,还是采用外部时钟。复位后, Fin直接传递给 FCLK ,即使不想改变默认的 PLLCON值,也需要重新写一遍。 FCLK 由 ARM920T 核使用, HCLK提供给 AHB总线, PCLK提供给了 APB总线。

S3C2410X 支持 HCLK 、 FCLK 和 PCLK 的分频选择,其比率是通过 CLKDIV 寄存器中的 HDIVN 和 PDIVN控制的,如表 4.8 所示。

Page 29: 第 4 章  应用系统设计

( 3 )电源管理。S3C2410X 电源管理模块通过 4 种模式有效地控制功耗: Normal 模式:为 CPU 和所有的外设提供时钟,所有的外设开启时,该模式下的功耗最大。这种模式允许用户通过软件控制外设,可以断开提供给外设的时钟以降低功耗。 Slow 模式:采用外部时钟生成 FCLK 的方式,此时电源的功耗取决于外部时钟。 Idle 模式:断开 FCLK 与 CPU 核的连接,外设保持正常,该模式下的任何中断都可唤醒 CPU 。 Power-off 模式:断开内部电源,只给内部的唤醒逻辑供电。一般模式下需要两个电源,一个提供给唤醒逻辑,另外一个提供给 CPU 和内部逻辑,在 Po

wer-off 模式下,后一个电源关闭。该模式可以通过 EINT[15:0] 和 RTC唤醒。

Page 30: 第 4 章  应用系统设计

( 4 )时钟和电源管理寄存器。S3C2410X 通过控制寄存器实现对时钟和电源的管理,相关寄存器如表 4.10 所示。

Page 31: 第 4 章  应用系统设计

4.4 单元电路设计尽管硬件选型与单元电路设计部分的内容是基于 S3C2410X 的系统,但由于

ARM 体系结构的一致性和常见外围电路的通用性,只要读者能真正理解本部分的设计方法,那么由此设计出基于其他 ARM 微处理器的系统,应该也是比较容易的。

4.4.1 电源电路设计4.4.2 晶振电路设计4.4.3 复位电路设计4.4.4 串行接口电路设计

Page 32: 第 4 章  应用系统设计

电源电路设计

Page 33: 第 4 章  应用系统设计

晶振电路设计 S3C2410X 微处理器的主时钟可以由外部时钟源提供,也可以由外部振荡器提供,如图 4.17 所示,采用哪种方式通过引脚 OM[3:2]来进行选择。 OM[3:2]=00 时, MPLL 和 UPLL 的时钟均选择外部振荡器; OM[3:2]=01 时, MPLL 的时钟选择外部振荡器; UPLL选择外部时钟源; OM[3:2]=10 时, MPLL 的时钟选择外部时钟源; UPLL选择外部振荡器; OM[3:2]=11 时, MPLL 和 UPLL 的时钟均选择外部时钟源。该系统中选择 OM[3:2] 均接地的方式,即采用外部振荡器提供系统时钟。外部振荡器由 12MHz晶振和 2 个 15pF 的微调电容组成。

Page 34: 第 4 章  应用系统设计

复位电路设计

Page 35: 第 4 章  应用系统设计

串行接口电路设计

Page 36: 第 4 章  应用系统设计

4.5 存储器系统设计 在该系统中,设计了 3 种存储器接口电路, Nor Flash 接口、 Nand Flash 接口和 SDRAM 接口电路。引导程序既可存储在 Nor Flash 中,也可存储在 Nand Flas

h 中。而 SDRAM 中存储的是执行中的程序和产生的数据。存储在 Nor Flash 中的程序可直接执行,与在 SDRAM 执行相比速度较慢。存储在 Nand Flash 中的程序,需要拷贝到 RAM 中去执行。

4.5.1 8 位存储器接口设计4.5.2 Flash 接口电路设计4.5.3 SDRAM 接口电路设计

Page 37: 第 4 章  应用系统设计

8 位存储器接口设计 由于 ARM 微处理器的体系结构支持 8 位 /16 位 /32 位的存储器系统,相应地可以构建 8 位的存储器系统、 16 位的存储器系统或 32 位的存储器系统。 32 位的存储器系统具有较高的性能,而 16 位的存储器系统则在成本及功耗方面占有优势,而 8 位的存储器系统现在已经很少使用。

Page 38: 第 4 章  应用系统设计

Flash 接口电路设计1 . Nor 和 Nand Flash 的区别Nor 的特点是 XIP ( eXecute In Place ,芯片内执行)特性,这样,应用程序可以直接在 Flash闪存内运行,不必再把代码读到系统 RAM 中。 Nor 的传输效率很高,在 1~4MB 的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 Nand 结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。( 1 )性能比较。Flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。Nand 器件执行擦除操作是十分简单的,而 Nor 则要求在进行写入前先要将目标块内所有的位都写为 0 。 Nor 的读速度比 Nand稍快一些。 Nand 的写入速度比 Nor 快很多。 Nand 的 4ms擦除速度远比 Nor 的 5s 快。 Nand 的擦除单元更小,相应的擦除电路更少。( 2 )容量和成本。Nand Flash 的单元尺寸几乎是 Nor 器件的一半,由于生产过程更为简单, Nand结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。在 Nand闪存中每个块的最大擦写次数是一百万次,而 Nor 的擦写次数是十万次。( 3 )接口差别。Nor Flash带有 SRAM 接口, Nand 器件使用复杂的 I/O 口来串行存取数据。

Page 39: 第 4 章  应用系统设计

2 . Nor Flash 接口设计

Page 40: 第 4 章  应用系统设计

3 . Nand Flash 接口电路设计

Page 41: 第 4 章  应用系统设计

SDRAM 接口电路设计

Page 42: 第 4 章  应用系统设计

4.6 JTAG 调试接口设计JTAG 是 Joint Test Action Group (联合测试行动小组)的简称,由于 IEEE

1149.1标准是由 JTAG 这个组织最初提出的,最终由 IEEE批准并且标准化的。所以 IEEE 1149.1 这个标准一般也俗称 JTAG 调试标准。

4.6.1 JTAG综述4.6.2 TAP状态机4.6.3 接口电路设计

Page 43: 第 4 章  应用系统设计

JTAG 综述 JTAG标准主要用于芯片内部测试及对系统进行仿真、调试。 JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路 TAP ( Test Access Port ,测试访问口),通过专用的 JTAG测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持 JTAG 协议,如 ARM 、 DSP 、 FPGA 器件等。标准的 JTAG 接口是 4 线:TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。 JTAG测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对多个器件分别测试。 JTAG 接口还常用于实现 ISP ( In-System Programmable ,在系统可编程)功能,如对 FLASH 器件进行编程等。1 .边界扫描在 JTAG 调试中,边界扫描( Boundary-Scan )是一个很重要的概念。边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上,所以被称为边界扫描寄存器( Boundary-Scan Register Cell )。芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边界扫描链的寄存器单元中去,然后通过 TDO 输出,这样,我们就可以从 TDO上得到相应管脚上的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,则首先需要通过 TDI把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元里去,然后将该寄存器单元的值加载到相应的芯片管脚。

Page 44: 第 4 章  应用系统设计

2 . TAP 接口利用边界扫描链可以实现对芯片的输入输出进行观察和控制,对边界扫描链的控制主要是通过 TAP控制器来完成的。在 IEEE 1149.1标准中,寄存器被分为两大类:数据寄存器( Data Register ,简称 DR )和指令寄存器( Instruction Register ,简称 IR )。边界扫描链属于数据寄存器中很重要的一种。边界扫描链用来实现对芯片的输入输出的观察和控制,而指令寄存器用来实现对数据寄存器的控制。

TAP ( Test Access Port )是一个通用的端口,通过 TAP 可以访问芯片提供的所有数据寄存器( DR )和指令寄存器( IR )。对整个 TAP 的控制是通过 TAP Controller来完成的。 TAP总共包括 5 个信号接口 TCK 、 TMS 、 TDI 、 TDO 和 TRST ,其中前 4 个是输入信号接口,最后 1 个是输出信号接口。

TCK :测试时钟( Test Clock Input ),为 TAP 的操作提供了一个独立的、基本的时钟信号, TAP 的所有操作都是通过这个时钟信号来驱动的。 TCK 在 IEEE 1149.1标准中是强制要求的。

TMS :测试模式选择( Test Mode Selection Input ),用来控制 TAP 状态机的转换。通过 TMS信号,可以控制 TAP 在不同的状态间相互转换。 TMS信号在 TCK 的上升沿有效。 TMS 在 IEEE 1149.1标准中是强制要求的。 TDI :数据输入( Test Data Input ),所有要输入到特定寄存器的数据都是通过 TDI 接口一位一位串行输入的。 TDI 在 IEEE 1149.1标准中是强制要求的。 TDO :数据输出( Test Data Output ),所有要从特定的寄存器中输出的数据都是通过 TDO 接口一位一位串行输出的。 TDO 在 IEEE 1149.1标准中是强制要求的。 TRST : JTAG复位信号( Test Reset Input ),可以用来对 TAP Controller 进行复位(初始化)。因为通过 TMS 也可以对 TAP Controller 进行复位(初始化),所以该信号接口在 IEEE 1149.1标准中是可选的,并不是强制要求的。

Page 45: 第 4 章  应用系统设计

TAP 状态机 TAP 的状态机如图 4.30 所示,总共有 16 个状态。在这些对应的状态中,标识有 D

R 的状态是用来访问数据寄存器的,而标识有 IR 的状态是用来访问指令寄存器的。

Page 46: 第 4 章  应用系统设计

2 .访问步骤TAP 状态的转换就是在 TCK 的驱动下,依靠 TMS来控制完成对指令寄存器和数据寄存器的访问。对指令寄存器的访问先于对数据寄存器的访问,系统上电后, TAP Controll

er首先进入 Test-Logic Reset 状态,在 TMS 的控制下然后依次进入 Run-Test/Idle 、 Select-DR-Scan 、 Select-IR-Scan 、 Capture-IR 、 Shift-IR 、 Exit1-IR 、 Update-IR ,最后回到 Run-Test/Idle 状态。在 Capture-IR 状态中,一个特定的逻辑序列被加载到指令寄存器中;然后进入到 Shift-IR 状态。在 Shift-IR 状态下,通过 TCK 的驱动,可以将一条特定的指令送到指令寄存器中去。每条指令都将确定一条相关的数据寄存器。然后依次进入Shift-IR 、 Exit1-IR 、 Update-IR 状态。在 Update-IR 状态,刚才输入到指令寄存器中的指令将用来更新指令寄存器。最后,进入到 Run-Test/Idle 状态,指令生效,完成对指令寄存器的访问。当前可以访问的数据寄存器由指令寄存器中的当前指令决定。要访问由上一个指令选定的数据寄存器,需要以 Run-Test/Idle 为起点,依次进入 Select-DR-Scan 、 Capture-DR 、 Shift-DR 、 Exit1-DR 、 Update-DR 状态,最后回到 Run-Test/Idle 状态。在这个过程中,被当前指令选定的数据寄存器会被连接在 TDI 和 TDO 之间。通过 TDI 和 TDO ,可以将新的数据加载到数据寄存器中去,同时,也可以捕获数据寄存器中的数据。在 Capture-DR 状态中,由 TCK 的驱动,芯片管脚上的输出信号会被“捕获”到相应的边界扫描寄存器(数据寄存器)单元中去。这样,当前的数据寄存器中就记录了芯片相应管脚上的输出信号。接下来从 Capture-DR 进入到 Shift-DR 状态中去。在 Shift-DR 状态中,由 TCK驱动,在每一个时钟周期内,一位新的数据可以通过 TDI串行输入到数据寄存器中去,同时,数据寄存器可以通过 TDO串行输出一位先前捕获的数据。在经过与数据寄存器长度相同的时钟周期后,就可以完成新信号的输入和捕获数据的输出。接下来,通过 Exit1-DR 状态进入到 Update-DR 状态。在 Update-DR 状态中,数据寄存器中的新数据被加载到与数据寄存器的每个寄存器单元相连的芯片管脚上去。最后,回到 Run-Test/Idle 状态,完成对数据寄存器的访问。

Page 47: 第 4 章  应用系统设计
Page 48: 第 4 章  应用系统设计
Page 49: 第 4 章  应用系统设计

接口电路设计

Page 50: 第 4 章  应用系统设计

4.7 综合训练之通过 JTAG 访问外设在保证电源电路、晶振电路和复位电路正常工作的前提下,通过 JTAG 接口不仅可以调试 S3C2410X ,还可以实现对外围设备的读写。

4.7.1 烧写Flash

4.7.2 访问处理器寄存器

Page 51: 第 4 章  应用系统设计

烧写 Flash 最典型的是用简易 JTAG直接烧写 Flash ,这样可以在启动 Flash 为空的情况下,将引导程序烧入 Flash 存储器中实现自启动。这种烧写方式是通过一根并口电缆和一颗信号转换芯片,借助 ARM 核内的 JTAG 调试逻辑来控制 CPU 的片选、地址和数据等信号实现的。烧写 Flash 时,首先在 PC机上运行烧写程序来控制并口模拟 JTAG 时序,并将编程代码传送到 CPU 的 JTAG控制器,利用 JTAG 的边界扫描单元,把编程数据先移入到边界扫描寄存器中。然后通过 JTAG 指令按照 Flash芯片的编程时序将数据通过地址总线和数据总线写入 Flash 存储器,实现芯片编程操作。

Page 52: 第 4 章  应用系统设计
Page 53: 第 4 章  应用系统设计
Page 54: 第 4 章  应用系统设计
Page 55: 第 4 章  应用系统设计
Page 56: 第 4 章  应用系统设计

访问处理器寄存器

选择菜单“ System Views”→“Command Line Interface”功能,该选项为 AXD Debugger 的一个命令行窗口,可在该窗口内输入各种调试命令,使用非常方便。在命令行窗口输入:>setmem 0x56000010, 0x00154555, 32>setmem 0x56000018, 0x7ff, 32>setmem 0x56000014, 0x780, 32setmem命令用于对特定的地址设置特定的值,待设定的值可以是 8 位、 16 位或 32 位。