[AT32L021] 【AT-START-L021测评】3--Coremark

[复制链接]
 楼主| [鑫森淼焱垚] 发表于 2024-12-26 19:12 | 显示全部楼层 |阅读模式
本帖最后由 [鑫森淼焱垚] 于 2024-12-27 10:07 编辑

书接上文,有了 perf_counter 加持,无需再次移植 Coremark,因为 perf_counter 已经集成了 Coremark。我们仅需修改一些配置文件和代码即可运行 Coremark。

1 修改点

1.1 修改代码
main() 函数修改如下,在调用 init_cycle_counter() 初始化 perf_counter 之后,再使用 __cycleof__() 统计 LED2 翻转速度,最后调用 coremark_main() 开始运行Coremark。

  1. int main(void)
  2. {
  3.         system_clock_config();

  4.         at32_board_init();

  5.         init_cycle_counter(false);

  6.         button_exint_init();

  7.         uart_print_init(115200);
  8.         printf("at32 mcu initialize ok.\r\n");

  9.         for (int i = 5; i > 0; i--) {
  10.                 __cycleof__("LED2 toggle")
  11.                 {
  12.                         at32_led_toggle(LED2);
  13.                 }
  14.         }

  15. #ifdef __PERF_COUNTER_COREMARK__
  16.         coremark_main();
  17. #endif

  18. while (1);
  19. }


1.2 修改工程属性增加两个宏定义


按照如下操作,给工程增加两个宏定义


  • __PERF_COUNTER_COREMARK__ 只有定义了这个宏, perf_counter 组件才会使能 Coremark
  • MEM_METHOD=MEM_STATIC 设置 Coremark 运行过程中的数据分配形式,这里使用静态数组,编译时就能确定数组地址


6e4f202dfa9126658521c294ecd38fa7

2 Coremark 跑分
代码中修改 Coremark 编译器优化等级的字符串位置如下:
5b6fe1026d0ef6911c7d8accf6448878


AT32IDE 修改优化等级,按如下步骤操作:
94f4cf4b88247e2863b5047b3a83d393

2.1 优化等级 Optimize for Debug -Og


Debug 版本配置编译(其他都是 Release 版本配置)
d7be14e8a3244101fb67f70cae21e852

2.2 优化等级 None -O0
0d5dda3705b305568237a301b732cdcd

2.3 优化等级 Optimize -O1
1b13fb90b98e79621632fc2cb527249e

2.4 优化等级 Optimize more -O2
caba41b5d4fd394738ea6c6a145ad745

2.5 优化等级 Optimize most -O3
b58dd2008c676191376936deb154464a

2.6 优化等级 Optimize size -Os
0764841a6d7a83effcc9c606db53da74

2.7 优化等级 Optimize fast -Ofast
aad91b6be6b2c5c470d6d89d360b0db1

2.8 统计对比


这些测试都是在供电电压 1.8V 、处理器时钟 80MHz 时测试的,又追加了一轮供电电压 3.3V,测试结果无差异。


优化等级
LED2 Toggle 周期
Coremark 分数
-Og (Debug)
144.2
0.468221
-O0 (None)
138.4
0.468212
-O1 ()
53.6
1.605016
-O2 (more)
46.8
1.846440
-O3 (most)
69
1.811975
-Os (size)
62
1.132000
-Ofast (fast)
47.0
1.811990

从上面的数据可以看出 -Og Debug 模式速度最慢,而其他优化等级速度大约是它的4倍左右,差异还是很明显的。


TimeRiddle 发表于 2025-3-25 11:27 | 显示全部楼层
关键点清晰,测试结果详细。
梦境漫游者 发表于 2025-4-9 15:40 | 显示全部楼层
优化等级越高,理论上速度越快
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

127

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

20

主题

127

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部