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

简介: MounRiver® Studio(MRS)配合GD-Link、WCH-Link、JLink等在线调试下载器,可支持GDVFx系列、CH56x、CH57x、CH58x、CH32Fx、CH32Vx等RISC-V/ARM内核MCU工程的代码调试功能。本文主要介绍MRS针对RISC-V内核MCU的代码调试操作。

MounRiver® Studio(MRS)配合GD-Link、WCH-Link、JLink等在线调试下载器,可支持GDVFx系列、CH56x、CH57x、CH58x、CH32Fx、CH32Vx等RISC-V/ARM内核MCU工程的代码调试功能。本文主要介绍MRS针对RISC-V内核MCU的代码调试操作。

【启动调试】以CH32V103C8T6的芯片工程为例来说,首先保证工程可以编译通过,然后点击菜单栏 按钮,开始进入调试模式,正常进入调试模式会停在如图所示的位置,此位置有一个临时断点:
1.png

【更改默认断点位置】当然如果希望工程可以直接停在main函数起始地方,也可以去手动更改此断点的位置,点击调试图标旁的下拉按钮,选择”Debug Configurations”,在弹出的页面中选择Startup选项卡,将set breakpoint at 设置为 main即可。
2.png

配置完成后点击右下角 Debug,或者保存之后退出配置,点击菜单栏 ,进入调试模式后就会停在刚才设置的位置
3.png

【查看机器码】进入调试之后,可以看到左下角Disassembly窗口,此窗口可以显示PC附近代码的汇编以及地址,也可以在左侧空白处鼠标右键,选择show opcodes,来显示机器码。
4.png

【机器码断点与跳转】双击反汇编窗口左侧空白处也可以设置断点,红框位置处可以填写16进制的地址,用来跳转到想要查看位置的汇编代码。主窗口用来显示代码运行位置,可以在左侧窗体位置处双击来增加或取消断点。
5.png

【软件断点】因为采用的是软件断点,理论上不限制断点个数,但是过多的断点会引起程序仿真变慢。
6.png

【变量查看】右侧Variables窗口会显示当前函数中变量的值。也可以在此窗口修改你想要改变的变量的值,但注意只是修改到Ram,重新上电后该值恢复为实际大小。
7.png

【添加监测变量】Experssions可以自定义添加监测的变量,也同样可以修改,效果和Variables窗口中的一致。
8.png

【错误中断】下方Registers窗口显示的是RISCV内核的CSR+GPR寄存器,可以用来观测内核状态,有几个寄存器在出现HARDFAULT 错误时可以帮助定位问题,在进入硬件错误中断处理函数时,mepc显示的是出错时的地址,mcause 显示的是原因,mtval 显示的是出错时cpu取到的值,mcause值含义如下图。
9.png

【断点窗口】Breakpoints窗口可以显示所有设置的断点位置,可以在此处使能或者删除段断点。
10.png

【内存窗口】Memory窗口可以用来查询不同地址的值,例如我们查询0x2000000,点击该窗口下绿色加号 ,在弹出的窗口输入要查询的地址。此处也可更改不同地址内的数据,要注意的是根据芯片手册看此地址是否可以读写。
11.png

【外设寄存器窗口】Peripherals窗口可以选择要观察的外设寄存器,一同展示的内容除外设寄存器名称外,还有地址以及描述信息。
12.png

相关文章
|
5月前
|
算法 数据可视化 编译器
第二代上位机开发环境搭建
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。 在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资
|
8月前
|
存储 芯片
ARM简单程序设计【嵌入式系统】
ARM简单程序设计【嵌入式系统】
102 0
|
数据处理 数据安全/隐私保护 SoC
DSP+ZYNQ硬件说明手册-XQTyer【开源】
XQ6657Z35/45-EVM 高速数据处理评估板(XQTyer 评估板)由广州星嵌电子科技有限公司自主研发,包含一片TI DSP TMS320C6657和一片Xilinx ZYNQ-7000 SoC 处理器XC7Z035-2FFG676I。适用于无人机蜂群、软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等领域。
DSP+ZYNQ硬件说明手册-XQTyer【开源】
|
数据处理 数据安全/隐私保护 SoC
DSP+ZYNQ多核例程使用手册-XQTyer【开源】
DSP采用 TMS320C6657 双核C66x 定点/浮点,每核主频1GHz/1.25GHz。 Xilinx Zynq SoC处理器采用的XC7Z035/045集成PL端Kintex-7架构+PS 端双核ARM Cortex-A9 ,28nm可编程逻辑资源。
DSP+ZYNQ多核例程使用手册-XQTyer【开源】
|
编解码 网络安全 开发者
RISC-V生态开发套件解析(三):LicheeRV 86开发板外设介绍
随着RISC-V生态的蓬勃发展,相关开源开发套件也开始逐渐丰富。为了帮助开发者快速了解、玩转新推出的RISC-V开发套件,OCC推出RISC-V生态开发套件解析系列内容,详细讲解生态开发套件的功能特点与上手教程。
847 1
RISC-V生态开发套件解析(三):LicheeRV 86开发板外设介绍
|
物联网 编译器 调度
RISC-V MCU开发实战 (三):移植鸿蒙OS项目
ARM上移植实时操作系统大家可能比较熟悉,对于RISC-V内核的MCU,可能相对比较陌生。下面结合WCH的CH32V103和CH32V307两款芯片来详细说下针对RISC-V平台,移植实时操作系统的注意点。
RISC-V MCU开发实战 (三):移植鸿蒙OS项目
|
芯片 Windows 内存技术
RISC-V MCU开发(十三):嵌入式开发相关工具软件
一款集成开发环境软件除了代码编辑、编译和调试这些基本功能外,也会集成其他工具软件,方便工程师们更高效的开发。MounRiver® Studio(MRS)使用了主菜单扩展的方式,将实用的工具软件添加到软件平台中。软件工具包含、但不仅限于设备管理器、内核烧录的等工具。随着逐渐丰富的内核分析需求,软件工具会一直完善并集成添加。
RISC-V MCU开发(十三):嵌入式开发相关工具软件
RISC-V MCU开发 (十四):帮助与反馈
为了更快地帮助用户使用,以及解决开发中遇到的问题,MounRiver Studio(MRS)通过多种形式协助用户,包括文档、视频以及向导页等。同时MRS也提供了高效的反馈通道,用户可以通过此渠道直接与MRS开发人员联系获取技术支持。
RISC-V MCU开发 (十四):帮助与反馈
|
NoSQL Linux 索引
RISC-V MCU开发(十二):命令行操作
考虑到习惯命令行操作的用户群体,MounRiver® Studio(MRS)除了使用图形化UI进行用户交互外,也提供了脱离界面的命令行操作说明,用于对编译后的工程进行烧录和调试。如果是Linux平台用户,您也可以在MRS官网的下载页面下载工具链和OpenOCD压缩包,根据说明引导进行实践。本文以Windows平台软件环境MRS1.51进行介绍。
RISC-V MCU开发(十二):命令行操作
|
数据可视化 IDE 开发工具
RISC-V MCU开发 (十):文件版本管理
版本控制系统(Version Control System)是多数IDE不可缺少的一部分,其主要作用是记录一个或若干文件内容的变化,例如文件的修改、删除等,使得开发者能够追踪历史版本,可以“还原”至某个历史状态。MounRiver® Studio(MRS)提供便捷的版本控制功能,采用可视化UI设计,简单高效。
RISC-V MCU开发 (十):文件版本管理