一、STM32Cube与Coremark简单介绍
1.STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等).
- 直观的STM32微控制器的选择和时钟树配置
- 微控制器图形化配置外围设备和中间件的功能模式和初始化参数
- C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。
- 支持ST官方推出的Nucleo系列、Discovery系列、Evalboard系列开发板
2.CoreMark是一项有趣和有用的基准测试,它的目标就是要测试处理器核心性能。CoreMark能分析并为处理器管线架构和效率评分,通过执行三个主要任务来测试常用运算的执行。重要的是,CoreMark测试的设计方式,能让处理器不受内存的影响。所以目前CoreMark已迅速成为量测与比较处理器性能的业界标准基准测试。CoreMark数字越高,意味着更高的性能,大家可以尝试的去看一下内核的性能参数评估,在能效那一栏,现在常常是伴随着CoreMark评分和Dhtystone评分的,即CoreMark/MHz和DMIPS/MHz。列如:ST给出STM32L432KC的Coremark值为273.55 Coremark® (3.42 Coremark/MHz @80 MHz)
二、验证coremark值
1.STM32Cube创建测试框架
打开软件新建工程,选NUCLEO-STM32L432KC,为开发对象。
选择时钟来源和USART2
时钟配置,这里选用80Mhz
Step1 :PLL source 选择内部高速时钟( HSI,16MHz)
Step2 :系统时钟源选择 PLLCLK
Step3 :HCLK 设置为 80MHz,回车后工具会自动计算出合适的 PLL 配置参数。
到 Configuration 页面,对串口进行参数配置。
设置串口参数为:
波特率: 9600Bits/s
数据长度: 8bit(包括奇偶校验位)
校验: ODD
停止位: 1 bit
生成 Keil 项目代码
- 做完上面的设置后,就可以让 CubeMX 帮我们生成代码了。
- 选择 Projec-->Generate Code,在跳出的 Project 配置窗口中指定项目名称和保存路径。选择要使用的工具链,这里选择MDK-ARM V5。
- 配置最小堆栈大小。
- 点击“OK”后, CubeMX 会自动在指定路径生成一个 Keil 的工程。 这个工程已经包含了所有用到的底层驱动和并已经添加了系
- 统初始化的代码。
2.Coremark代码移植
下载COREMARK的源代码,下载要先去注册
下载源代码后解压,基本的目录结构如图
将下列代码复制到keil工程文件内,并添加进keil工程
关于相关代码的移植,STM32社区也给出了一个详细的指导方案指导方案。这里就不在详细写移植过程。为了完全释放STM32L432的性能,需要对MDK进行一些优化设置。
移植好代码后,编译无错误,下载到Nucleo-L432KC,打开串口助手,显示效果如图
测试代码是采用了爱板网的网友netlhx提供的代码。
三、总结
用Coremark 测出的值为209,而官方给出的值为273,相差了约70。大家也别太在意这个值,也只能做个参考而已,因为考虑到测试环境的影响,工具链的选择,参数优化等等这些因素,对测试的结果有影响。希望ST官方,能尽早出一个关于Coremark测试详细的移植,及相关参数优化的的具体方案。