0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

迅为2K1000开发板龙芯平台Ejtag 单步调试 PMON 的汇编阶段

北京迅为电子 2022-03-21 15:14 次阅读

迅为2K1000开发板

Ejtag调试器

在 9.6 小节中,我们在汇编节点实现了 led 闪烁的功能,如果您自己写的程序没有成功,我们该如何调 试呢?就可以利用 Ejtag 仿真器进行单步调试。

那我们要如何进行单步调试呢?我们是不是就得先知道每一个指令对应的地址呢?这样我们才可以打断点。我们先来修改一下在 9.6 小节中的代码,我们加一个标签。如下图所示:

然后我们重新编译 pmon 源码生成 pmon 镜像并烧写到开发板,一定要将编译的烧写到开发板!!!接着在 pmon-loongson3/zloader.ls2k 使用命令/opt/gcc-4.9.3-64-gnu/bin/mips64el-linux-objdump -d start.o > 1.txt

将编译得到的 start.o 文件进行反汇编并将结果输出到 1.txt,添加 led3_ctrl 标签的目的是为了反汇编以后更加容易找到 led3 控制相关的指令,如下图所示:

使用命令 vim 1.txt 打开反汇编后的输出文件,找到标签 led3_ctrl 所在的位置,如下图所示:

从上图可以看出,控制 led3 相关的代码是从地址 d60 开始的,而 MIPS 的入口地址是 0xbfc00000,所以我们是不是就可以把断点打的地址为 0xbfc00d84 的地方呢,这个地方对应的指令为点灯操作。

接着我们启动 Ejitag 工具并配置好 Ejtag 工具,在 Ejtag 命令行下输入命令 hb 0xffffffffbfc00d84,注意,此

时开发板并未上电!!!

接着我们给开发板上电,此时 hb 命令会执行成,这时立刻输入 set 命令停止 cpu,如下图所示:

然后我们输入命令 hbls,查看断点是否设置成功,设置成功如下图所示:

接着输入命令 cont,让 cpu 执行到断点出停止,如下图所示:

然后使用命令 unhb 0xffffffffbfc00d84 删除断点,这里一定要删除,不然 si 命令不能往下执行,如下图所示:

接着输入命令 si 1 执行 1 条执行,si 1 的意思就是单步执行 1 条指令,如下图所示:

此时我们可以发现 led3 已经点亮,说明我们之前写的汇编代码是没有问题的。如果大家没有点亮,可以使用 set 命令来查看通用寄存器的值来排查错误。

接着我们将断电打在关灯的指令位置,在反汇编 1.txt 文件中,我们可以发现关灯的指令是在 da0 位置, 如下图所示:

所以我们输入命令 hb 0xffffffffbfc00da0 将断点打在这个位置下,如下图所示:

然后执行 cont 命令运行 cpu,cpu 会执行到这个断点位置,然后停止,如下图所示:

cpu 已经停到这个位置了,我们就可以使用命令 unhb 来删除断点了,这里一定要删除,不然 si 命令不能往下执行,如下图所示:

接着输入命令 si 1 条指令,如果我们写的代码没有问题,可以发现 led3 熄灭,如下图所示:

这样我们就在汇编阶段下调试完成了 led,同理,调试其他的 GPIO 大家也可以使用这种方法,这里就 不在赘述,大家可以自行探索一下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 龙芯
    +关注

    关注

    2

    文章

    303

    浏览量

    30859
  • PMON
    +关注

    关注

    0

    文章

    7

    浏览量

    8200
  • EJTAG
    +关注

    关注

    0

    文章

    2

    浏览量

    8089
  • 2K1000
    +关注

    关注

    0

    文章

    19

    浏览量

    521
收藏 人收藏

    评论

    相关推荐

    [广东龙芯2K1000/2K500开发板]如何利用coredump 进行调试

    如何利用coredump 进行调试 编译时加入调试信息((PC 机上)) 编译参数 -g ​loongarch64-linux-gnu-gcc -g 1.c 开启core文件 (开发
    发表于 02-20 13:05

    [广东龙芯2K1000/2K500开发板] OpenWRT 使用说明

    500_config ##2k1000的配置名为loongson_2k1000_config ##此处以2k500例 $ cp configs/loongson_
    发表于 02-19 14:40

    全国大学生计算机系统能力大赛操作系统设计赛-LoongArch 赛道广东龙芯2K1000LA 平台资料分享

    ,可以参考龙芯开源社区,龙芯中科公司官网,龙芯在github的官方账号以及龙芯实验室大赛设置的文档仓库 内核赛道选用的
    发表于 02-04 15:37

    龙芯2K1000开发板加载PMON镜像

    ://192.168.1.38/gzrom-dtb.bin,其中 192.168.1.38 虚拟机 Ubuntu 的 IP 地址,如下图所示 烧写完成后重启开发板 PMON 即可更新成功。 更多文档可以查看 B站搜索-北京
    发表于 10-24 10:58

    龙芯开发板开发板系统烧写-启动系统

    上面所有的步骤我们都做完以后,输入命令 sync 确保我们之前的步骤都可以保存到 ssd,接着拔下 U盘,最后输入命令 reboot 重启开发板,如下图所示: 如果启动成功,我们会看到 pmon
    发表于 10-09 14:04

    LS2K0500开发板动态电源管理龙芯自主指令架构

    CPU LS2K0500开发板采用龙芯2K0500处理器,基于
    发表于 09-28 11:15

    Linux系统GDB单步调试

    单步调试    gdb helloworld                         (gdb) break helloworld.c:18            (gdb) run
    的头像 发表于 09-26 16:22 321次阅读

    龙芯2K1000核心板在智能座舱行业产品方案

    龙芯2K1000核心板在智能座舱行业产品方案-迅为电子
    的头像 发表于 09-26 14:18 497次阅读
    <b class='flag-5'>龙芯</b><b class='flag-5'>2K1000</b>核心板在智能座舱行业产品方案

    龙芯2K1000开发板通过汇编控制GPIO

    些。 我们打开 Targets/LS2K/ls2k/start.S 下的 start.S 文件,我们在 9.4.2 小节里面已经确定了他的位置,这里 就不在赘述了。 然后我们在第 487 行输入以下
    发表于 09-26 10:58

    Banana Pi BPI-5202中科龙芯2K1000嵌入式工控机扩展方案设计

    BPI-5202作为单纯的嵌入式通用控制器软硬件开发平台,采用龙芯2K1000LA芯片设计,基本配置中有2个独立MAC以太网端口、
    发表于 09-13 12:18

    Nuc970如何连接jlink进行单步调试的设定?

    Nuc970如何连接jlink进行单步调试的设定
    发表于 09-05 06:29

    Banana Pi推出基于龙芯2K1000LA处理器的信创工业控制开发平台

    Banana Pi推出基于龙芯2K1000LA处理器的信创工业控制开发平台:BPI-5202信创工业控制开发
    发表于 09-04 12:30

    RT-Thread Studio单步调试报错

    RT-Thread Studio单步调试的时候会出现如图片所示的错误,谁知道是什么情况。
    发表于 08-04 16:34

    iTOP-3A5000开发板外加机箱就是一台电脑主机国产龙芯

    。 核心+底板结构 iTOP-3A5000开发板核心+底板方式,底板规格按实现全国产照ATX规范来设计,外加机箱就是一台电脑主机。
    发表于 05-23 10:36

    龙芯国产工业电脑-3A5000开发板loongnix系统演示# @

    开发板
    北京迅为电子
    发布于 :2023年05月18日 14:25:07