(1)去http://ftp.loongnix.org/embed/ls1b/ejtag/找到能用的tar包下载到自己的电脑上
(2)解压到指定的一个任意路径
(3)搭建硬件环境,电脑,调试主板,EJTAG调试器,保证链接正确。
(4)进入到刚刚解压好的ejtag_debug文件夹路径下,执行 sudo ./ejtag_debug_usb -t
检测硬件环境和软件版本是否可用:
1:将ejtag插入usb口,可以观察到ejtag的两个指示灯都亮,1s后只有一个指示灯亮,说明EJTAG硬件没有问题
2:sudo ./ejtag_debug_usb -t运行软件
jtagled 1 命令绿灯一直亮,jtagled 0 命令绿灯闪 说明USB驱动安装没问题
3:运行usbver 命令返回值如果为一个日期,2013年后才可以使用
4:运行 jtagregs d8 1 1来读取ejtag id寄存器 返回值为0x000000005a5a5a5a 说明链接正确
5:运行set 命令读取通用寄存器,如果返回值为非零数值,说明处理器运行起来了,ejtag链接也没有问题。
6:如果上一操作迟迟没有返回结果,ctrl-c退出。可能是处理器在无程序的情况下运行到地址空洞,设备没有响应,总线卡住了,可以运行resetcpu命令来复制cpu
ejtag-debug 参数:
./ejtag_debug_usb [-dlStch] [-e cmd] [-T n]
-d: version on show debug message
-e: "cmd":run cmd
-l: do not use read line
-S: log disassemble info
-s: run cmd server
-t: disable timer
-T n: set timer n ms
-c: do not load cfg file
-h: show this help
注意:
(1)ejtag-debug需要超级用户来运行
(2)配置文件是ejtag.cfg程序自动打开并运行里面的文件
ejtag-debug 由很多小命令,支持名字自动补全,在首行加#表示注释
【1】h [cmd] 查看帮助
【2】setconfig [configname] [value] 配置命令
core.cpucount 设置cpu数目
core.cpuno 设置当前调试的cpu号
core.cpuwidth 设置cpu的数据宽度
display.cmd 显示setconfig命令配置的东西
jtag.showins 当jag状态变化的时候显示指令
【3】set [regname|regno] [value] 读取寄存器
set 显示32个通用寄存器的值
set pc 显示当前pc指针的值
set regname 读取这个寄存器的值
【4】setenv [regname|regno] [value] 设置环境变量
ejtag向内核传递参数是通过ENV_开头的环境变量来设置的,如:
setenv ENV_memsize 256
setenv ENV_highmemsize 0
setenv ENV_cpuclock 266000000
来设置内存大小和cpu的时钟
【5】d1-d8,d1q-d8q,m1-m8 分别表示1-8字节dump/modify的意思,相关的命令有
mems,cp0s,regs,jtagregs,spiroms
读取cp0_config1:
cp0s 1
d8 16 1 也可以cp0s 1 d8 16 1
【5】source file 从fiel 文件中读取指令
【6】loop ecount cmd args.. 循环执行count次cmd args这个指令
【7】echo args 打印args
【8】echo_on 回显示执行的命令
【9】verbose [on|off|&fdno|filename] 打开或者关闭debug调试,或者存到fd中
【10】waitreg reg data 等待ejtag 的reg为data
【11】waitface [startaddr] [endaddr] 等待cpu访问dmseg且地址在这段区间内
【12】goback [addr] 跳转到dmseg addr处
【13】run binfile 运行bin文件,如run gzrom.bin
【14】msleep n 等待 n ms
【15】shell cmd 执行shell命令
【16】timer n n ms检查一次ejtag状态,n=0为不检查
【17】b addr 设置软件断点在addr处
【18】unb addr 删除软件断点
【19】hb addr 设置硬件断点
【20】unhb addr 删除硬件断点
【21】hbls 显示所有的硬件断点
【22】watchls 显示所有的硬件数据断点
【23】s 单步执行
【24】uns 取消单步执行
【25】cont 退出ejtag模式继续执行
【26】cpu cpuno 切换cpu到cpuno
【27】map filename start [size] 映射文件到dmseg start大小为size dmseg内容写到文件中
【28】unmap fielname start [size] 取消映射文件
【29】memsetx/fmemsetx/smemsetx/ addr value size 在处理器上运行memset,其中下x为1,2,4,为字节数
【30】memcpyx/fmemcpyx/smemcpyx addr value size 在处理器上运行memcpy
【31】get/fget/sget filename addr size 从板子上下载文件相关配置get.pack_size
【32】putelf/fputelf/sputelf elffile 上传elf文件
【33】initrd initrdfile 设置initrd
【34】karg "kernel args" 设置内存参数
【35】disas addr [count] 反汇编
【36】callbin/fcallbin/scallbin binfile [arg0 arg1 ...] 执行bin 文件
【37】call/fcall/scall addr [arg0 arg1 ...] 调用函数
【38】erase 擦除整个flash
【39】erase_area start end sectorsize 擦除部分flash
【40】gdb elffile gdb调试elf文件