龙芯Ejtag调试工具使用说明

龙芯Ejtag调试工具使用说明
一、安装:
直接解压ejtag-debug.tar.gz即可
tar zxvf ejtag-debug.tar.gz
二、运行
龙芯的Ejtag调试工具需要超级用户权限,sudo su
./ejtag_debug_usb
程序会打开ejtag.cfg执行默认的配置
运行参数如下图,一般不需要使用
三、NOR Flash烧写PMON
cpu0- shell perl scripts/hisene.pl //初始化ddr寄存器
cpu0- putelf /home/.../gzrom //将gzrom下载到内存中
cpu0- put /home/.../gzrom.bin 0x8a000000 //将要烧写的gzrom.bin放到0x8a000000
cpu0- cont //启动pmon
在minicom中便可启动pmon
PMON> eraseboot
PMON> prgboot 0xbfc00000 0xe0000
四、调试start.S
cpu0- shell perl scripts/hisene.pl //初始化ddr寄存器
cpu0- putelf /home/.../gzrom
cpu0- gdb /home/.../pmon.gdb
(gdb) hb *0x81001480
(gdb) c
(gdb) display /i $pc //显示当前pc指针指向的指令
(gdb) si
五、启动并调试PMON
cpu0- shell perl scripts/hisene.pl //初始化ddr寄存器
cpu0- putelf /home/.../gzrom
cpu0- gdb /home/.../pmon.gdb
(gdb) hb initmips
(gdb) c
六、启动并调试内核
cpu0- shell perl scripts/hisene.pl //初始化ddr寄存器
cpu0- putelf /home/.../gzrom
cpu0- cont
cpu0- putelf /home/.../vmlinux_hs3000_ramdisk
cpu0- karg console=ttyS0,115200 root=/dev/ram1 rw cca=2
cpu0- gdb /home/.../vmlinux
(gdb) hb start_kernel
(gdb) c
(gdb) b sys_read
(gdb) c
内核shell下输入ls便可以停下。
七、调试app
pmon和kernel都是运行在内核空间的,调试器处理起来比较方便,而app是运行在用户空间的,调试的时候需要进行一步虚拟地址的转换,所以龙芯Ejtag调试器没有很好支持应用程序调试,只能做一些简单的汇编单步。
cpu0- shell perl scripts/hisene.pl //初始化ddr寄存器
cpu0- putelf /home/.../gzrom
cpu0- cont //启动pmon
cpu0- putelf /home/.../vmlinux_hs3000_ramdisk
cpu0- karg console=ttyS0,115200 root=/dev/ram1 rw cca=2
cpu0-cont //启动kernel
cpu0- hb 0x4005f0
cpu0-setconfig jtag.showins 0 //关指令回显,这样会块一些
cpu0-si 100 //单步运行100次
cpu0-unsi //关si
cpu0-cont //继续运行
注意的问题:
1.龙芯的Ejtag原理是FPGA上跑一个gdbserver,然后主机通过gdb与gdbserver通信来进行调试,所以本质上是通过gdb来调试的,所用的命令也跟gdb的命令完全相同。
2.调试的过程退出gdb时,需要先detach一下,然后q退出gdb便可以回到cpu0-模式。
3.需要把源码放到对应的目录,否则无法用list命令查看源码。
4.cpu0-ctrl+r可以筛选历史命令。
5.cpu0-ctrl+x+a可以打开一个简单的调试界面,更友好的调试界面可以安装一个ddd来代替gdb。
6.cpu0-set用来进行寄存器操作,set显示所有寄存器,set pc 0xbfc00000设置寄存器值。

你可能感兴趣的:(龙芯Ejtag调试工具使用说明)