实测 CH32V203:CoreMark 跑分 454.23!用 MRS Agent 自动完成性能测试与优化
在 MCU 选型时,处理器的主频往往是一个直观的参考指标,但主频并不能完全代表芯片的实际运算能力。对于开发者来说,CoreMark 是一个比较常用的 MCU CPU 性能基准测试工具。它通过链表处理、矩阵运算和状态机处理等典型运算任务,对处理器的整数运算能力进行评估。
这次,我们用沁恒 CH32V203C8T6 做了一次实际测试。五年前就用过CH32V203,使用比较熟练。
比较有意思的是,这次测试并没有按照传统方式手动创建工程、移植代码、反复编译和读取结果,而是直接使用 MounRiver Studio(MRS)内置的原生 AI Agent,让它协助完成整个 CoreMark 测试流程。
最终,CH32V203C8T6 在 144MHz 主频下取得了 454.23 CoreMark,3.154 CoreMark/MHz 的成绩。按照约 150 CoreMark 的传统 72MHz STM32F103 参考成绩计算,性能约为其 3 倍。
下面记录一下整个测试过程。
一、测试平台与硬件准备
本次测试选用 CH32V203C8T6,搭配 WCH-Link 下载调试器。
主要测试环境如下:
| 项目 | 测试配置 |
|---|---|
| 测试芯片 | CH32V203C8T6 |
| CPU 架构 | RISC-V |
| 指令集 | RV32IMAC + XW 扩展 |
| 工作主频 | 144MHz |
| 外部晶振 | 8MHz |
| 下载调试器 | WCH-Link |
| 开发环境 | MounRiver Studio(MRS) |
| 编译工具链 | WCH GCC15 |
| 测试项目 | CoreMark 跑分 |
硬件连接比较简单,将 CH32V203C8T6 开发板连接 WCH-Link,完成供电和调试接口连接即可。

本次测试没有额外连接串口,后续直接通过 MRS 调试器读取程序运行后保存在 MCU 内部的结果变量。
二、让 MRS Agent 自动完成 CoreMark 测试
硬件连接完成后,打开新版 MRS,在内置 Agent 对话框中直接输入测试需求:
已将 CH32V203C8T6 接好 LINK,帮我进行 CoreMark 跑分,并优化,最终给我结果。
对于熟悉 MCU 开发的工程师来说,这个任务并不陌生,但完整执行下来,通常需要经历工程创建、源码移植、时钟配置、编译参数调整、程序下载、运行测试以及结果验证等多个环节。
这次则直接把目标交给 MRS Agent。
在明确芯片型号和硬件连接条件后,MRS Agent 开始围绕 CoreMark 测试任务展开工作。
整个过程主要包括:
1. 自动准备测试工程
Agent 基于 CH32V20x EVT 中的官方 CoreMark 工程,创建 CH32V203C8T6 对应的开发工程,并整理 CoreMark 源码及移植层。
2. 配置系统时钟
将系统时钟配置为 144MHz,采用 8MHz 外部晶振,通过 PLL 倍频获得目标主频。
3. 配置编译环境
根据芯片对应的 RISC-V 指令集和 ABI,配置编译工具链及相关参数,为后续性能测试做好准备。
4. 自动编译、下载与调试
完成工程编译后,通过 WCH-Link 下载程序,并启动调试运行。
5. 读取测试结果
考虑到本次没有使用串口,Agent 采用在固件中增加结果导出变量的方式,将 CoreMark 分数、运行时间、迭代次数和 CRC 校验结果保存在 MCU 内部,再通过 MRS 调试器读取。
从工程准备到最终读取测试数据,原本需要工程师逐项操作的多个环节,都由 MRS Agent 协助完成。
三、CoreMark 实测成绩:454.23
先看最终成绩。
| 测试项目 | 实测结果 |
|---|---|
| CPU 主频 | 144MHz |
| 迭代次数 | 5500 |
| 总运行时间 | 12.108s |
| CoreMark | 454.23 |
| CoreMark/MHz | 3.154 |
| CRC 错误数 | 0 |
结果:454.23 CoreMark,3.154 CoreMark/MHz。
这里值得关注的是归一化成绩 CoreMark/MHz。
它可以帮助我们在不同主频条件下观察处理器的单位频率性能。本次 CH32V203 的归一化成绩达到 3.154 CoreMark/MHz。
以传统 72MHz STM32F103 约 150 CoreMark 的参考成绩作为对比:
-
CH32V203:454.23 CoreMark(144MHz)
-
传统 72MHz STM32F103:约 150 CoreMark(72MHz)
-
性能对比:约 3 倍
需要说明的是,上述 STM32F103 数值为参考对比,并非本次在同一测试平台、同一编译环境下重新测得的结果。不同编译器版本、优化选项及测试配置都会影响最终成绩。
四、不只是跑分,Agent 还完成了编译优化
这次测试中,我觉得比较有价值的一点,是 MRS Agent 并没有停留在完成一次编译和运行,而是继续尝试不同编译配置,比较实际性能差异。

下面是本次优化过程中的部分测试数据:
| 编译配置 | 主频 | CoreMark | CoreMark/MHz |
|---|---|---|---|
| -O2 初始配置 | 96MHz | 255.88 | 2.665 |
| -O2 | 144MHz | 383.82 | 2.665 |
| -Ofast + 官方优化选项 | 144MHz | 453.71 | 3.151 |
| -Ofast + 官方优化选项 + LTO | 144MHz | 435.78 | 3.026 |
| 最终优化配置 | 144MHz | 454.23 | 3.154 |
从数据中可以看出几个比较有意思的现象:
1. 主频提升带来的性能增长比较直接。
在 -O2 配置下,96MHz 时得分为 255.88,提升到 144MHz 后达到 383.82,单位频率成绩保持一致。
2. 编译优化对最终成绩影响明显。
将初始 -O2 配置调整为 -Ofast,并叠加沁恒官方 CoreMark 工程中的附加优化选项后,单位频率成绩从 2.665 提升到 3.151,提升约 18.2%。
3. LTO 并不是开启后就一定更快。
本次测试中,增加 -flto 后,成绩反而从 453.71 降到了 435.78,下降约 3.9%。因此 Agent 最终回退了这一选项。
最终采用的配置为 -Ofast、官方附加优化选项,并使用 -mno-save-restore。
最终成绩达到 454.23 CoreMark。
这也说明,编译优化不能只看选项是否开启,更重要的是结合具体芯片、工具链和工程进行实测。
五、如何确认跑分结果有效?
跑分高并不意味着结果一定可靠,基准测试还需要进行正确性验证。
本次测试采用 CoreMark 1.0 官方源码及 WCH EVT 移植层,使用 2K performance run 模式,Static 存储方式,5500 次迭代。
测试完成后,还对程序运行结果进行了 CRC 校验。
| 校验项目 | 实测结果 | 状态 |
|---|---|---|
| seedcrc | 0xE9F5 | 通过 |
| crclist | 0xE714 | 通过 |
| crcmatrix | 与标准值一致 | 通过 |
| crcstate | 与标准值一致 | 通过 |
| total_errors | 0 | 通过 |
另外,本次测试总运行时间为 12.108 秒,满足 CoreMark 测试运行时间不少于 10 秒的要求。
因此,本次 454.23 CoreMark 的结果不仅有分数,也通过了对应的 CRC 正确性验证。
六、这次体验:MRS Agent 更像一个能干活的开发帮手
这次测试让我比较直观地感受到,AI 融入 MCU 开发环境后,带来的变化不只是代码生成。
过去做一次完整的性能测试,工程师需要自己查找参考工程、配置工程环境、调整编译参数、下载程序、启动调试,再逐项确认运行结果。
而这次,我只需要向 MRS Agent 描述目标和当前硬件连接情况,它就能围绕任务逐步推进,完成工程准备、编译、下载、调试、性能优化和结果整理。
尤其是在优化环节,它还能根据不同配置的实际跑分数据进行比较,而不是简单地推荐一组看起来更激进的编译参数。
当然,最终的硬件连接、测试条件和关键结果仍然需要工程师确认,但这些重复性的工程操作已经能够交给 Agent 协助处理。
对于日常 MCU 开发来说,这样的 MRS Agent 更像是一个随时可以调用的开发好帮手。
从一句测试需求,到最终拿到经过校验的 CoreMark 成绩,这次 CH32V203 的跑分体验,也让我看到了 AI 辅助嵌入式开发在实际工程中的价值。
测试结论:
CH32V203C8T6 在 144MHz 主频下,经过编译优化后,CoreMark 1.0 实测成绩达到 454.23,3.154 CoreMark/MHz,CRC 校验全部通过。
而新版 MRS 内置原生 Agent,也完成了从工程准备到跑分优化、结果验证的完整测试流程。
这次测试,既验证了 CH32V203 的运算性能,也体验了一次 AI 参与真实 MCU 开发任务的完整过程。
更多推荐
所有评论(0)