龙芯ejtag 单步调试pmon

龙芯ejtag 单步调试pmon

一、概述

1、硬件环境

mips版本龙芯派板卡、ejtag、串口线、12V电源

备注:ejtag链接 小三角对应1脚

硬件环境

2、软件环境

龙芯派pmon源码、ejtag软件、minicom

二、更新pmon

  1. 编译龙芯派pmon源码

  2. 更新pmon
    此处不会可以参考:龙芯派教学

  3. ejtag单步调试时会用到两个文件
    a、zloader.ls2k/gzrom
    b、Targets/LS2K/compile/ls2k/pmon.gdb

备注:两个文件均在编译好的pmon源码内

三、ejtag中用到的命令

  1. 硬件指令断点
    设置软件指令断点到addr: hb addr [ibm]
    删除addr上的指令断点: unhb addr [ibm]
    查看断点: hbls

  2. 单步调试
    单步count次: si [count]
    取消单步: unsi

  3. 暂定
    停住CPU命令:set

  4. 继续执行
    继续执行命令:cont

四、pmon汇编代码 ejtag单步调试

  1. 板卡先断电
  2. 链接ejta、串口
  3. 打开串口,波特率112500
  4. 打开ejtag软件sudo ./ejtag_debug_usb -t
    a、执行:source configs/config.ls2k
    b、执行:loop -1 stop
    c、板卡上电 (龙芯派上电后,需要按下开机按钮)
    d、执行:ctrl + c (目的打断loop -1 stop)
    e、执行:set

打开ejtag

set命令

备注:执行set后,可以看到 pc 值是0xffffffffbfc00004。龙芯处理器起始地址是:0xbfc00000

对pmon启动流程不熟悉的同学可以参考:龙芯pmon启动流程概述

  1. 反汇编 gzrom
    mipsel-linux-objdump -d zloader.ls2k/gzrom > 1.log

反汇编
文件1.log 里为gzrom的反汇编代码
反汇编内容

  1. 打硬件断点,locate标志处
    a、通过Targets/LS2K/ls2k/start.S 与 1.log 查找locate标志地址为:8f900fdc

locate b、硬件断点操作: hb 0xffffffffbfc00fdc
hb

图执行流程为:打断点hb、查看断点hbls、cont、set、取消断点、查看断点hbls

通过set显示内容可知,pc已经停止到0xffffffffbfc00fdc

  1. 将pc停止到第一条打印处
    打印处地址:0xffffffffbfc015b4

打印

打印断点 hb 0xffffffffbfc015b4
hd

  1. 单步执行1000条命令
    执行:si 1000

si
串口输出第一条打印数据PRINTSTR(“\r\ninitserial good _…\r\n”)
串口

五、查看pmon启动过程中三次地址变换

备注:此处内容不做过多讲解,感兴趣的同学可以自行学习

第一次地址变化

第一次
地址从0xffffffffbfcxxxxx 变为 0xffffffff9fcxxxxx地址变化

第二次地址变化

initmips
地址从0xffffffff9fcxxxxx 变为 0xffffffff8f9xxxxx
第二次

第三次地址变化

第三次
地址从0xffffffff8f9xxxxx 变为 0xffffffff8f0xxxxx
第三次

六、pmon C语言代码 ejtag单步调试

1、找 C 函数入口地址

==反汇编 pmon==
mipsel-linux-objdump  -d  Targets/LS2K/compile/ls2k/pmon > 2.log

C入口函数在Targets/LS2K/ls2k/tgt_machdep.c 定义,函数是:void initmips(unsigned long long raw_memsz)

c入口

2、将pc停止到C入口函数地址

备注:建议断电重新操作

c入口处
串口停在位置如下:
串口停止

3、ejtag内gdb调试pmon.gdb

在这里插入图片描述
查看代码
查看
打函数断点,并执行到该断点处
函数断点例子1:
a、dbginit(NULL)函数调用地方:
在这里插入图片描述
b、dbginit(NULL)函数内容:
在这里插入图片描述
c、打dbginit(NULL)函数断点,并执行到该断点处
在这里插入图片描述
d、串口输出内容
在这里插入图片描述

4、gdb 基础命令

命令简写格式说明
listllist n1 n2显示 n1 行和 n2 行之间的代码,参数缺省时显示默认后 10 行
nextnnext n执行 n 行代码,如果是函数也会跳过函数。参数缺省时,执行一行
stepsstep执行一行代码,遇到函数的话就会进入函数的内部
finishfinish运行程序,直到当前函数运行完毕返回再停止
breakbbreak x当 x 为数字时,设置当前文件第 x 行为断点,x 为某函数名时,则在该函数处设置断点
deletedelete n删除 n 号断点,参数缺省时,删除所有断点
continueccontinue继续运行程序直接运行到下一个断点
infoinfo break显示所有断点号
printpprint var显示变量(var)值
clearclear n清除行 n 上面的所有断点

附录

  1. 用ejtag如何查看内核的调用栈
  2. 龙芯 ejtag 安装与简介
  3. 龙芯pmon启动流程概述
  4. 龙芯派教学
SPI编程器支持芯片列表 由于各个厂商的SPI Flash 的编程接口的统一,芯片支持只存在其容量不同问题。很多时候,我们只需把整个文件写入Flash就可以了。编程器支持的芯片如下: AMIC A25L05P A25L512 A25L10P A25L010 A25L020 A25L20P A25L40P A25L040 A25L080 A25L80P A25L016 A25L16P A25L032 ATMEL AT25F512B AT25F512A AT25F512 AT25F1024 AT25FS010 AT25F1024A AT25DF021 AT25F2048 AT26DF041A AT26F004 AT25F4096 AT25FS040 AT25DF041A AT26DF081A AT26DF161 AT26DF161A AT25DF161 AT25DF321A AT25DF321 AT26DF321 AT25DF641 COMMON 25X005 25X05 25X10 25X20 25X40 25X80 25X16 25X32 25X64 EON EN25LF05 EN25P05 EN25B05T EN25F05 EN25B05 EN25LF10 EN25F10 EN25D10 EN25P10 EN25D20 EN25LF20 EN25F20 EN25LF40 EN25F40 EN25D40 EN25F80 EN25D80 EN25T80 EN25P80 EN25Q80 EN25D16 EN25T16 EN25B16 EN25F16 EN25B16T EN25Q16 EN25Q32 EN25B32T EN25B32 EN25P32 EN25F32 EN25F64 EN25B64 EN25B64T EN25Q64 ES ES25P10 ES25P20 ES25M40A ES25P40 ES25M40 ES25M80A ES25M80 ES25P80 ES25M16A ES25P16 ES25M16 ES25P32 ESMT F25L04UA F25L004A F25L08PA F25L008A F25L016A F25L16PA F25L32PA F25L32QA GIGADEVICE GD25Q512 GD25Q10 GD25Q20 GD25D40 GD25F40 GD25T80 GD25Q80 GD25D80 GD25F80 GD25Q16 GD25Q32 GD25Q64 KH KH25L8036D MSHINE MS25X05 MS25X10 MS25X20 MS25X40 MS25X80 MS25X16 MS25X32 MS25X64 MXIC MX25L512 MX25V512 MX25L1005 MX25L2005 MX25V4035 MX25L4005A MX25V4005 MX25V8006E MX25L8005 MX25V8005 MX25L8035E MX25V8035 MX25L8006E MX25L8036E MX25U8035 MX25U8033E MX25L1608D MX25L1635E MX25L1636D MX25L1633E MX25L1606E MX25U1635E MX25L1605D MX25L1636E MX25L3236D MX25L3225D MX25L3208D MX25U3235F MX25L3206E MX25U3235E MX25L3205D MX25L3237D MX25L3235D MX25L6405D MX25L6408D MX25L6455E MX25L6445E MX25L6406E MX25L6436E NEXFLASH NX25P10 NX25P20 NX25P40 NX25P80 NX25P16 NX25P32 PMC PM25LV512A PM25LV010A PM25LV020 PM25LV040 PM25LV080B PM25LV016B SAIFUN SA25F005 SA25F010 SA25F020 SA25F040 SA25F080 SA25F160 SA25F320 SPANSION S25FL001D S25FL040 S25FL004 S25FL002D S25FL008 S25FL016 S25FL160 S25FL032 S25FL064 ST M25P05A M25PE10 M25P10A M25P20 M25PE20 M25PE40 M25P40 M25PX80 M25PE80 M25P80 M25P16 M25PX16 M25PE16 M25P32 M25PE32 M25PX32 M25P64 M25PE64 M25PX64 WINBOND W25X10A W25P10 W25X10AL W25X10 W25X10L W25X20L W25P20 W25X20A W25X20AL W25X20 W25X40AL W25P40 W25Q40BV W25X40L W25X40A W25X40 W25P80 W25X80A W25X80 W25Q80BV W25X80L W25X80AL W25Q80V W25Q16BV W25Q16V W25P16 W25X16 W25X32 W25Q32V W25P32 W25Q32BV W25Q64BV W25X64 W25P64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大 大猫

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值