RISC-V IDE MRS2调试秘籍(二):通过测量代码执行周期,定位程序运行高耗时代码

发布时间:2026/7/8 6:34:18
RISC-V IDE MRS2调试秘籍(二):通过测量代码执行周期,定位程序运行高耗时代码 一、使用场景在RISC-V嵌入式开发过程中代码执行时间过长可能会导致任务调度异常、中断阻塞、通信丢包等问题因此测量和统计代码的执行耗时是一种定位解决此类问题的常见方法。覆盖多调试场景的集成开发工具——MRS2内置的计算代码执行周期功能适用于CH32V4X7系列芯片(例如CH32V407、CH32V467)和CH32H417的V5F核工程可以快捷方便地测量代码的执行耗时。本功能支持自动计算代码执行耗时和CPI(执行一条指令所需的平均时钟周期数)如下图1.1所示帮助开发者量化代码性能、定位性能瓶颈优化代码逻辑。图1.1 代码的执行耗时分析结果二、核心原理MRS2的计算代码执行周期功能依托断点机制结合相关寄存器实现其中寄存器主要是mcycle和minstret寄存器。mcycle寄存器记录当前硬件线程从任意起点至今内核消耗的总时钟周期数minstret寄存器记录硬件线程从任意起点至今成功提交的指令总条数。使用本功能时用户无需修改业务代码仅需在目标代码首尾各自设置断点待程序运行到结束断点处工具将自动读取相关寄存器的值自动计算得到代码段的实际执行时钟周期与CPI。三、实操步骤3.1进入调试状态工程编译无报错下载程序至芯片正常进入Debug调试模式并且GDB处于暂停状态3.2多入口实现功能代码编辑区入口自动测量选择待测量代码区域的起始行和结束行右键菜单选择” Calculate Code Execution Cycle”如下图3.1所示图3.1 编辑区功能入口每个工程第一次使用该功能时会自动弹框需要手动输入系统时钟频率如下图3.2所示。输入频率后点击”Confirm”按钮GDB会自动停止在结束断点处工具会自动弹出功能页面显示分析结果如下图3.3所示。图3.2 设置系统时钟频率页面图3.3 代码执行耗时分析结果主菜单入口调试模式下点击主菜单”Debug-Calculate Code Execution Cycle”会自动在代码编辑区下方打开功能页面如下图3.4所示图3.4 主菜单入口和功能页面设置当前芯片的系统时钟频率点击”Start Monitoring Execution”开始监测代码执行情况如下图3.5所示图3.5 设置时钟频率和开始监测代码执行在需要测量的代码起始行和结束行设置两个断点如下图3.6所示。图3.6 设置起始和结束断点之后先点击菜单栏的”Continue”按钮运行到测量代码段的起始断点如图3.7所示图3.7 代码运行到起始断点再点击菜单栏的”Continue” 运行到测量代码段的结束断点IDE会自动搜集并计算相关信息显示到图表上如下图3.8所示图3.8 代码运行到结束断点和分析结果页面