czs调试说明书Word文件下载.docx
《czs调试说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《czs调试说明书Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
4时钟
通过时钟分发芯片MPC9447将输入的66MHz晶振信号分发为5路时钟,分别提供给CPU,SDRAM,LocalSDRAM,CPLD和电路板外部。
5复位
8260的复位逻辑有以下几种输入:
不同的复位源会有不同的复位效果。
这里要重点说明的是上电复位过程。
当外部输入信号/PORESET有效时开始上电复位流程。
在供给芯片的电压达到至少2/3Vcc以后,/PORESET有效信号还必须保持至少16个输入时钟周期。
此时CPU的输出管脚/HRESET和/SRESET都为低电平。
当/PORESET引脚由低变高时候,采样/RSTCONF的电压,以决定芯片的工作模式。
如果/RSTCONF是高电平,8260配置为从模式,如果为低则8260配置为主模式。
我们用跳线来决定这个管脚的值,调试时注意加上跳线帽。
然后MPC8260开始它的配置过程,整个配置过程需要1024个输入时钟周期,这个过程中读取硬复位配置字。
然后CPU采样MODCK[1:
3]来决定芯片的工作频率,锁相环锁定频率后,/HRESE和/SRESET分别再保持512和515个周期的低电平,然后变高,完成复位时序。
复位过程要采集四个外部配置管脚的值,分别是/RSTCONF和MODCK[1–3]。
/RSTCONF配置主从模式,MODCK[1–3]与复位配置字中的MODCK[4–7]共同决定内核和CPM的运行频率。
复位过程顺序如下:
1在/PORESET管脚的上升沿采集/RSTCONF管脚的值。
21024个时钟周期的配置期间。
3内部PORESET的上升沿采集MODCK[1–3]管脚的值。
4根据MODCK[1–7]的值锁定锁相环。
5锁相环锁定后再过512/515个时钟周期分别将/HRESET和/SRESET置为高电平。
配置过程中支持高达八个CPU的不同配置。
在多CPU系统中每个CPU的/RSTCONF管脚因按下表连接。
即主CPU接低电平,从CPU接主CPU的地址线的A0、A1等管脚。
配置期间CPU从CS0选中的器件(am29lv040b)中读取4个字节的复位配置字。
以下是示波器捕捉到的复位期间的/sreset(黄)和/cs0(蓝)信号,刻度每大格是5微秒。
复位期间片选信号CS0每个周期约为500ns,在/sreset低电平期间CS0共有八组低电平,每组包含四个时钟周期,分别读取4个字节的复位配置字。
由于这里是单CPU系统,实际上只用了cs0信号的第一组低电平进行配置。
这组低电平期间,存储控制器其按照八位的数据总线接口访问BOOTROM(am29lv040b),从BOOTROM地址0x00,0x08,0x10,0x18处读取四个字节的复位配置字。
MODCK[1–7]的取值详见参考手册[1]。
复位过后CPU从CS0选中器件的0x100地址处开始取程序执行(PowerPC的复位异常入口地址),数据总线宽度由复位配置字的BPS位确定,可以为8位、16位、32位或64位。
6硬复位配置字
系统上电复位配置过程中,CPU默认访问CS0控制的外部存储空间,获得32位长的一个硬复位配置字。
模块的CS0连接的是BOOTROM(am29lv040b)。
硬复位配置字共有4个字节,分别存储在BOOTROM的0x00、0x08、0x10、0x18地址中。
负责系统启动的代码则从BOOTROM的0x100地址开始存放。
上电复位过程结束后,CPU从BOOTROM的0x100地址开始取指令执行。
硬复位配置字的内容如表2-1所示。
表2-1硬复位配置字
硬复位配置字的设置至关重要,关系到整个系统是否能够正常工作起来。
EARB=0,总线仲裁模式的选择,为内部仲裁。
EXMC=0,没有外部存储控制器。
CDIS=0,核是激活的。
EBM=0,总线模式为单总线模式,MPC8260有两种总线模式,即60X单总线模式和60X兼容总线模式,一般要是接二级Cache的话则选择后者,本系统中没有接二级Cache,所以选择前者。
BPS=01,引导ROM的空间为8bit数据宽(am29lv040B是8位数据宽度)。
CIP=0,CPU复位向量地址为0xFFFn_nnnn
ISPS=0,对外部主控制器而言,MPC8260的内部存储空间是以64bit宽度访问。
L2CPC=00,二级Cache的管脚配置。
DPPC=00,数据奇偶校验的管脚配置。
ISB=010,内部空间的基地址的匹配空间为0x0F00_0000。
BMS=0,引导空间的地址区域,为0xFE00_0000—0xFFFF_FFFF。
BBD=0,总线忙使能(即复用管脚设置成了总线忙信号管脚),这样总线忙时我们能看到电源灯旁边的总线灯在闪烁。
MMR=00,总线请求线没有屏蔽。
LBPC=00,局部总线的管脚配置成局部总线的功能。
APPC=00,地址奇偶校验管脚配置。
CSl0PC=01,芯片选择第10管脚配置为/BCTL1。
MODCK_H=0110,输入时钟频率为66MHz,CPM的频率为166MHz,核的频率为266MHz。
注意此时须保证MODCK[1:
3]=111,这三个管脚也是由跳线决定的。
所以这种情况下硬件配置字为0x04,0x02,0x00,0x46,定义在BSP的config.h文件中,编译后被烧写进BOOTROM的0x00,0x08,0x10,0x18地址处。
硬复位配置字的有些位对于复位过程没有影响,可以在开始执行程序后通过程序改变,主要位于SIUMCR寄存器中。
另外ISB定义了内部存储空间的基址,MPC8260的内部空间的地址是由这个基址加偏移地址所确定。
偏移地址是固定的,基址可以由程序改变。
我们在复位配置时将基地址设为0x0,在程序中再修改。
/*
*initializetheIMMRregisterbeforeanynon-coreregisters
*modification.
*/
lisr4,HIADJ(0x000101A8)
addir4,r4,LO(0x000101A8)
sync
lisr5,HIADJ(INTERNAL_MEM_MAP_ADDR)
addir5,r5,LO(INTERNAL_MEM_MAP_ADDR)
stwr5,0(r4)/*initializetheIMMRregister*/
比较重要的还有,CS10PC决定将对应管脚定义为/CS10还是/BCTL1,由于我们要用/BCTL1控制缓冲芯片的使能管脚,所以要选择/BCTL1。
DPPC设置一些中断管脚的使用,在需要用到中断管脚时应注意这些位的设置是否正确。
这些项在SIUMCR中,可以由程序改变。
我们选择的配置频率如下表:
MODCK_H
MODCK[1–3]
InputClockFrequency
CPMMultiplicationFactor
CPMFrequency
CoreMultiplicationFactor
CoreFrequency
0110_111
66MHz
2.5
166MHz
4
266MHz
7初始化程序
复位过后,CPU从BOOTROM的0x100处开始执行程序。
编译后在这个位置的程序是BSP文件夹下的rominit.s,也即整个平台的入口程序,是用PowerPC汇编语言编写的,主要对8260的一些重要的SIU寄存器和储存控制器进行初始化,还有cache使能,段寄存器、浮点寄存器等的初始化。
各个寄存器在内部空间的偏移地址可以查手册第三章MemoryMap。
存储器控制器(MEMC)的初始化是初始化程序重要的一部分,决定了各种外部存储器和设备能否正常工作。
MPC8260包含12个基本寄存器BRx(BR0-BR11)和12个选择寄存器ORx(OR0-OR11),分别对其12个存储器进行设置。
初始化主要是对基本寄存器和选择寄存器、SDRAM的模式寄存器、刷新定时器寄存器、刷新定时器预定标寄存器等进行设置。
BRx(BR0-BR11)包含各存储器的基地址和地址类型,同时包含该存储器判决和存储器操作时的存储机制的选择。
ORx(OR0-OR11)定义了存储体的大小和接入判决,ORx根据BR[MS]的设置可以支持三种不同的操作模式:
SDRAM、GPCM、UPM。
对于选择GPCM机制的存储控制器,只需要设置相应的BRx和ORx,对于选择SDRAM机制的存储控制器,还需要对模式寄存器、刷新定时器寄存器以及刷新定时器预定标寄存器进行正确的初始化。
模式寄存器规定了SDRAM内存管理机制的一些设置,包括两种:
60X总线SDRAM模式寄存器PSDMR和局部总线SDRAM模式寄存器LSDMR。
模式寄存器设置该SDRAM控制器的地址复用方式、刷新操作和一些延时参数,这些参数与具体用到的SDRAM芯片有关,一般在相应的数据手册中可以查到。
60X总线SDRAM由四片MT48LC16M16A2芯片组成,每片该芯片的容量为4x4Mx16Bits,总共128M字节空间,四片芯片为位扩展,组成容量为4x4Mx64Bits的SDRAM空间,13根行地址线,9根列地址线,2根bank选择线,64根数据线,行列地址复用。
由于是64位数据线,所以地址线的低三位,即A29、A30、A31不用,行列地址复用如下:
列地址A20A21A22A23A24A25A26A27A28
行地址A7A8A9A10A11A12A13A14A15A16A17A18A19
根据MPC8260手册中的SDRAM地址复用表,PSDMR[SDAM]应设为001,OR2[ROWST]设为0010,即行地址起始于A7,OR2[NUMR]设为100,即有13根行地址线。
原理图中,8260的地址线A28-A16依次接内存条的地址线A0—A12,8260的A15、A14作为bankselect接内存条的bankselect线BA1、BA0。
由于bankselect管脚作为存储地址的A5、A6,复用引脚A14、A15,所以PSDMR[BSMA]应设为001。
在SDRAM地址线中,一般第11根地址线也作为命令控制用,特殊标为A10/AP,8260中有一根SDAl0信号线,专门用于此目的。
实际连线时应将SDAl0连至SDRAM的A10/AP。
SDAl0是作为8260地址线的A18,由于地址复用,对应的引脚应为行地址线的A9,故PSDMR[CSDAl0]应设为010。
SDRAM的上电初始化必须经过以下步骤,才能进行正常的读写操作。
(1)执行PRECHARGEALLBANKS命令。
(2)执行8次CBRREFRESH命令。
(3)执行MODESET命令初始化模式寄存器。
8260通过设置PSDMR[OP]来执行这些命令,具体做法是:
(1)设置PSDMR[OP]=101,然后向SDRAM的任意地址写入0xFF,执行
PRECHARGEALLBANKS命令。
(2)设置PSDMR[OP]=001,然后连续8次向SDRAM的任意地址写0xFF,执行8次CBRREFRESH命令。
(3)设置PSDMR[OP]=011,然后向SDRAM的任意地址写0xFF,执MODESET命令初始化模式寄存器。
此后就可以对SDRAM进行正常的读写操作了。
SDRAM刷新定时器预定标寄存器MPTPR和刷新定时器寄存器PSRT共同决定了60X总线上所挂的SDRAM的刷新周期。
从SDRAM的数据手册中可以查到总共的刷新周期refreshperiod=64ms,而此SDRAM有13根地址线,所以每一行的刷新间隔为64ms/8192=7.81us,刷新命令的间隔必须小于这个值。
根据8260手册中给出的刷新周期公式,当设定PSRT=0x0E和MPTPR=0x2000时,刷新周期为7.5us,符合刷新要求。
8调试建议
1硬件调试步骤:
1首先调好IO电压和内核电压,给8260供电。
加入时钟电路,检查系统晶振的频率和波形是否符合要求。
在总线未接任何设备前,可先看手动复位PORESET低电平时是否能够驱动/SRESET和/HRESET为低电平。
如果可以则初步判定CPU是正常工作的。
同时要注意跳线的配置是否正确。
也可以通过仿真器来看CPU是否正常。
2加入CPLD和BOOTROM并烧写CPLD程序和bootrom.bin。
加入缓冲芯片和SDRAM,要确保SDRAM初始化成功。
3逐步增加外围设备模块,逐个进行调试。
最先增加的模块是串口,在调通串口后,许多调试信息都可以通过串口打印到超级终端上。
从软件看,首先根据最小的需要修改BSP,生成BOOTROM进行调试。
串口之后是调试网口,网口调通后可以打开Tornado的目标服务器,然后可以使用WShell、WindView、Debugger等工具来观察、调试目标板上的程序。
4调试TFFS文件系统驱动程序,要先对FLASH进行格式化,成功后系统可以通过TFFS文件系统从FLASH中加载,至此核心模块部分的开发基本已经完成。
5扩展部分调试。
2搭建开发平台
嵌入式系统通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。
宿主机上有一个集成开发环境(IDE)来辅助我们的软件开发,即运行在WindowsXP的环境下的Tornado2.2。
Tornado包含三个高度集成的部分:
运行在宿主机和目标机上的强有力的交叉开发工具和实用程序;
运行在目标机上的高性能、可裁剪的实时操作系统VxWorks;
连接宿主机和目标机的多种通讯方式,如:
以太网,串口线,仿真器等。
运行于目标机的目标代理(TargetAgent)遵循WDB(WindDebug)协议,允许目标机和主机上的开发工具相连。
目标代理是以VxWorks的一个任务(tWdbTask)的形式运行的。
Tornado目标服务器(TargetServer)向目标代理发送调试请求。
默认情况下,目标服务器和目标代理通过网络进行通信,但是用户可以改变通信方式。
主机与目标机的连接如图所示。
主机与目标机的连接
另外,在系统初始的硬件调试阶段,可使用带USB接口的仿真器Visionprobe通过宿主机上的调试环境workbench对目标板进行调试。
MPC8260能正常启动后,可以通过仿真器来查看MPC8260内部空间状态,如图所示。
Workbench界面截图
当串口调通后,超级终端可以显示系统启动过程中的打印信息。
而当网口调通之后,目标机能够通过网线下载并启动VxWorks,如图所示。
网线的连接可以直接讲目标板与宿主机通过一根网线连接,也可以将两者分别连交换机,通过交换机进行通信。
VxWorks启动过程串口终端界面
如图中的启动行参数flags为0x80,即通过TFTP下载VxWorks映像,需要借助主机的小工具Tftp32d.exe,如图所示.
图Tftp服务器程序界面
VxWorks通过网口启动起来后,使用主机Shell工具如图所示。
Tornado下的Wshell
在Tornado开发环境中,开发工具是驻留在主机上的,但是也可以根据需要将基于目标机的Shell和装载/卸载组件加入VxWorks。
目标机Shell如图所示。
图串口终端输出的目标机shell
实现人机界面后,将原本通过串口打印到主机超级终端的目标机Shell重定向后显示到显示屏中,如图所示。
图显示器输出的目标机shell