NetICE控制台提供的40多条命令,涵盖了许多嵌入式开发中经常使用的功能,包括:下载程序、上传数据、加载flash编程驱动和配置使用环境等。详细的内容可以在后面列出的总表中找到。
(在控制台直接按<TAB>键,可以列出所有NetICE支持的命令,这些命令是排过序的)
NetICE命令总表:
clock <kHz>
| 设置调试时钟频率,单位是:kHz
举例:
clock 12000
|
|
config <tftpsvrIP>
<configfile>
<gdbport>
|
|
配置NetICE,
<tftpsvrIP>为tftp服务器的IP地址
<configfile>为初始化配置文件的文件名
<gdbport>为GDB Server监听的端口号
举例:
config 192.168.0.20 netice.cfg 3333
|
|
|
|
cp15r <op1> <cn> <cm> <op2>
|
|
读cp15寄存器,等同于下面的ARM汇编程序:
mrc p15,op1,rd,cn,cm,op2
rd的值在该命令执行后显示在屏幕上
举例:
cp15r 0 1 0 0
|
|
cp15rw <op1> <cn>
<cm> <op2>
<clrmsk>
<setmsk>
|
|
改写cp15寄存器的指定数据位,等同于下面4条ARM汇编程序:
mrc p15,op1,rd,cn,cm,op2
bic rd,rd,#clrmsk
orr rd,rd,#setmsk
mcr p15,op1,rd,cn,cm,op2
举例:
cp15rw 0 1 0 0 001000000000101b 0
|
|
cp15w <op1> <cn>
<cm> <op2>
<value>
|
|
写cp15寄存器,等同于下面2条ARM汇编程序:
mcr p15,op1,rd,cn,cm,op2
举例:
cp15w 0 1 0 0 0x1005
|
|
|
Flash ROM的删除操作。不输入[start]和[size]时表示erase all。
举例:
deverase 0 0x10000
deverase
|
|
|
|
devload <drv>
<base>
<size>
[erasesize]
[pagesize]
|
|
加载Flash ROM的驱动程序
<drv>为tftp工作目录中的Flash ROM的驱动程序。
<base>为Flash ROM的基地址,对于nandflash为映射基地址。
<size>为Flash ROM的尺寸。
[erasesize]为删除尺寸,可以不输入,由实际驱动程序定。
[pagesize]为页尺寸,也可以不输入,由实际驱动程序定。
举例:
devload dev/9260nand2k-8-data.drv 0xd0000000 0x800000 0x20000 2048
|
|
|
从[address]开始执行。不输入[address]时,默认的执行地址为tftpw的下载起始地址。
举例:
go 0x0c000000
|
|
|
|
|
显示NetICE的配置信息和目标CPU的当前状态。
|
|
|
|
jtagbypass <bypass1> <bypass2> ...
|
|
设置jtag链上各个节点的bypass指令,最多可设定8个。
举例:
jtagbypass 0xff 0x0f 0x1f
|
|
|
设置jtag链上被调试节点的编号。
举例:
jtagcurnode 1
|
|
jtaginsnsize <size1> <size2> ...
|
|
设置jtag链上各个节点的指令位长度,最多可设定8个。
举例:
jtaginsnsize 8 4 5
|
|
jtagtdi <bitpatern>
<clkcount>
[show]
|
|
控制TDI信号,TMS信号恒为低电平。
<bitpatern>为TDI信号的位流模板
<clkcount>为TDI信号的位流时钟数
[show]可以显示操作后从TDO信号端读出的数据
举例:
jtagtdi 0xfe 8 show
|
|
jtagtdiend <bitpatern> <clkcount>
[show]
|
|
控制TDI信号,当扫描TDI的最后一个数据位时,TMS信号翻转为高电平。
<bitpatern>为TDI信号的位流模板
<clkcount>为TDI信号的位流时钟数
[show]可以显示操作后从TDO信号端读出的数据
举例:
jtagtdiend 0 1
|
|
jtagtms <bitpatern>
<clkcount>
|
|
控制TMS信号
<bitpatern>为TMS信号的位流模板
<clkcount>为TMS信号的位流时钟数
举例:
jtagtms 1100b 4
|
|
|
设置NetICE的MAC地址
举例:
macaddr 00:11:22:33:44:01
|
|
md.[bhw] <base>
[ByteCount]
|
|
显示内存的内容。
md.b表示按8bit读出并显示
md.h表示按16bit读出并显示
md和md.w表示按32bit读出并显示
<base>为基地址
[ByteCount]为字节数,缺省为128,最大不超过256
md和md.w命令执行后,连续按回车键可以连续显示后继内存中的内容。
举例:
md 0x0c000000
md 0x0c000000 128
|
|
|
|
netconf <localIP>
<netmask>
<GatewayIP>
|
|
设置NetICE的网络参数(IPv4)
<localIP>为NetICE的IP地址
<netmask>为NetICE的子网掩码
<GatwayIP>为NetICE的网关IP地址
举例:
netconf 192.168.0.200 255.255.255.0 192.168.0.1
|
|
|
|
|
读地址<address>的内容并显示。
regr.b表示按字节读
regr.h表示按half word读
regr和regr.w表示按word读
举例:
regr.b 0x1b000023
|
|
regw.[bhw] <address>
<value>
|
|
把<value>写入<address>
Regw.b表示按8bit写
Regw.h表示按16bit写
Regw和regw.w表示按32bit写
举例:
regw.h 0x18090002 0x1122
|
|
|
控制目标板Reset信号。hi表示高电平,lo表示低电平。同时调试时钟频率降到32KHz
举例:
reset hi
reset lo
|
|
|
设置系统参数值,该命令只能在配置文件中使用。用于选择ARM类型、调试模式和编程驱动加载位置。
|
|
tftpr <base>
<size>
<remotefile>
|
|
读取内存数据,用tftp上传到tftp工作目录中
<base>为读取内存的起始地址
<size>为读取的大小,单位是字节
<remotefile>为存到tftp工作目录中的文件名
举例:
tftpr 0x20000000 0x100000 foo.bin
|
|
|
用tftp下载文件到内存中
<base>为下载到内存的起始地址
<remotefile>为tftp工作目录下的文件
举例:
tftpw 0xd0000000 nandboot.bin
|
|
后面举几个小例子:
使用halt命令,让目标芯片停止执行并进入调试模式。在进入调试模式后,用户还可以用info命令来查看目标芯片的一些状况,比如:芯片内部寄存器的值等信息。
(这是STM32被halt后,用info命令显示出来的内容)
在实际的开发过程中,使用JTAG命令来操作JTAG链是很常见的。NetICE提供的jtagtdi, jtagtdiend和jtagtms命令,可以帮助用户去实现这类操作。例如:TI的ICE Pick就需要用JTAG命令来使能JTAG链上的ARM节点。
(这是用jtag原始操作命令读取STR912内部JTAG链上的第一个节点的IDCODE)
tftpw命令是一个集成了RAM下载和Flash烧写功能的常用命令。NetICE还提供一个和uboot命令行类似的md命令,这个命令也是用来查看内存的。另外,在加载相应驱动程序的情况下,这个命令还可以用来查看诸如nandflash和I2C E2PROM等串行存储器的内容。
(第一个tftpw命令用tftp协议下载文件到内存空间,md命令用来显示内存里的数据,连续回车可以显示紧跟在后面的内容)
和tftpw相对,NetICE还提供一个tftpr命令,tftpr命令是tftpw命令的逆过程。这个命令常被用来备份内存或Flash中的数据和程序。比如:我有个板子,上面运行的程序在我手里没有任何备份,而我又不想这个程序被我后面的操作误删或者破坏。这时候,使用tftpr就可以很方便地把板子里的程序备份下来,等到板子上的程序被破坏的时候,我还可以用备份去恢复。
NetICE的控制台命令中没有设断点、单步跟踪等调试功能。但是,NetICE内部集成了GDB Server和Angel,这为用户使用GDB、IAR和ADS调试器奠定了基础,相关内容在下一篇Blog中介绍。
文章评论(0条评论)
登录后参与讨论