查看: 1650|回复: 1
收起左侧

RISC-V MCU开发 (七):代码调试

[复制链接]

  离线 

  • TA的每日心情
    拍拍
    2021-10-29 10:26
  • 签到天数: 1 天

    [LV.1]

    发表于 2021-10-9 10:03:57 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    MounRiver®Studio(MRS)配合GD-Link、WCH-Link、JLink等在线调试下载器,可支持GDVFx系列、CH56x、CH57x、CH58x、CH32Fx、CH32Vx等RISC-V/ARM内核MCU工程的代码调试功能。本文主要介绍MRS针对RISC-V内核MCU的代码调试操作。
    【启动调试】以CH32V103C8T6的芯片工程为例来说,首先保证工程可以编译通过,然后点击菜单栏按钮,开始进入调试模式,正常进入调试模式会停在如图所示的位置,此位置有一个临时断点:
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(1)
    【更改默认断点位置】当然如果希望工程可以直接停在main函数起始地方,也可以去手动更改此断点的位置,点击调试图标旁的下拉按钮,选择”Debug Configurations”,在弹出的页面中选择Startup选项卡,将set breakpoint at 设置为 main即可。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(2)
    配置完成后点击右下角 Debug,或者保存之后退出配置,点击菜单栏 ,进入调试模式后就会停在刚才设置的位置
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(3)
    【查看机器码】进入调试之后,可以看到左下角Disassembly窗口,此窗口可以显示PC附近代码的汇编以及地址,也可以在左侧空白处鼠标右键,选择show opcodes,来显示机器码。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(4)
    【机器码断点与跳转】双击反汇编窗口左侧空白处也可以设置断点,红框位置处可以填写16进制的地址,用来跳转到想要查看位置的汇编代码。主窗口用来显示代码运行位置,可以在左侧窗体位置处双击来增加或取消断点。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(5)

    【软件断点】因为采用的是软件断点,理论上不限制断点个数,但是过多的断点会引起程序仿真变慢。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(6)
    【变量查看】右侧Variables窗口会显示当前函数中变量的值。也可以在此窗口修改你想要改变的变量的值,但注意只是修改到Ram,重新上电后该值恢复为实际大小。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(7)
    【添加监测变量】Experssions可以自定义添加监测的变量,也同样可以修改,效果和Variables窗口中的一致。

                                                                                            MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(8)
    【错误中断】下方Registers窗口显示的是RISCV内核的CSR+GPR寄存器,可以用来观测内核状态,有几个寄存器在出现HARDFAULT 错误时可以帮助定位问题,在进入硬件错误中断处理函数时,mepc显示的是出错时的地址,mcause 显示的是原因,mtval 显示的是出错时cpu取到的值,mcause值含义如下图。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(9)
    【断点窗口】Breakpoints窗口可以显示所有设置的断点位置,可以在此处使能或者删除段断点。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(10)

    【内存窗口】Memory窗口可以用来查询不同地址的值,例如我们查询0x2000000,点击该窗口下绿色加号 ,在弹出的窗口输入要查询的地址。此处也可更改不同地址内的数据,要注意的是根据芯片手册看此地址是否可以读写。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(11)
    【外设寄存器窗口】Peripherals窗口可以选择要观察的外设寄存器,一同展示的内容除外设寄存器名称外,还有地址以及描述信息。
    MounRiver Stuido IDE-RISC-V MCU开发 (七):代码调试risc-v单片机中文社区(12)





    上一篇:RISC-V MCU开发 (六):代码下载
    下一篇:RISC-V MCU开发 (八):工程集管理
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

      离线 

  • TA的每日心情

    2022-6-26 13:17
  • 签到天数: 4 天

    [LV.2]

    发表于 2021-10-14 23:29:13 | 显示全部楼层
    老兄,这篇调试写的不错,我前段时间被卡住很久,Jlink调试总失败,这下明白了
    全球首家只专注于RISC-V单片机行业应用的中文网站
    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条


    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-11-26 00:55 , Processed in 0.497997 second(s), 49 queries .

    快速回复 返回顶部 返回列表