- UID
- 872238
|
(1)对处理器相关寄存器进行初始化:主要是关于处理器状态的寄存器(MSR、SRR1、SIUMCR等),中断、时钟相关模块(SYPCR、SCCR、PLPRCR、TBSCR等)。
(2)对BDM调试端口的初始化:包括调试使能寄存器DER、支持指令断点的寄存器ICTRL等。
(3)对片级、板级内存映射的初始化:包括内部内存映射寄存器IMMR,内存控制相关寄存器OR0~0R7、BR0~BR7等。它们主要功能是地址映射、片选信号选择、内存控制器选择(UMPA、UMPB、GPCM)。如果选择UPM,由于UPM控制采用微指令方式,而这些微指令根据内存的不同(SRAM、SDRAM、DRAM等),需要设计人员自行编写代码写入MPC860内部存储区相应位置。对于需要实时刷新的存储体(如SDRAM),还需设置刷新控制微指令。
上述初始化代码得以执行,一方面依赖于目标机MPC860提供的调试接口支持,另一方面也需要宿主机GDB的支持。对于宿主机系统,可能选择Linux,在其下配置GBD;也可以选择Windows2000,使用可视化的调试工具LambdaTools GDB(Coretek公司产品,不支持硬件断点),或者使用BDI2000(支持硬件断点的仿真器)。不管使用哪种调试工具,都可以使用该调试器能够识别的脚本文伯存放初始化指令。这些脚本在功能上是等效的,指令的描述一般都采用如下格式:
操作码 寄存器 数值
如在嵌入式Linux下SDRAM初始化的代码片断为:
mpcbdm spr MDR=0x1FF77C35
mpcbdm spr MDR=0xEFEABC34
mpcbdm spr MDR=0x1FB57C35
……
而在Windows2000下使用BDI2000代码为:
WUPM 0x00000005 0x1FF77C35
WUPM 0x00000006 0xEFEABC34
WUPM 0x00000007 0x1FB57C35
……
脚本描述的指令执行后,MPC860按照预先的设想进入一个可以正常工作的状态,可以用装载器将程序下载到SDRAM中调试执行。这个程序主要包含中断表、操作系统和应用程序映象两部分,其格式可以为bin、elf、coff等。图1给出了下载完毕后的内存映象。
当程序下载完成后,PC指针指向Image代码段(text段)的首条指令,可以利用调试器提供的命令开始调试。
2 固化模式的系统引导
2.1 概述
经过调试后,OS和上层应用程序构成的Image的正确性得到了保证,但是这个Image不能自主运行。因为调试模式下,是通过BDM接口初始化处理器,并且通过BDM接口将程序下载到RAM中去运行。实际应用环境中,Image必须被存储在非易失性存储器中,如Flash、EPROM等,本文选择Flash。系统启动时,处理器执行一段引导程序替代调试模式下的调试脚本和装载程序的功能。启动代码主要考虑以下几个问题:
(1)系统上电和复位时程序如何执行,需要初始化哪些寄存器,重点仍然是内存映射相关部分;
(2)启动代码为几部分,每部分代码应该全部还是部分放到Flash或者RAM中执行;
(3)在时间效率和空间效率的折衷。
2.2 上电初始化
在两种引导模式下,上电初始化总是必要步骤。它涉及各种核心寄存器初始化、地址映射等问题的处理。
2.2.1 地址映射 |
|