1、 江苏中科龙梦科技有限公司 Jiangsu Lemote Technology Corporation Limited PMON 使用手册 ( V1.0) 江苏中科龙梦科技有限公司 江苏中科龙梦科技有限公司 Jiangsu Lemote Technology Corporation Limited 目 录 PMON概述 .1 1 PMON介绍 2 1.1 PMON命令 .3 1.2 PMON的特点 .5 2 PMON环境变量 6 3 下载记录类型 .8 4 经过 RS-232C下载文件 8 4.1 选择目标端口的数目 9 4.2 选择和设置波特率 9 4.3 流控制 9 4.4 实例 10 4
2、.4.1 一个端口的模式 .11 4.4.2 两个端口的模式 .11 5 网络连接 .11 5.1 配置 .11 5.2 配置 TFTP服务器 13 5.3 通过网卡下载文件 13 6 监控命令介绍 .13 7 按字母顺序列出所有命令 .20 8 在 SDEMIPS使用 PMON61 9 在 PMON中的 AlgPOST(一段自检代码) 63 9.1 本章介绍 63 9.2 AlgPOST 简介和概述 .63 9.3. 测试队列 .64 9.4 AlgPOST怎样和你通信 .64 9.5 控制测试 - AlgPOST 使用的环境变量 65 9.6 AlgPOST诊断细节 .66 9.6.1 测
3、试顺序 66 9.6.2 所有部件都工作时发生了什么 .68 9.6.4 解释 AlgPOST输出 69 9.6.5 显示屏上的状态消息 .69 9.6.6 控制台的错误消息 .70 9.7 编程 AlgPOST75 9.7.1 PROM包 75 9.7.2 PROM布局 76 9.7.3 NVRAM( nor-volatile RAM)的环境变量 77 9.7.4 NVRAM 结构 .77 9.7.5 AlgPOST 的例外向量和重新引导 77 10 术语表 .78 1PMON概述 本手册描述了PMON(prom monitor) ,PMON原本是为了LSI Logic写的,并且提供了可再用
4、的源代码。Algorithmics公司已经得到扩展并且适用了PMON运行在一些主板的产品中,例如P-4000i原形主板。在你的硬件平台上应用PMON时,它将给你支持和建议。本手册包括以下几部分: Section 1, PMON介绍 Section 2, PMON的环境变量 Section 3, 下载记录类型 Section 4, 经过RS-232C下载文件 Section 5, 网络连接 Section 6, PMON命令概述 Section 7, 字符命令列表 Section 8, 在SDE MIPS使用PMON Section 9, 加电自检描述 Section 10,经常使用的关键字和缩
5、写字的词汇表 Section 11, 参考文献 21 PMON 介绍 PMON提供了在MIPS体系结构处理器下调试软件应用的一个基本命令集。LSI原本是使PMON运行在LS33000 Self-E mbedding(TM)处理器上;而Algorit hmics公司使PMON运行在64位的R4X00系列的处理器上。 PMON在P-4000i上的三个基本用法: (1)用户首先要在PC机或工作站上开发代码,然后在自己的主机上交叉编译这些代码。 (2)用户通过RS-232C或者网络把代码下载到目标主板上。 (3)PMON的调试功能可以让用户做到以下几点: z 在硬件和软件的断点中的任何一个点,用户可以
6、开始和停止程序的执行,PMON同时支持单步执行; z 用户可以读取和设置任意寄存器的内容; z 用户可以从主存中读取数据,并且可以反汇编代码; z 用户可以在存储器中的拷贝内容从一个地方到另一个地方, 也可以用一个特别的字符串或一个字节的数填写存储器,也可以在存储器中搜索一个特别的字符串或一个字节的数。 PMON为用户提供了一个灵活的可以调试(可以参考Unix/linux的gdb调试命令)的环境。 31.1 PMON 命令 PMON提供了34个命令,这些命令共分为4个组(见表1.1): 执行控制命令 b (breakpoint), c (continue), call, db (display
7、 or delete breakpoints), g (go), t (trace), and to (trace over). 现实和修改命令 boot (networ k loader), bt (stack backtrace), copy, d (display), dump, fill, l (disassemble),load (download), m (memor y display/modify), r (register display/modify), search (search memory for pattern), and tlb (display tlb ent
8、ries). 工作平台命令 date (display/set date ! !str !num +-/() addr name r *“ 默认的,在 load或 boot命令执行时断点被清除。 一些使用 b命令的例子如下。 PMON b a002000c 设置软件断点 0xA002.000C. Bpt 0 = a002000c 21PMON b 显示所有软件断点 Bpt 0 = a002000c PMON b -r a0020020 在读数据的时候设置硬件断点 Bpt 32 = a0020020 PMON b 显示所有软件断点 . Bpt 0 = a002000c Bpt 32 = a002
9、0020 看 db, set,load和 boot命令获得更多信息。 22Boot boot命令是通过网络加载二进制目标文件 格式 命令格式如下: boot -bensy host:path 其中: -b 下载之前阻止所有断点被删除 -e 阻止异常处理被清除 -n 阻止在文件中加载标号 -s 阻止标号表被清除在下载前 -y 只从文件中加载标号 Host 网络中读文件的主机 Path 从主机加载的文件名 调用不带参数的 boot命令清除标号表,删除目前所有断点,试着加载主机上的程序或者是 bootaddr和 bootfile环境变量指定的程序 功能介绍 boot命令借助于网络通过 TFTP加载一
10、个主机上的二进制文件。它可以执行 ELF格式的文件,还有较老的 ECOFF格式的 MIPS文件。 PMON从这些文件中抽取标号信息,然后加载到目标机的标号表。 Boot命令执行时一般都清除标号表,异常处理,和所有的断点。 -s和 -b选项阻止清除标号表和断点。 EPC寄存器的值被自动的设置成程序入口。所以,执行下载的程序只要 g命令就可以了。 Boot命令可能会返回很多错误信息,相关的网络问题或是进入远程主机文件的问题。通过 TFTP下载的文件必须是可公开的文件,而且它还应是个远程服务器可以接受的目录。 当读标号表是 PMON可能存在的问题是没有足够的空间存储这些标号。为了增加堆的容量,通过
11、heaptop命令来储存更多的空间,如果必要的话,可以把你的程序从新链接到一个更高的基址。 Boot命令也会检查可能覆盖 PMON重要数据或堆的可能,那么它也会从新链接程序到一个正确的地址。 当加载文件的各个部分时,此命令还显示内存地址和各部分文件大小。这些信息会按顺序输出。 23Bt bt命令执行回朔功能 格式 命令格式如下: bt -v cnt 其中: -v 说明每个功能块的栈帧基地址和需要显示的大小 Cnt 说明需要显示的行数 如果无参调用这个命令,回朔显示栈帧名字和最多 4个参数 功能描述 bt命令显示一个功能调用表,从寄存器 EPC所指的地址开始执行,当返回的地址是无效时停止执行。当
12、程序的地址不是环境变量 validpc所规定的范围内则认为程序地址无效。 每行的输出作为目前的一个功能,最多 4个参数。当参数存在功能的开始的话参数才有可能被找回,但这种情况对汇编和 c代码似乎都行不通。如果你想查看 c代码的参数,在关掉优化的情况下编译你的程序。 如果有 -v这个参数,命令将额外的显示栈帧的基地址和每个功能的大小。它还将应用 c的分配功能来提示动态分配的栈空间大小。 此命令的输出被送给 more命令,让用户每次看一整屏的输出。用户可以设定 cnt来限制每次显示的行数。下面是个 bt命令的例子。 PMON c write+10 write+0x0010 3c09a07f lui
13、 t1,0xa07f PMON bt write+0x0010 (0x00000001,0xa0030300,0x0000001c)flsbuf+0x0234 (0xa0030300,0xa0029030) printf+0x045c (0xa0025490,0xa0020000,0x000000001,0x00000010) main+0x0138 (0x00000001,0xa07ffffe0) _start+0x0040 () 24C 当断点停止了程序的执行时,命令 c使程序继续执行 格式 命令格式如下: c bptadr where: bptadr 指定一个断点。断点被清除当程序停在这
14、个被指定的地址。 调用命令 c不带参数时程序将从寄存器 EPC所指的地址开始执行。 功能描述 当用户敲入 c命令,程序从 EPC目前的值所指的地址开始执行。 g命令是从命令行输入的地址开始执行程序。 单独一个暂时的断点可以被指定。这个断点被清除当执行停止时。该断点也可能在另一个先停止程序执行是被清除。 例: PMON c a0020104 Continue execution until 0xA002.0104. 25Call call命令执行一个函数 格式 命令格式: call adr val|-s str where: adr 函数的起始地址 val 传给函数的值 -s str 传给函数的
15、串 功能描述 call命令执行一个函数,该函数的地址被指定为第一个参数。最多 4个参数通过寄存器 a0a3被传入。 Call命令和 c命令比较相似,只是在函数调用完成后 call命令不更新影子寄存器的值。 举个例子,在例子中 call命令将执行地址为 0x8802.0304的函数,通过a0传入参数 0x8002.236c。 PMON call 80020304 8002236c 26Copy copy命令把指定数量字节数的单元从内存的一个单元拷贝到另一个单元 格式 格式如下: copy from to siz where: from 申明源地址 to 申明目的地址 siz 要移动的内存大小。但
16、是是字节。 如果 to小于 from,那么就从 from处地址增加拷入。如果 from小于 to,那么就从 from+siz处地址减少拷入。 功能描述 copy命令复制一些字节内存从一个地方拷贝到另一个地方 从低字节拷贝时,源数据从低字节往高字节逐个被拷贝到目的地址;从高字节拷贝则相反。这样就不会出现数据拷贝重叠的情况。 下面这个例子演示了如何拷贝, 4k字节,基地址是 0x8002.0000,拷贝到另一个地址的起始地址为 0x8006.0000 PMON copy 80020000 80060000 4000 27D d命令将以 16进制或者 ASCII形式显示内存内容 格式 格式如下: d
17、 -b|h|w|s adr cnt|-rreg where: -b 按字节显示内存内容, 1字节 8位 -h 按半字显示内存内容,半字 16位 -w 按字显示内存内容, 1字 32位 -d 按双字显示内存内容,双字 64位 -s 像一个以 null结尾的串一样显示内存内容 adr 给出要显示数据的基地址 cnt 给出要显示的总行数 -rreg 像寄存器 reg一样显示内存内容 功能描述 d命令从给定的地址以 16进制或 ASCII格式显示内存内容,参数 -b、 -h、 -w或 -s说明如何显示。本段结尾有例子。本命令的输出到 more命令,让用户一次读一屏的输出。用户可以设置 cnt来控制每次
18、显示的行数。 变量 如果此命令调用时没有参数,那么变量 datasz设置显示格式。把 datasz设成datasz -b、 -h、 -w或 -d和命令行带参数的效果是一样的。 Datasz在其他命令是不起作 用的 下面显示了从 0x001.0000的内存 PMON d a0010000 a0010000 bf c0 2b 00 bf c0 2b 00 bf c0 2b 00 bf c0 2b 3c +.+.+.+ date 显示当前时间 Wed Feb 23 13:29:33 1994 PMON date 32 改变分 Wed Feb 23 13:32:00 1994 PMON date 1405 改变时和分 Wed Feb 23 14:05:00 1994 PMON date 9402241103 新的日期和时间 Thu Feb 24 11:03:00 1994