在 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
CoreMark454.23
CoreMark/MHz3.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 并没有停留在完成一次编译和运行,而是继续尝试不同编译配置,比较实际性能差异。

编译优化

下面是本次优化过程中的部分测试数据:

编译配置主频CoreMarkCoreMark/MHz
-O2 初始配置96MHz255.882.665
-O2144MHz383.822.665
-Ofast + 官方优化选项144MHz453.713.151
-Ofast + 官方优化选项 + LTO144MHz435.783.026
最终优化配置144MHz454.233.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 校验。

校验项目实测结果状态
seedcrc0xE9F5通过
crclist0xE714通过
crcmatrix与标准值一致通过
crcstate与标准值一致通过
total_errors0通过

另外,本次测试总运行时间为 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 开发任务的完整过程。

Logo

更多推荐