跳转到主要内容

瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法

<strong><font color="#4e5e9e">01、Coremark简介</font> </strong>

CoreMark是用来衡量嵌入式系统中使用的中心处理器(CPU,或叫做微控制器MCU)性能的标准,它是在2009由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。用户可以自由的下载CoreMark,并移植到自己的平台上运行,随后就可以看到分数。

<strong><font color="#4e5e9e">02、下载CoreMark代码</font> </strong>

可以在CoreMark官网下载官方代码(https://www.eembc.org/coremark/index.php),下载完后的压缩包里面会包含如下文件:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252712-1.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

<p>CoreMark的测试代码文件包括: </p>
<ul>
<li>
<p>core_list_join.c</p>
</li>
<li>
<p>core_main.c</p>
</li>
<li>
<p>core_matrix.c</p>
</li>
<li>
<p>core_state.c</p>
</li>
<li>
<p>core_util.c</p>
</li>
<li>
<p>coremark.h</p>
</li>
<li>
<p>simple/core_portme.c</p>
</li>
<li>
<p>simple/core_portme.h</p>
</li>
</ul>

<strong><font color="#4e5e9e">03、在e2 studio里面新建CoreMark测试工程</font> </strong>

1)本人是用RA6M4开发板调试,新建一个工程,并选好所使用的的MCU型号,将上面CoreMark需要的文件直接拷贝到src文件夹下面,如下图:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252713-2.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

备注:该系统本身也会有一个main函数,该main函数里面会直接调用hal_entry函数,hal_entry.c文件是自动生成的,没办法删除,所以需要将core_main.c里面的内容全部复制到hal_entry.c文件里面,并且将里面的main(void)函数改成void hal_entry(void)。

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252714-3.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

2)配置UART串口功能,这里不着重介绍串口功能的调试,假设串口打印功能已经调通。

3)打开定时器功能,设定1ms中断一次,用于计算跑完CoreMark里面的算法需要的时间。

<strong><font color="#4e5e9e">04、移植完后代码的具体修改方法</font> </strong>

1)在hal_entry.c文件里面添加串口打印的头文件,用来调用串口打印函数。

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252715-4.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

2)在hal_entry函数里面添加打开串口功能的函数,如下图红色框内:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252716-5.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

3)修改portable_init函数,由于许多功能的初始化配置(如:时钟)已经在进入hal_entry函数前已经配置好了(可以参考startup.c文件,系统启动后会先进入这个文件),这里就不需要进行任何初始化配置,另外也无任何传入参数,所以将传入参数删掉,具体修改如下图:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252717-6.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>
<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252718-7.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

4)修改计时相关代码,本人使用的是定时器功能1ms中断一次,具体修改如下:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252719-8.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>
<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252720-9.png&…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

增加1ms定时器中断函数,如下图:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252721-10.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

5)修改迭代次数,并增加Tick函数的定义

根据系统运行的情况,可以调整ITERATIONS的数值,但要保证程序运行时间至少要大于10s。

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252722-11.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

6)设置打印信息,根据编译器的版本,自行定义,如下图:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252723-12.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

7)如果自己的打印函数和CoreMark代码里面的打印函数名不一致,用自己的串口打印函数替换ee_printf()打印函数

8)e2 studio编译环境默认是不能打印float字符的,点击菜单栏的Project->C/C++ Project Settings,进入该界面进行配置,如下图:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252724-13.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>
<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252725-14.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

<strong><font color="#4e5e9e">05、运行结果如下图</font> </strong>

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560112-252726-15.png…; alt=“瑞萨RA系列MCU基于e² studio编译环境下的CoreMark移植跑分方法"></center>

来源:<a href="https://mp.weixin.qq.com/s/6Ex1IWX84JJGTYXt8Dd7Rw">瑞萨MCU小百科</a&gt;
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。