
快速入门指南
通常情况下,用户拿到的Wind River OCD产品包含:配套软件Workbench OCD(含License);硬件仿真器(Wind River Probe;Wind River ICE;Wind River ICE 2),仿真器会随硬件带有至少一种JTAG连接头。
其中Probe和ICE 2使用相同的JTAG连接头52-pin转n-pin,典型情况下,n对于PowerPC来说是16,对于MIPS来说是14,对于ARM来说是20,对于ColdFire是26,对于MPC8xx是BDM 10-pin(请注意,ICE 2目前不支持BDM和ColdFire,Xscale)。
而ICE使用一种叫做Personality Module的连接模块,这种模块会依照不同处理器进行区分,相对复杂些,共分为:PowerPC 16-pin(MPC82xx,MPC83xx,MPC85xx,
MPC86xx,MPC52xx,MPC74xx);BDM 10-pin;PowerPC44x 16-pin;PowerPC40x 16-pin;ColdFire 26-pin;ARM 20-pin;Xscale 20-pin;MIPS 14-pin。除此以外还用一种用于Xilinx V5 PPC440(参考板ML507)的14-pin的2mm小连接头,Wind River提供用于ICE和ICE 2的16-pin转14-pin的转接头。
还提供不同管脚的连接头,
,详细请参考以上均为典型应用中的连接头类型,
,Wind River还提供不同管脚的连接头
注:以上均为典型应用中的连接头类型
文档。
PUF文档一.启动Workbench
首先需要安装Workbench OCD软件,在软件DVD根目录下执行setup.exe
(Windows),setup.linux(Linux),给定安装目录,Lincense文件。安装完毕后,启动Workbench,Windows下选择开始>程序>Wind River>Wind River Workbench;Linux下执./startWorkbench.sh。
会出现Workspace Launcher,
输入将来要做为工作目录的文件夹路径。
Workbench完全启动后,会出现Welcome画面
点击Workbench图标,出现Quick Target Launch dialog画面。
在这个画面中,可以建立新的连接,或管理已有的连接(仿真器和目标板)。如果以前建立过多种连接,会在画面右侧的Defined Launches里列出来。这个连接管理工具也可以通过点击Workbench工具栏上的OCD Quick Launch按钮重新进入。
二.仿真器的连接
1. 连接Wind River ICE
1.1 配置ICE的IP地址
a.将Wind River ICE SX连接到网络。ICE在背面有两个以太网口:一个是10BaseT 端口,另一个是10/100BaseT端口自适应。将以太网线一端连接ICE,另一端连
接网络。
b.将ICE SX的串口连接到主机串口。将随ICE自带的串口线一端RJ-45适配头连接到ICE背部的RS-232端口,另一端DB-9连接头连接到主机的串行COM口。
注意注意:RS-232在ICE 后面板上后面板上,不要将RS232端口和ICE 前面板上的TGTCONS 混淆。
c .
在Workbench 工具栏,选择Window>Open Perspective>On Chip Debug 。 d .
选择Window>Show View>Terminal 。 e . 在Terminal 串口,选择Setting 图标,进行串口参数设置。
f . Connection Type 选择Serial ;Port 选择COM1,Baud Rate 选择9600,Data
Bits 为8,Stop Bits 为1,Parity 为None ,Flow Control 为None ,点击OK 。 g . 此时Terminal 进入>NET>提示符,输入ethsetup ,进入以太网设置菜单:
如果网络中有DHCP服务器,并用此方式,选择1,Display Basic IP parameters,可以看到ICE通过DHCP获得的IP地址。
如果给ICE设置静态IP,选择2,Modify Basic IP parameters,会进入第二个菜单;选择1,Enter the IP manually,设置地址,掩码和网关。
h.配置完IP参数后,会回到Ethesetup菜单,保存选择8,按回车。
i.选择9退出Ethsetup菜单。
j.要使设置生效,需要重启Wind River ICE SX,把开关置到RESET并回到ON。(开关有三档:RESET, ON, OFF)
k.此时配置网络完毕,可断掉串口连接。
1.2 连接ICE
a.将ICE连接到目标板。ICE通过一条51-pin的电缆和personality module连接到目标板上的JTAG或BDM接口。Personality module的管脚1标记为白点。确认
其和板上JTAG管脚1对应。如果空间不足,可以用延长线连接到目标板。
b.将5-pin DIN的电源线圆头连接到ICE背部的电源接口,电源要求110-240 VAC 50/60 Hz。
c.上电,并将开关置于ON。
d.建立目标板连接,请参看后面章节。
2. 连接Wind River ICE 2
a.将以太网线连接到Wind River ICE 2背部的千兆网口。
b.另一端连接到主机网络设备。Wind River ICE 2缺省采用DHCP,你的DHCP服务器会自动分配IP地址。IP地址会显示在Wind River ICE 2前面的LCD屏上。
c.连接到主机后,通过随ICE 2自带的适配头连接到目标板上的JTAG或BDM接口。注意ICE 2和目标板JTAG管脚1的对应。
d.将52-pin的电缆连接到ICE 2前面的RC 1 run control端口。
e.将电缆另一端连接到自带适配头。
f.为Wind River ICE 2上电。ICE 2电源支持110-240 VAC 50/60 Hz到12V DC@5.5A 的转换。包含4芯DIN连接口。按下ICE 2前端的Power开关,LED屏将点亮。
。
接口的热插拔。
注: Wind River ICE 2支持对目标板JTAG接口的热插拔
3. 建立目标连接
现在,主机、仿真器和目标板都已经连接好,需要在Workbench中建立目标连接,以使仿真器能够控制处理器的工作。
a. 在Workbench的左下角可以看到Remote Systems的窗口。
b. 在Remote Systems 窗口中点击Define a connection to remote system 来启动New
Connection Wizard 。
c. 在连接列表上,选择Wind River OCD Probe Connection ,Wind River OCD ICE
Connection ,或Wind River OCD ICE 2 Connection 。
如果用的是ICE SX 或ICE 2,会进入ICE 通讯设置。选择Specify all communication setting manually ,并点击Next 。
如果是Probe ,直接点击Next 。
d. 接下来会要求指定目标处理器类型或板卡文件(board file),板卡文件将在后面介绍。
e. 点击Select 。在随后的列表中选择处理器类型,点击OK 。
注意注意::如果目标处理器包含一个扫描链上的多个逻辑设备如果目标处理器包含一个扫描链上的多个逻辑设备((例如多核例如多核,或包含其它FPGA ,CPLD 设备设备),),),必须指定板卡文件必须指定板卡文件(board file)。
f. 指定仿真器连接。
如果是Probe ,你的Probe 序列号会自动出现在USB Device Names 区域;如果是ICE SX ,在Emulator Hostname/IP Address 中输入IP 地址;如果是ICE 2,将前面LED 屏上显示的IP 地址输入到Emulator Hostname/IP Address 中。
g. 点击Next 。
h. 后续的几步均采用缺省设置,点击Next 直到进入Connection Summary 画面。
i. 点击Finish 完成连接设置。
Workbench 将建立连接,在Remote Systems 窗口会显示连接项。
4. 向目标板下载代码
开始调试程序之前,你需要初始化目标板处理器,设置寄存器。分为两步来实现:首先在仿真器内存中设置寄存器,然后利用IN 初始化命令将仿真器中的寄存器设置复制到目标板上。
Wind River 仿真器采用底层命令SCGA 来设置寄存器的值。这些底层命令的集合被存储在被称为寄存器文件寄存器文件
寄存器文件的脚本里,一种扩展名为*.reg 的文本文件。Wind River 硬件参考设计板的寄存器文件在installDir /workbench-3.x/ocd/build /RegisterFiles 目录中。
Wind River 还提供大量用于通用板卡的寄存器文件。查询支持的板卡和寄存器列表,请参考https://portal.windriver.com/windsurf/appnotes/hwTools/index.html 上的
Application Note313:Register Files/Board Files Cross-Reference 。
如果没有需要的寄存器文件,或板卡没有程序来初始化处理器的寄存器,那么需要建立一个寄存器文件。更多信息,请参考Wind River Workbench for On-Chip Debugging User Tutorials: Configuring Target Registers 。你可以在不设置寄存器情况下调试,只是此时不可以访问存储器和外设。
要配置寄存器,初始化目标板,下载代码和符号信息到目标板中,执行以下步骤:
5.1 在Remote Systems 窗口,选中目标连接的名字,点击Reset and download setting for this core 。随后Reset and Download 窗口出现。
5.2指定Script选项。
5.3选择Play script file,点击Browse,选择寄存器文件。
5.4指定Download选项。
5.5点击Add Files,找到installDir/standalone-
1.0/samples/c_demo_sa/target/cdemo/Debug, 选择cdemo.elf,点击Open。
5.6确认右侧的Download和Load Symbols被选中,Verify设为None。
5.7其余采用缺省设置,点击Debug,OCD Console窗口出现。OCD Console显示Workbench下载例程代码的过程。在Debug窗口,Workbench创建了System Context,Debug,窗口包含了调试所用的各个工具,如run control按钮,可以start,stop处理器,或在应用程序代码中单步执行。
5.8 要运行代码,点击Debug窗口中的Resume按钮。Workbench将Debug窗口中的System Context状态更改为Running。
5.9要停止代码的运行,点击Debug窗口的Suspend按钮。Workbench将Debug窗口的System Context状态更改为Stopped,并更新代码编辑框的代码状态。
5. 利用Wind River Compiler创建工程
在安装Wind River Compiler后,会带有C Demonstration程序,通过以下步骤进行创建:
6.1在Workbench工具栏中,选择File>New>Project。新建工程向导出现。
6.2扩展Examples,选择Standalone Sample Project。
6.3点击Next。出现工程样本。
6.4选择C Demonstration Program,点击Finish。Workbench将在缺省workspace目录中创建工程,并在Project Explorer窗口中显示c_demo_sa的工程。
6.5要编译工程,右击c_demo_sa,选择Build Options>Set Active Build Spec。Set Active Build Spec and Debug Mode对话框出现。
6.6 选择适用于你所用目标板处理器的编译选项,例如PPC603diab 。
6.7 确认Debug mode (use debug mode flags)被选中(这样Workbench 会生成符号调试信息),点击OK 。
6.8 右击工程名,选择Build Project 。Workbench 将编译工程,编译结果会显示在Build Console 窗口。
附录一常用的OCD命令
OCD常用命令指的是在Workbench中的OCD Command Shell里执行的底层命令,熟练使用这些命令能够快速,准确的获得目标板信息,配合Workbench GUI,能够更加快速的调试目标程序,定位问题。下面介绍的是我们在调试中经常会用到的命令。
初始化命令令inn 和 in
1. 初始化命
inn:复位CPU,但不设置核寄存器的值,此时核寄存器的值均为缺省值。inn命令不向目标板处理器下载寄存器设置或片选设置(这些设置保存着仿真器中),inn仅仅将目标板置于background模式。通常情况下,在调试bootloader(VxWorks bootrom;Linux u-boot)时,需要inn命令,执行此命令后PC会在处理器的复位向量处,所有的寄存器均为缺省值,然后bootcode会设置初始化这些寄存器。如果要用OCD重新启动目标板,在
Command Shell下执行:inn;go。
in:类似于inn,将目标板置于background模式。除了复位CPU外,在建立正确的通讯后,仿真器会向目标板传送片选表(可用CS命令修改)和存储在仿真器中的寄存器设置(可用SC命令修改)。如果之前下载过寄存器文件,那么寄存器文件里的寄存器设置会被存储在仿真器里的文件系统中,每次in命令会将这些寄存器设置写到目标板中。
通常情况下,如果用户要调试RAM中的代码,有两种方式:用bootloader初始化存储器和外设;用寄存器文件初始化存储器和外设。如果用寄存器文件的方式,就需要在下载寄存器文件后执行in命令。
2. cs片选命令
cs命令能够显示当前目标板的片式设置。
cs 片选名称可以修改某个片选的设置,修改后用in命令传送至目标板
3. cf命令
cf命令的设置选项很多,而且会因处理器的不同而不同,详细请参考
installDir\\docs\\extensions\\eclipse\\plugins\\com.windriver.ide.doc.wr_workbench_ocd\\wr_wor kbench_ocd_cf_options_ref_3.0\\wr_workbench_ocd_cf_options_ref_3.0.pdf 参考手册。在Workbench的Window>Show View>CF Options也能够显示CF选项。有几个比较重要的cf 设置:
a.Set Breakpoint SB[SB,IHBC] = SB,此选项通常情况下不修改,但如果调试Flash中的bootcode时要使用step over来调试代码,需要修改为”cf sb ihbc”,否则step over会遇到不能设置软件断点的错误。
b.MMU和BL,此选项缺省为DISABLE,但如果要调试Linux操作系统,需要修改为ENABLE,”cf mmu enable”, “cf bl enable”。其中MMU使能让仿真器可以建立mmu转换列表,以便可以在Linux初始化MMU前在虚地址设置断点,而BL使能可以向Linux传递启动参数。详细请参考
installDir\\docs\\extensions\\eclipse\\plugins\\com.windriver.ide.doc.wr_workbench_ocd\\wr_wor kbench_ocd_debug_tutorials_3.0\\wr_workbench_ocd_debug_tutorials_3.0.pdf中第17章On-Chip Debugging for Linux。
其中MMU还要配合mmua命令建立映射表,例如”mmua c0000000 00000000 f0000000 p 00000000”,具体含义参考上面提到的手册。
c.Trpexp,此选项通常为YES,此时仿真器会截获目标板代码运行过程中产生的异常事件,如果选择NO,那么用户的代码中要有异常处理程序。注意在调试Linux中,应设置为”cf
trpexp breakpointonly”,此时仿真器仅仅处理断点,而不处理异常事件,否则Linux启动过程中会不断出现异常并被仿真器截获,进入BKM模式。Linux有自己的异常处理程序,不需要进入BKM模式进行调试。
模式,缺省为DISABLE。此选项仅仅用于调试VxWorks操作系统。是d.模式
Transparent Mode Debug缩写。如果用户想用WDB方式调试,目标板的以太网不可用,不稳定,或根本没有以太网资源,此时可以用Wind River ICE或ICE 2通过JTAG 进行WDB调试,称为模式。在VxWorks组件中要包含组件,此组件与网络组件互斥。此时CF选项中的就要设为”cf tmd enable”。Wind River Probe不支持这一功能。
这一功能e.INCOLD,缺省为NO。如果设置为YES,”cf incold yes”,那么下次进行目标板与仿真器连接时,仿真器会向目标板发送in命令,连接完毕后进入BKM模式,PC在复位向量地址。但通常情况用户在连接目标板时不想改变目标板目前的运行状态,那就需要设置为NO,连接完毕后进入RUN>状态,并不干扰目标板目前代码的运行。
f.有一个特殊的CF命令”cf tflash reverse”,在手册里没有提到,当用户的flash连接是字节反转的,此时要执行此cf命令。我们的仿真器针对不同的flash器件都有两套flash烧写算法,一种是normal的,一种是reverse的,也即支持字节反转连接。
其余CF设置因处理器不同而设置不同,请参考CF Options手册。
4. 显示/修改内存命令DM/SM
DM命令(display memory)有四种DMB(以字节形式显示);DMW(以字的形式显示);
DML(以长字的形式显示);DMS(以字符串的形式显示)。直接用DM时,缺省是以字的形式显示。注:还有一种DMD,用于显示双字-bit。
SM命令(Set Memory)类似,用于修改内存里的值,分为三种(没有S):SMB(以字节形式修改);SMW(以字的形式修改);SML(以长字的形式修改),SM缺省采用字的形式修改。注:还有一种SMD,以双字-bit形式修改。
SM与MM命令的区别:MM(Modify Memory)命令只修改内存中的数值,SM命令除了修改内存值,还要读回来进行校验以确认写入的值是正确的。
5. 显示/修改寄存器命令DR/SR
DR(Display Register)命令用于显示寄存器的值,可以单独使用DR命令,也可以用:dr 寄存器名来显示单个寄存器的值。
SR(Set Register)命令用于设置修改寄存器的值,用法为:sr 寄存器名寄存器值。
6. 显示/删除断点命令DB/RB
DB(Display Breakpoint)命令显示目前断点状态,包括有几个断点,什么类型的断点,断点地址是什么。
RB(Remove Breakpoint)命令删除一个或全部的断点设置。RB 断点地址将删除此地址的断点设置,如果不给参数,只执行RB命令,会删除所有的断点设置。
7. 运行/停止命令GO/HA
GO是目标板程序从当前PC地址开始执行,HA(同HALT或Ctrl+c)停止程序运行,进入BKM调试模式。这里衍生出一个用于多核调试的GOS和HALTS的命令,其中S指
Synchronize,如果SCTRL表里设置的为并行调试模式,此时GOS和HALTS会并行让所
命令。
有的核运行和停止,Wind River Probe不支持GOS和HALTS命令
8. SY 命令
SY命令后面可以跟不同的参数,执行SY命令可以查看所支持的命令,对于不同的处理器,SY支持的命令有所不同。此命令在诊断硬件上的问题时经常用到,主要是以下一些命令:a. s y jtag stat此命令是查看JTAG链上有几个设备(CPU/Core),对于PowerPC单核,通
常会看到以下输出:
>BKM>sy jtag stat
Total number of devices on the scan chain = 1
Total IR Register Length = 8
对于MIPS单核,会有以下输出:
>BKM>sy jtag stat
Total number of devices on the scan chain = 1
Total IR Register Length = 5
Total EJTAG_ADDR Register Length = 32
Total EJTAG_DATA Register Length = 32
Total EJTAG_CTRL Register Length = 32
如果遇到Device 数目和IR长度均为1的情况,说明在硬件上JTAG连接有问题,可能是ICE连接头或者PCB目标板上的JTAG连接头出现故障。
b. sy rev此命令通常作用于PowerPC处理器,可以读回PVR寄存器存储的芯片信息
>BKM>sy rev
Part PVR Value = 0x80811014, Voyager/Kaluah 82xx Revision 0.14
c. sy prog1 address此命令用于测试RAM是否可用,通常在Flash烧写过程中如果出现“无
法装载算法到某某地址”时,要用到此命令测试放置算法的RAM地址是否可用。完整测试
命令如下:
>BKM>sy prog1 5000 -将存储在仿真器中的测试程序下载到0x5000地址处>BKM>sr pc 5000 -将PC设置到测试程序起始地址
>BKM>di -查看0x5000处的指令,确认是否存在
$00005000 : 0x60000000 :ppc nop
$00005004 : 0x60000000 :ppc nop
$00005008 : 0x60000000 :ppc nop
$0000500C : 0x60000000 :ppc nop
$00005010 : 0x7C0004AC :ppc sync
$00005014 : 0x4BFFFFF0 :ppc b 0x5004
$00005018 : 0x00000000 :ppc dc.l 0x0
$0000501C : 0x00000000 :ppc dc.l 0x0
$00005020 : 0x00000000 :ppc dc.l 0x0
$00005024 : 0x00000000 :ppc dc.l 0x0
$00005028 : 0x00000000 :ppc dc.l 0x0
$0000502C : 0x00000000 :ppc dc.l 0x0
$00005030 : 0x00000000 :ppc dc.l 0x0
$00005034 : 0x00000000 :ppc dc.l 0x0
$00005038 : 0x00000000 :ppc dc.l 0x0
$0000503C : 0x00000000 :ppc dc.l 0x0
$00005040 : 0x00000000 :ppc dc.l 0x0
$00005044 : 0x00000000 :ppc dc.l 0x0
$00005048 : 0x00000000 :ppc dc.l 0x0
$0000504C : 0x00000000 :ppc dc.l 0x0
>BKM>go -运行程序
>RUN>dr pc -查看当前PC
PC = 00005010
>RUN>sb 5008 -在0x5008处设置断点
>RUN>
!BREAK! - [msg12000] Software breakpoint; PC = 0x00005008 [EVENT Taken]
>BKM>rb -删除所有断点
>BKM>
如果测试结果如上所示,证明RAM可用。
9. 其它一些命令
a.DI:反汇编。后面可以跟两个参数:第一个参数是地址,即从某个地址进行反汇编;第二个参数是长度,即列出多少条指令。如果不跟任何参数,DI从当前地址反汇编
>BKM>di 5000 20
$00005000 : 0x60000000 :ppc nop
$00005004 : 0x60000000 :ppc nop
$00005008 : 0x60000000 :ppc nop
$0000500C : 0x60000000 :ppc nop
$00005010 : 0x7C0004AC :ppc sync
$00005014 : 0x4BFFFFF0 :ppc b 0x5004
$00005018 : 0x00000000 :ppc dc.l 0x0
$0000501C : 0x00000000 :ppc dc.l 0x0
$00005020 : 0x00000000 :ppc dc.l 0x0
$00005024 : 0x00000000 :ppc dc.l 0x0
$00005028 : 0x00000000 :ppc dc.l 0x0
$0000502C : 0x00000000 :ppc dc.l 0x0
$00005030 : 0x00000000 :ppc dc.l 0x0
$00005034 : 0x00000000 :ppc dc.l 0x0
$00005038 : 0x00000000 :ppc dc.l 0x0
$0000503C : 0x00000000 :ppc dc.l 0x0
$00005040 : 0x00000000 :ppc dc.l 0x0
$00005044 : 0x00000000 :ppc dc.l 0x0$00005048 : 0x00000000 :ppc dc.l 0x0
$0000504C : 0x00000000 :ppc dc.l 0x0
$00005050 : 0x00000000 :ppc dc.l 0x0
$00005054 : 0x00000000 :ppc dc.l 0x0
$00005058 : 0x00000000 :ppc dc.l 0x0
$0000505C : 0x00000000 :ppc dc.l 0x0
$00005060 : 0x00000000 :ppc dc.l 0x0
$000050 : 0x00000000 :ppc dc.l 0x0
$00005068 : 0x00000000 :ppc dc.l 0x0
$0000506C : 0x00000000 :ppc dc.l 0x0
$00005070 : 0x00000000 :ppc dc.l 0x0
$00005074 : 0x00000000 :ppc dc.l 0x0
$00005078 : 0x00000000 :ppc dc.l 0x0
$0000507C : 0x00000000 :ppc dc.l 0x0
b.SYNC此命令通常用于PowerPC和MIPS处理器,可以同步仿真器和处理器的连接。当目
标板非正常重启或其它意外操作导致仿真器和处理器断掉连接时,用SYNC可以快速重建连
接。该命令不会复位目标板。
>BKM>
!FAULT! - [msg20003] Unexpected reset while target is stopped [EVENT
Taken]
>ERR>
>ERR>sync
Synchronization Complete. Current PC = 0x00101c90
>BKM>
c. DC VER命令,显示当前处理器名称,仿真器firmware版本等等信息
>BKM>dc ver
Target = MPC8260 :PPC82XX :Firm Rev = pr3.9a :NOEVENT :Wind River
Probe :TF Library = D5.9m :Slave = NONE :FLEXLM
10. SC Default:将仿真器中所存储的对寄存器的设置恢复为初始值
11. SCT:列出当前目标设备中所有寄存器的设置,
>BKM>sct
****************** LA *****************
CCSRBAR E0000000 000E0000 ALTCBAR E0000008 00000000
ALTCSR E0000010 00000000 BPTR E0000020 00000000
LAWBAR0 E0000C08 00000000 LAWAR0 E0000C10 00000000
LAWBAR1 E0000C28 00000000 LAWAR1 E0000C30 80F0001B
LAWBAR2 E0000C48 00080000 LAWAR2 E0000C50 8000001C
LAWBAR3 E0000C68 000E2000 * LAWAR3 E0000C70 80000017 *
LAWBAR4 E0000C88 000F0000 * LAWAR4 E0000C90 8040001B *LAWBAR5 E0000CA8 00000000 * LAWAR5 E0000CB0 00000000 *
LAWBAR6 E0000CC8 00000000 * LAWAR6 E0000CD0 00000000 *
LAWBAR7 E0000CE8 00000000 LAWAR7 E0000CF0 00000000
12. SCT COPY:将目标设备中寄存器的值拷贝到仿真器中,通常用于bootcode初始化目标
板,然后将寄存器值存入仿真器。然后从仿真器中导出寄存器文件,可以用于其它没有
bootcode的同型号目标板。
13. PJ UPLOAD:列出当前仿真器中对所有寄存器的设置,这些设置会输出到OCD
Command Shell下,可以将其复制到文本文件中,存成.reg 文件。
>BKM>pj upload
REM *******************************************
REM CF CONFIGURATION
REM *******************************************
CF TAR 8548E ;
OPERATION
CF SB SB ;
OPERATION
CF SBE NORMAL ;
OPERATION
CF MMU DISABLE ;
OPERATION
CF BL DISABLE ;
OPERATION
CF RST YES ;
OPERATION
CF CLK 16 ;
OPERATION
CF LENDIAN NO ;
OPERATION
CF DLD NORMAL ;
OPERATION
CF HRESET ENABLE ;
OPERATION
CF TRESET ACTIVE ;
OPERATION
CF RESET HRESET ;
OPERATION
CF CHECKSTOP NO ;
OPERATION
CF SPOWER YES ;
OPERATION
CF PONR 0 ;
OPERATION
CF TRPEXP YES ;
OPERATION
CF INCOLD NO ;
OPERATION
CF WSPACE 00005000 e95c ;
OPERATIONCF TGTCONS BDM ; OPERATION
CF RTP NO ; OPERATION
CF RPL 1 ; OPERATION
CF ETM c2010 ; OPERATION
CF PORABIST YES ; OPERATION
CF DISABLE ; OPERATION
CF BOOTMODE NORMAL ; OPERATION
CF DDRDLL YES ; OPERATION
CF LBCLK NO ; OPERATION
CF DRST 1 ; OPERATION
CF L2TLB 00000000 ; OPERATION
CF FLUSH_DCACHE NO ; OPERATION
CF TRCAQU OFF ; OPERATION
CF TRCCLR YES ; OPERATION
REM *******************************************
REM SC CONFIGURATION
REM *******************************************
SC GRP ERASE
SCGA LA CCSRBAR 00000000 000E0000 LA /va_dr /ua:0 /sa:0 /ue:0
SCGA LA ALTCBAR 00000008 00000000 LA /ua:0
SCGA LA ALTCSR 00000010 00000000 LA /ua:0
SCGA LA BPTR 00000020 00000000 LA /ua:0
SCGA LA LAWBAR0 00000C08 00000000 LA /ua:0
SCGA LA LAWAR0 00000C10 00000000 LA /ua:0
SCGA LA LAWBAR1 00000C28 00000000 LA /ua:0
SCGA LA LAWAR1 00000C30 80F0001B LA /ua:0
SCGA LA LAWBAR2 00000C48 00080000 LA /ua:0
SCGA LA LAWAR2 00000C50 8000001C LA /ua:0
SCGA LA LAWBAR3 00000C68 000A0000 LA /ua:0
SCGA LA LAWAR3 00000C70 8010001C LA /ua:0
SCGA LA LAWBAR4 00000C88 000E2000 LA /ua:0
SCGA LA LAWAR4 00000C90 80000017 LA /ua:0SCGA LA LAWBAR5 00000CA8 000E3000 LA /ua:0
SCGA LA LAWAR5 00000CB0 80100017 LA /ua:0
SCGA LA LAWBAR6 00000CC8 000F0000 LA /ua:0
SCGA LA LAWAR6 00000CD0 8040001B LA /ua:0
SCGA LA LAWBAR7 00000CE8 00000000 LA /ua:0
SCGA LA LAWAR7 00000CF0 00000000 LA
14. ESTKEY; ESTKEY DISPLAY:查看当前仿真器和Workbench软件的License状况,包
括FlexLM是否enable,仿真器的序列号等等。
>BKM>estkey
262HCZRF2GLN3LJJXB95ZCPBOVQ31 (*) Main Key
>BKM>estkey display
Key In Use: Main Key
FLEXLM licensing: Enabled
Serial Number: PR062078
Group Id: 0
15. SET VERBOSE ON: 通常用于连接仿真器目标板失败时,可以通过此命令获取更多的信
息,以判断失败原因。
>BKM>in
********************************************************************* ********
Wind River Probe Initialization Sequence.
Copyright (c) Wind River Systems, Inc. 1999-2009. All rights reserved.
********************************************************************* ********
Support Expires....... FlexLM key in use.
Target Processor...... MPC8548E:U1
Wind River Probe Group ID#= 0
Wind River Probe Serial#= PR062078 Firmware= pr2.7a
Type CF For a Menu of Configuration Options
Initializing Background Debug Mode..............Successful
>BKM>set verbose on
>BKM>in
********************************************************************* ********
Wind River Probe Initialization Sequence.
Copyright (c) Wind River Systems, Inc. 1999-2009. All rights reserved.
********************************************************************* ********
Support Expires....... FlexLM key in use.
Target Processor...... MPC8548E:U1
Wind River Probe Group ID#= 0
Wind River Probe Serial#= PR062078 Firmware= pr2.7a
Type CF For a Menu of Configuration OptionsTesting Communications to Hardware
Interface....Passed...........................
Driving HRESET to be High.......................Passed
Driving HRESET to be Low........................Passed
Waiting HRESET Low Acknowledge..................Passed
Attempting JTAG communication...................Passed
Waiting for HReset to be released...............Passed
Testing for target STOP State...................Passed
Comparing target CPU with CF setting............Passed
Waiting for HRESET High Acknowledge.............Passed
Testing JTAG Communication......................Passed
Loading Internal Registers......................Passed
Testing JTAG Communication......................Passed
Getting value of cf mmu option .................Passed
Attempting to restore CPU context...............Passed
>BKM>
16. TA:此命令用于显示和设置e500 core中的TLB,包括指令和数据,如MPC85xx,
QorIQ2xxx/4xxx
>BKM>ta
Entry EPN RPN TID TMASK WIMGE TSIZ U0:3 X0:1 PID TS PROT SHEN UR UW UX SR SW SX TIDZ VAL
IT0 FFFFF000 FFFFF100 00 0FC 06 0 0 0 0 0 U P D D D D D D D I
IT1 FFFFF000 FFFFF100 00 0FC 06 0 0 0 0 0 U P D D D D D D D I
IT2 FFFFF000 FF000100 00 000 06 0 0 2 0 0 U S E E E D D D D I
IT3 FFD8C000 10000000 00 000 06 0 0 0 0 0 U S E E E D D D D I
DT0 FFB3C000 10000000 00 000 06 0 0 0 0 0 U S E E E D D D D I
DT1 8004F000 F8000100 00 0C0 06 0 0 2 0 0 U S E E E D D D D I
DT2 0000E000 E0000100 00 000 06 0 0 2 0 0 U S E E E D D D D I
DT3 0000C000 00000000 00 000 06 0 0 0 0 0 U S E E E D D D D I
LT0 FF000000 0FF00000 00 0FF 00 8 0 0 0 0 P P D D D E E E D V
LT1 80000000 08000000 00 0FF 0A 9 0 0 0 0 P P D D D E E E D V
LT2 90000000 09000000 00 0FF 0A 9 0 0 0 0 P P D D D E E E D V
LT3 A0000000 0A000000 00 0FF 0A 9 0 0 0 0 P P D D D E E E D V
LT4 B0000000 0B000000 00 0FF 0A 9 0 0 0 0 P P D D D E E E D V
LT5 E0000000 0E000000 00 0FF 0A 8 0 0 0 0 P P D D D E E E D V
LT6 F0000000 0F000000 00 0FF 00 8 0 0 0 0 P P D D D E E E D V
LT7 F8000000 0F800000 00 0FF 0A 9 0 0 0 0 P P D D D E E E D V
LT8 00000000 00000000 00 0FF 00 9 0 0 0 0 P P D D D E E E D V
LT9 10000000 01000000 00 0FF 00 9 0 0 0 0 P P D D D E E E D V
LT10 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
LT11 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
LT12 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
LT13 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
LT14 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
LT15 00000000 00000000 00 000 00 0 0 0 0 0 U P D D D D D D D I
TA命令后面可以跟参数,来单独设置某个TLB Entry,具体设置可参考Application Note:
AN0257_PPC85xx_TLB_Command.pdf
17. TF: 目标板Flash显示/配置命令
>BKM>tf
- BDM TFlash programming Interface Settings -
Current device selected : INTEL V28F0Jx ( 8192 x 8 ) 1 Device
Start of work space in target : 00005000..0001394C
Start address of the flash : FF800000..FFFFFFFF
* Use 'tf conf' to change parameters
* Use 'tf device' to change the device
TF CONF:用于配置flash参数,包括flash型号,flash物理起始地址,flash算法所在的
RAM工作区域等
>BKM>tf conf
- BDM TFlash programming Interface Settings -
Current device selected : INTEL V28F0Jx ( 8192 x 8 ) 1 Device
Start of work space in target : 00005000 > 0
Start address of the flash : FF800000 > ff800000
>BKM>tf
- BDM TFlash programming Interface Settings -
Current device selected : INTEL V28F0Jx ( 8192 x 8 ) 1 Device
Start of work space in target : 00000000..0000E94C
Start address of the flash : FF800000..FFFFFFFF
* Use 'tf conf' to change parameters
* Use 'tf device' to change the device
采用TF CONF命令也可以在后面采用一连串参数的方式一次设置完毕,格式如下:
TF CONF device_number RAM_workspace_address workspace_size base_address
>BKM>tf conf 275 100000 2000 ff800000
275 00100000 1868 FF800000
>BKM>tf
- BDM TFlash programming Interface Settings -
Current device selected : INTEL V28F0Jx ( 8192 x 8 ) 1 Device
Start of work space in target : 00100000..0010074C
Start address of the flash : FF800000..FFFFFFFF
* Use 'tf conf' to change parameters
* Use 'tf device' to change the device其中flash的设备号可以通过TF DEVICE命令查看:
>BKM>tf device
00: SAMSUNG KFG1216x2A-xxB5 (32768 x 16 ) 1 Device
01: AMD 29LV004T ( 512 x 8 ) 2 Devices
02: AMD 29LV004B ( 512 x 8 ) 1 Device
03: AMD 29LV004B ( 512 x 8 ) 2 Devices
04: AMD 29LV004B ( 512 x 8 ) 4 Devices
05: AMD 29LV008BT( 1024 x 8 ) 1 Device
06: AMD 29LV008BB( 1024 x 8 ) 4 Devices
07: AMD 29F010 ( 128 x 8 ) 1 Device
08: AMD 29F010 ( 128 x 8 ) 2 Devices
09: AMD 29F010 ( 128 x 8 ) 4 Devices
10: AMD 29F010 ( 128 x 8 ) 8 Devices
11: AMD 29F040 ( 512 x 8 ) 1 Device
12: AMD 29F040 ( 512 x 8 ) 2 Devices
13: AMD 29F040 ( 512 x 8 ) 4 Devices
14: AMD 29F040 ( 512 x 8 ) 8 Devices
15: AMD 29F080/81( 1024 x 8 ) 1 Device
16: AMD 29F080/81( 1024 x 8 ) 2 Devices
17: AMD 29F080/81( 1024 x 8 ) 4 Devices
18: AMD 29F080/81( 1024 x 8 ) 8 Devices
19: AMD 29F016/17( 2048 x 8 ) 1 Device
20: AMD 29F016/17( 2048 x 8 ) 2 Devices
21: AMD 29F016/17( 2048 x 8 ) 4 Devices
最左端的数字就是flash在仿真器中的设备号
TF ERASE:flash擦除命令,后面跟要擦除空间的起始和结束地址
>BKM>tf conf 275 100000 2000 ff800000
275 00100000 1868 FF800000
>BKM>tf erase ff800000 ff900000
!ERROR! - [msg100020] WorkSpace to small for the algorithm size
>BKM>tf conf 275 100000 20000 ff800000
275 00100000 19788 FF800000
>BKM>tf erase ff800000 ff900000
INTEL V28F0Jx ( 8192 x 8 ) 1 Device
Erasing Flash(s) ... Done
>BKM>dml ff800000 20
FF800000: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800010: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800020: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800030: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800040: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800050: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800060: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ FF800070: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................ >BKM>
18.
附录二 寄存器文件的编写或修改
一. 简介
在下载任何应用程序代码并运行前,你都需要设置板上的内部寄存器值。通常有两种方式:bootcode 或寄存器文件。
配置寄存器值实际上分为两步:首先,寄存器文件中对寄存器的配置会保存在仿真器的存储器中,然后执行IN 命令将仿真器的寄存器设置复制到目标板的内部寄存器中。
Wind River 仿真器里带有存储区域来保存对目标板寄存器的设置。Wind River Probe 和Wind River ICE SX 采用NVRAM ;Wind River ICE 2则采用板上Flash 。如果要选择某些寄存器的值写入目标板,可以在寄存器文件里enable 或disable 特定的寄存器组。
Wind River 仿真器采用底层命令设置寄存器的值。这些底层命令的集合被存储在称为寄存寄存器文件
器文件的脚本里,一种扩展名为*.reg 的文本文件。 如果目标板的寄存器值已经设置过了,你可以将这些已经存着的设置上传给仿真器,或直接上传到你的主机。
操作目标板上的内部寄存器既可以通过Wind River Workbench GUI 中的Register 窗口,也可以通过在Workbench 的OCD Command Shell 中使用底层命令。
注:在下载寄存器文件后在下载寄存器文件后,一定注意要执行IN 命令命令,此命令才真正将寄存器值写到目标板内部寄存器板内部寄存器中中。
二.上传目标板中的寄存器设置
如果你的目标板的寄存器已经被正确的配置或初始化过,你可以将这些配置上传并保存在主机的文件里。这个功能在你有一块寄存器已被设置好的板卡是非常有用,因为你可能要用这些寄存器设置去初始化另外一块板卡,上传出的寄存器文件可以被下载到一块新的板卡中。
从目标板上传寄存器设置,有以下步骤:
1. 选择Window>Show View>Registers 。出现寄存器窗口
2. 点击Register 窗口的Menu 按钮,选择OCD Operations>Save Target Register Values to File 。你可以用编辑器打开它,或存储在文件里。
3. 点击Save 。指定文件名和存储路径,扩展名为*.reg 。
三.手工创建或修改寄存器文件
如果Wind River没有提供你自己板卡的寄存器文件,你们需要手工修改一个已有的寄存器文件。注意,寄存器文件只设置仿真器里存储的寄存器值,只有执行IN命令后,才会把仿真器里的设置写入目标板。如果开始就没有寄存器文件,仿真器里存储的寄存器值是用于Wind River参考板的,大多数情况下并不适合你自己的板卡,此时的IN命令不会正确的设置你的目标板的寄存器。如果你要下载程序代码并运行,寄存器文件至少要初始化memroy以便能够下载程序。初始化memory需要查看CPU和memory器件的硬件手册。
通常情况下,一个寄存器文件有以下结构:
REM *******************************************
REM CF CONFIGURATION
REM *******************************************
CF TAR 8548E
CF SB SB
CF MMU DISABLE
CF BL DISABLE
CF RST YES
CF CLK 16
CF LENDIAN NO
CF DLD NORMAL
CF HRESET ENABLE
CF TRESET ACTIVE
CF RESET HRESET
CF CHECKSTOP NO
CF SPOWER YES
CF PONR 0
CF TRPEXP YES
CF INCOLD NO
……………..
REM *******************************************
REM SC CONFIGURATION
REM *******************************************
SC GRP ERASE
SCGA LA CCSRBAR 00000000 000E0000 LA /va_dr /ua:0 /sa:0 /ue:0
SCGA LA ALTCBAR 00000008 00000000 LA /ua:0SCGA LA ALTCSR 00000010 00000000 LA /ua:0 SCGA LA BPTR 00000020 00000000 LA /ua:0 SCGA LA LAWBAR0 00000C08 00000000 LA /ua:0 SCGA LA LAWAR0 00000C10 00000000 LA /ua:0 REM DDR2 Access Window
SCGA LA LAWBAR1 00000C28 00000000 LA /ua:0 SCGA LA LAWAR1 00000C30 80F0001B LA /ua:0 REM PCI Access Window
SCGA LA LAWBAR2 00000C48 00080000 LA /ua:0 SCGA LA LAWAR2 00000C50 8000001C LA /ua:0 ………………..
REM *******************************************
REM CF GROUP CONFIGURATION
REM *******************************************
CF GRP LA ENABLED
CF GRP ECM DISABLED
CF GRP DDRMC ENABLED
CF GRP I2C DISABLED
CF GRP DUART DISABLED
CF GRP LBC ENABLED
CF GRP TA ENABLED
CF GRP PCI DISABLED
CF GRP PEX DISABLED
CF GRP L2SRAM ENABLED
CF GRP DMA DISABLED
CF GRP ETSEC1 DISABLED
CF GRP ETSEC2 DISABLED
CF GRP PIC DISABLED
CF GRP SRIO DISABLED
CF GRP GLOBU ENABLED
CF GRP PM DISABLED
CF GRP WP DISABLED
CF GRP WRLSDRAM ENABLED
CF GRP CUSTOM ENABLED
REM *******************************************
REM TF CONFIGURATION
REM v28F0Jx (8192x8) 1 device
REM *******************************************
TF CONF 227 00005000 59812 FF800000
REM *******************************************REM MMU CONFIGURATION
REM *******************************************
MMUD ALL
REM *******************************************
REM BL CONFIGURATION
REM *******************************************
BL DELETE
REM *******************************************
REM MMUOS CONFIGURATION
REM *******************************************
MMUOS DELETE
其中红色部分是主体,蓝色部分可选。开始部分的CF选项是针对仿真器的配置;接着是寄存器的设置,也是寄存器文件的主要部分;再下来是寄存器组使能与否的设定,只有Enabled的寄存器组的寄存器值才会被写入到目标板中。蓝色部分是对板上Flash型号,地址,烧写算法的地址和空间进行设定,以及如果要调试Linux,需要对MMU配置,并用BL进行参数传递,但这些在调试非Linux系统时都是可选的。
设置寄存器值使用SCGA命令,注意这实际是一个创建寄存器组和设置寄存器值的命令,而SC命令是对一个已有的寄存器进行设置。
SCGA 寄存器组名寄存器名地址数据选项
例如 SCGA SIM_MMU SIM_IBATOL 4014 00000004 /cpur
其中SIM_MMU为寄存器组名,可以在CPU手册中查到;SIM_IBATOL为这个寄存器组中的IBATOL寄存器;4014为IBATOL寄存器的偏移地址;00000004为写入这个寄存器的值;
/cpur是SCGA选项,共有多种选项,可多选,详细请查看OCD Command手册。注意:在文件中有一条”SC GRP ERASE”,这是为了删除仿真器里的寄存器设置,以便建立新的数据表。
大多数情况下,用户并不愿意从头创建一个寄存器文件,那么可以参考一个同CPU型号的寄存器文件进行修改。Wind River提供了大量的寄存器文件作为参考,位于
installDir/workbench-3.x/ocd/build/RegisterFiles目录中,按照处理器体系架构、参考板生产厂家进行分类。编写或修改好目标板的寄存器文件后,不仅能够下载应用程序代码,还可以进行设置用于启动操作系统VxWorks或Linux,此时就不需要ROM中的Bootloader (VxWorks Bootrom;Linux U-boot)来初始化了。
