首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

PowerPC简介及编程(3)

PowerPC简介及编程(3)

二,VxWorks装入PowerPC的过程
   RISCWatch 是一套软件和硬件开发工具, 主要为IBM PowerPC 600/700系列微处理器和IBM PowerPC 400系列嵌入式处理器提供软硬件, 开发, 调试.
      开发板JTAG口 (一般开发版都会甩出一个JTAG接口供开发调试用 ) 连出一个2*8针的接头与RISCWatch的仿真器端相连, 仿真器另一端通过网络连到装有RISCWatch软件的PC机. 不同种类的处理器JTAG管脚的定义不同, 所以和2*8针的接头连接也不同, 具体连结方法参见RISCWatch用户手册.
       通过软件和一个配套的硬件仿真器将VxWorks image写入512K的Flash Socket. RISCWatch一端接板子上的JTAG接口,另一端接网络Network.
RISCwatch的执行过程顺序: 初始化RAM-------->清理ROM-------->写VxWorks image .bin到FlashRom
用RISCwatch装入VxWorks的操作过程
1.运行RISCwatch: 打开file----->command file------>flashwri.cmd   
2.开启Normal 初始化RAM, 在编辑框中键入run, 开始向FlashRom中写入Bootrom.bin,写入完成,键入stop,至此写入完成
系统复位后, VxWorks运行,讲程序写入RAM中的各个地址
RISCwatch中的文件定义
文件rwppc.env: 可更改,如chip type, PC405GP等
文件flashwri.com: 可以察看,改变,如IP地址,load....,   .out,  .bin
文件flashprog.c: 输出生成 .out, 是写flash Rom 的文件, 写入 .bin

三,调试工具及调试方法
底层驱动调试
RISCWATCH 是一种很好的调试工具,观察内存情况及程序运行.
   通过计算机串口与处理器UART相连,设置计算机的超级终端(Hyper Terminal), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令,用Beep报警也是经常用的.这种调试方法是用于底层调试硬件,找出硬件存在的问题.
   VxWorks 在Tornado Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.
以上是Shell不能正常运行是所采取的方法,Shell正常运行后,Shell是最好的调试工具.

上层应用程序调试跟踪
Tornade2.0中Debuger和Shell是最好的调试工具,可以单步执行跟踪程序运行,观察内存情况和系统资源情况.其中Shell的功能要好于Debuger,不过Debuger操作较为容易,直观.

四,内存映射
MPC860的内存资源(如寄存器等)映射在一个连续的16K Block存储区内,可通过SPR中的Internal Map Memory Register(IMMR)进行解析
对 Memory Registers 操作的几种方式
Indirectly Access Registers Via Memory-----------------------通过指定的I/O寄存器(I/O port)对一个寄存器操作,
如PCI部分I/O操作示例如下:
PCI地址I/O寄存器: PCICFGADR  0xEEC00000
PCI数据I/O寄存器: PCICFGDATA 0xEEC00004

具体操作方法:将所要读写的寄存器地址写入PCI地址I/O寄存器PCICFGADR,从PCI数据I/O寄存器PCICFGDATA读出数据,这个数据就是写入地址的寄存器的数据.
RegAddr = 0x80000000 | ((offset|BusDevFunc) & 0xFFFFFFFC);
RegAddr寄存器地址, 0x80000000 PCI core Address, offset寄存器偏移量
/*
* 写RegAddr到PCI I/O地址寄存器PCICFGADR
*/
sysPciOutLong(PCICFGADR, RegAddr);

/*
* 从PCI I/O数据寄存器读RegAddr数据data
*/
data = (unsigned int)sysPciInByte(PCICFGDATA | (offset & 0x3));
Directly Access Registers Via Memory-------------------------直接对寄存器操作
Indirectly Access Registers Via DCR-----------------------------同上,
Directly Access Regesters Via DCR-------------------------------同上,
继承事业,薪火相传
返回列表