第七章系统控制2020/1/172第七章系统控制7.1嵌入式跟踪宏单元7.2复位单元、锁相环及时钟控制器7.3系统加载模式选择7.4加电自举引导操作7.5JTAG/ICE接口3嵌入式跟踪宏单元4第七章系统控制7.1嵌入式跟踪宏单元7.2复位单元、锁相环及时钟控制器7.3系统加载模式选择7.4加电自举引导操作7.5JTAG/ICE接口5复位单元复位模块控制或产生所有MC9328MX1用到的系统复位信号。复位模块产生两种截然不同的结果:全局复位ARM920T处理器复位。6全局复位和处理器复位全局复位:全局复位需要同时置3个信号有效(HRESET、RESET_DRAM、CORE_TRST),并且这些信号需在14个CLK32周期内保持有效。RESET_DRAM信号须比HRESET、CORE_TRST早给出7个CLK32周期,这7个周期的时间提供给DRAM足够时间执行任何必要的自刷新操作。当32kHz晶振运行时,在POR引脚上持续至少4×32kHz时钟的高电平,则可产生全局复位源。ARM920T处理器复位:任何有效的全局复位信号将复位ARM920T处理器,并将所有相关的外围设备恢复至缺省状态。在内部复位失效后,ARM920T处理器开始从加电自举ROM中、从SyncFlash中或从CS0空间中取出指令。7锁相环及时钟控制器为产生MC9328MX1所需的宽范围片上时钟频率,核心时钟发生器使用一个两级锁相环。第一级为预乘锁相环。若输入晶体振荡频率为32.768kHz,预乘器将其扩大至原有的512倍,即16.78MHz。如果输入晶体振荡频率为32kHz,预乘器将其倍频为16.384MHz。第二级为数字锁相环(DPLL),用于产生由系统需求决定的输出频率并提供给整个系统使用。这两个DPLL(MCUDPLL和SystemPLL)使用数字和混合型的模/数芯片为无线通信和其他的应用提供时钟发生器。8锁相环及时钟控制器MC9328MX1的时钟控制器MC9328MX1可在一个低频和两个高频时钟源间进行选择,旁路逻辑的使用可为ARMTDMI核心以及系统的其余部分提供时钟:32kHz外部晶体;16MHz外部源;来自外部蓝牙RF模块的16MHz时钟。9低频时钟源MC9328MX1可将32kHz、32.768kHz或38.4kHz的晶体作为外部时钟源使用。在本节中,低频晶体指的是32kHz晶体。外部32kHz晶体给出的信号是送往实时时钟(RTC)的CLK32信号源。32kHz晶体的输出是预乘器PLL的输入,产生16.384MHz的信号,并输入MCUPLL(若使用32.768kHz的晶体,则产生16.78MHz的信号,若使用38.4kHz的晶体,则产生19.66MHz的信号。)MCUPLL的输出传给预定标器模块(PRESC),为ARMTDMI产生快时钟信号。10低频时钟源预乘器锁相环16.384MHz的输出同样可作为系统锁相环的源,通过设置时钟源控制器寄存器中的System_SEL位,由单个32kHz晶体振荡器产生所有系统时钟。11高频时钟源系统锁相环产生USBPLLCLK信号作为源供以下时钟信号使用:CLK48M——用于USB;HCLK和BCLK——HCLK为MC9328MX1系统时钟,BCLK送给ARMTDMI核心;外围时钟1、2、3——外围时钟(PERCLK)为集成以及外部设备提供时钟信号。有两种外部高频时钟源供系统PLL使用,即外部16MHz振荡器或蓝牙参考时钟信号。依据时钟源控制寄存器中CLK16_SEL位的设置对源进行选择。12MC9328MX1电源管理上电时PLL的操作;唤醒时PLL的操作;ARM920T的低功率模式;SDRAM电源模式;时钟控制器电源管理。13MC9328MX1电源管理1.上电时PLL的操作:晶体振荡器在初始上电的几百毫秒内开始振荡。当复位信号持续有效时,PLL开始执行锁定序列,在晶体振荡器稳定后锁定1ms的时间。在上锁后,系统时钟为缺省的系统PLL输出频率,其输出频率为96MHz(当使用32kHz晶体时)。2.唤醒时PLL的操作:当设备在停止模式下被事件唤醒时,DPLL将在300μs内锁定。晶体振荡器在初始上电后一直持续振荡,因此晶体启动时间并不是一个要素。当PLL输出时钟一锁定便开始工作。14MC9328MX1电源管理3.ARM920T的低功率模式:MC9328MX1提供了两种节能模式——休眠(Doze)和阻塞(Stop):阻塞模式时,MCUPLL和系统PLL停止工作,只有32kHz时钟继续运转。休眠模式时,CPU等待中断指令的到来。这些模式由时钟控制逻辑和CPU指令序列进行控制,多数外围模块可通过外围总线的时钟门电路使能或禁止进来的时钟信号(PERCLK1、2、3)。15MC9328MX1电源管理4.SDRAM电源模式:当SDRAM控制器(SDRAMC)被使能时,外部的SDRAM工作在分布式刷新或自刷新模式下。SDRAMC唤醒等待时间需要大约20个系统时间周期(HCLK)。当处于SDRAM周期时,SDRAMC从自刷新模式中唤醒。在休眠模式,SDRAM进入自刷新状态。当一个总线周期访问SDRAM或SyncFlash时,控制器被唤醒并完成总线周期,然后返回自刷新模式。5.时钟控制器电源管理:MC9328MX1的电源管理是通过有效控制时钟系统的负载周期来完成的。16第七章系统控制7.1嵌入式跟踪宏单元7.2复位单元、锁相环及时钟控制器7.3系统加载模式选择7.4加电自举引导操作7.5JTAG/ICE接口17系统加载模式选择MC9328MX1系统复位时的操作系统引导模式由4个外部输入引脚BOOT[3:0]的配置决定,这些引脚控制以下功能:EIM模块CS0引导功能;控制SyncFlash片选(CSD1)SDRAM控制器引导功能。18第七章系统控制7.1嵌入式跟踪宏单元7.2复位单元、锁相环及时钟控制器7.3系统加载模式选择7.4加电自举引导操作7.5JTAG/ICE接口19加电自举引导操作加电自举(Bootstrap)模式设计用于通过UART1或UART2控制器初始化一个目标系统,下载程序或数据到目标系统的RAM中。在程序下载完毕后,程序可运行,可对错误分析提供简单的调试环境,还可提供存于闪存中的更新程序的通道。加电自举模式有以下性能:允许使用UART1或UART2初始化系统并为系统存储器下载程序和数据;允许执行命令,运行存储于系统存储器中的程序;支持可选数据大小的存储器和寄存器读写(字节、半字或字);为ARM920T向量表存储、指令存储及执行提供8字指令缓冲区。20加电自举操作的一般描述进入加电自举模式;加电自举记录格式;在引导加载程序中寄存器的使用;设置RS-232终端;改变通信速率。21第七章系统控制7.1嵌入式跟踪宏单元7.2复位单元、锁相环及时钟控制器7.3系统加载模式选择7.4加电自举引导操作7.5JTAG/ICE接口22扫描链和JTAG接口ARM920T处理器内部有6个扫描链,可允许对EmbeddedICE宏单元观察点单元测试、调试以及编程。这些扫描链受控于JTAG类型的测试访问端口(TAP)控制器。ARM920T还提供可选的第7个扫描链。其目的是用于封装器件填充物周围的外部边界扫描链。ARM920T处理器的6个扫描链可称之为扫描链0、1、2、3、4和15。23JTAG状态机串行测试和调试过程应协同JTAG状态机一起介绍。复位JTAG接口包含状态机控制器,也叫TAP控制器。上电后为了强制TAP控制器进入正确状态,必须给nTRST信号叫一个复位脉冲,或者JTAG状态机必须在测试逻辑复位状态中作周期循环。在JTAG接口可以使用之前,nTRST信号必须先被置为低,然后再为高。如果不想使用边界扫描接口,可将nTRST输入信号永久置为低。24JTAG状态机上拉电阻IEEE1149.1标准指出,TDI和TMS必须有内部上拉电阻。为了减少近台电流吸收,这些电阻没有放入ARM9TDMI内核中。因此,测试接口的4个输入(TDO、TDI、TMS及TCK)必须驱动到合适的逻辑电平,以获得正常的电路操作。指令寄存器指令寄存器长度为4位,没有奇偶校验位。在CAPTURE-IR控制器状态将固定值加载到指令寄存器中。25公共指令在公共指令的描述中,在TCK的上升沿对TDI和TMS采样。TDO上所有的输出变化都在TCK下降沿发生。EXTEST(0000B)SCAN_N(0010B)INTEST(1100B)INCODE(1110B)BYPASS(1111B)CLAMP(0101B)HIGHZ(0111B)CLAMPZ(1001B)SAMPLE/PRELOAD(0011B)RESTART(0100B)26测试数据寄存器在TDI和TDO之间可以连接的测试数据寄存器有如下7个:旁路寄存器;ARM920T器件识别(ID)码寄存器;指令寄存器;扫描链选择寄存器;扫描链0、1、2和3;扫描链6;扫描链4和15,ARM920T内存系统。27旁路寄存器目的:通过提供TDI和TDO之间的路径,在扫描测试期间对期间旁路。长度:1位操作方式:当BYPASS指令是指令寄存器中的当前指令时,串行数据在SHIFT-DR态以1个TCK周期的延迟从TDI传到TDO。旁路寄存器没有并行输出。在CAPTURE-DR态,从旁路寄存器的并行输入端装入0。28ARM920T器件识别(ID)码寄存器目的:读32位器件识别码。不提供可编程的识别码。长度:32位操作模式:当IDCODE指令是当前指令时,将ID寄存器选作TDI和TDO之间的串行路径。ID寄存器没有并行输出。在CAPTURE-DR态,32位器件识别码从其并行输入端加载到ID寄存器。29指令寄存器目的:变换当前的TAP指令。长度:4位操作:在SHIFT-IR态,将指令寄存器选作TDI和TDO之间的串行路径。在CAPTURE-DR态,将0001B加载到该寄存器。这个值在SHIFT-DR态加载输出,同时装入新值。复位时,IDCODE成为当前指令。30扫描链选择寄存器目的:变换当前活动的扫描链。长度:5位操作模式:在SHIFT-DR态,作为当前指令,SCAN_N用来选择寄存器作为TDI和TDO之间的串行路径。在CAPTURE-DR态,将10000B加载入寄存器。在UPDATE-DR态,由寄存器的值选择一个扫描链作为当前活动的扫描链。31扫描链0、1、2和3这些扫描链允许为了编程目的对内核逻辑和EmbeddedICE宏单元进行串行访问。每个扫描单元可以执行两个基本功能:捕获和移位。32扫描链0、1扫描链0目的:主要用于器件之间的测试(EXTEST)和内核测试(INTEST)。使用SCAN_N指令选择扫描链0。长度:184位扫描链1目的:主要用于调试。使用SCAN_NTAP控制器指令选择扫描链1。长度:67位33扫描链2、3扫描链2目的:允许访问EmbeddedICE硬件寄存器。从TDI到TDO的访问链是读/写、寄存器地址位4~0、数据值位31~0。长度:38位扫描链3目的:允许ARM920T控制一个外部边界扫描链。长度:用户自定义。34扫描链6目的:可以使用扫描链6对ETM9中的寄存器编程。长度:链长度为40位,包括一个32位数据域、一个7位地址域、一个读/写位。35扫描链4和15在调试状态的入口处,调试器必须提取并保存CP15的状态。推荐将高速缓存器和MMU关闭,以避免对存储器的调试访问改变这些状态。在这一点上,调试器可以决定存储器系统的状态。当处在调试状态下时,调试器可以观察到ARM920T存储器系统的状态。包括CP15、高速缓存、MMU、PATAGRAM。扫描链4和15即是用于实现此功能。