打印
[ARM7]

【自选开发板活动】imxRT1021,跨界,我们是认真的

[复制链接]
1145|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yangjiaxu 于 2022-9-23 23:44 编辑
#申请原创#[url=home.php?mod=space&uid=760190]@21小跑堂 @21ic小管家 [/url]
大家好,我是豆包,上一贴主要讲了开发板的前期的环境搭建工作,其实写的还是较为简单,因为野火团队都已经给搭建好环境了,所以也不需要重新搭建,这给我们省了很多的时间和省去了很多不必要的麻烦。
“跨界”,这个词大家应该都比较熟悉,通俗的说就是在一个领域有所成就,还可以在另一个领域有所建树,其实“跨界”就是“整合”,将两个不相关的领域整合到一起,本帖我来展现一下使用coremark来测试一下imxRT1021的性能,看看imxRT1021是如何“跨界”的。
首先要准备一个工程,这个工程需要带有串口打印功能,和基本的时钟配置功能,本次我将采用上回说到的LED工程来实现,值得注意的是,该工程采用的是keil实现;
工程准备好了,那么接下来下载一下coremark的源码,直接点击下载即可,就可以将源码下载到本地的https://gitcode.net/mirrors/eembc/coremark?utm_source=csdn_github_accelerator 下载完成之后,需要将目录下的c文件和h文件,还有simple文件下的c文件和h文件都要拷贝到你的工程之中,如图1所示。
图1 需要的文件
拷贝到工程之后,就开始进行项目移植了。
coremark_v1.0
              barebones            --移植到裸机下需要修改的文件
                     core_portme.h    -- 移植平台工程具体配置信息
                     core_portme.c    -- 计时以及板级初始化实现  
                     cvt.c
                     ee_printf.c      -- 打印函数串口发送实现
              core_main.c           --主程序入口
              core_state.c          --状态机控制子程序
              core_list_join.c      --列表操作子程序
              core_matrix.c         --矩阵运算子程序
              core_util.c           --CRC计算子程序
              coremark.h            --工程配置与数据结构定义
将文件添加完成之后,就需要进行修改了,首先就是将初始化部分添加到coremark的void portable_init(core_portable *p, int *argc, char *argv[])之中;
void portable_init(core_portable *p, int *argc, char *argv[])

{

    /* Init board hardware. */

    /* 初始化内存保护单元 */

    BOARD_ConfigMPU();

    /* 初始化开发板引脚 */

    BOARD_InitPins();

    /* 初始化开发板时钟 */

    BOARD_BootClockRUN();

       /* Init timer for microsecond function. */

    timer_pit_init();

    /* 初始化调试串口 */

    BOARD_InitDebugConsole();

       if (sizeof(ee_ptr_int) != sizeof(ee_u8 *)) {

              ee_printf("ERROR! Please define ee_ptr_int to a type that holds a pointer!\n");

       }

       if (sizeof(ee_u32) != 4) {

              ee_printf("ERROR! Please define ee_u32 to a 32b unsigned type!\n");

       }

       p->portable_id=1;

}
添加完成之后就可以删掉原来的mian.c文件了,因为该初始化文件已经包含了串口以及时钟的配置等等,所以初始化部分就算是完成了,接下来就需要修改计时部分的功能代码。
说实话,网上针对imxRT1021的跑分操作还是比较少的,好在有大佬痞子衡的详细教程,让我摆脱了仅仅跑分六百多的疑问,其实就是将原来Cortex-M内核里的SysTick改为imxRT的PIT计时器,说实话,我也是第一次使用imxRT系列,针对其外设还不是很熟悉,所以就跟着大佬走吧,肯定没错,我在这里将时钟修改成PIT计时器,修改代码如下:
    /* Set PERCLK_PODF. */

    CLOCK_SetDiv(kCLOCK_PerclkDiv, 0x1);

    /* Set per clock source. */

CLOCK_SetMux(kCLOCK_PerclkMux, 0x0);

接下来是串口打印功能,由于我们之前的工程已经带有串口打印功能,所以这边代码就可以这么修改即可。

void uart_send_char(char c) {

    if (c == '\n')

    {

        char tmp = '\r';

        LPUART_WriteBlocking((LPUART_Type *)BOARD_DEBUG_UART_BASEADDR, (const uint8_t *)&tmp, 1);

    }

    LPUART_WriteBlocking((LPUART_Type *)BOARD_DEBUG_UART_BASEADDR, (const uint8_t *)&c, 1);

/*    Output of a char to a UART usually follows the following model:

       Wait until UART is ready

       Write char to UART

       Wait until UART is done

      

       Or in code:

       while (*UART_CONTROL_ADDRESS != UART_READY);

       *UART_DATA_ADDRESS = c;

       while (*UART_CONTROL_ADDRESS != UART_READY);

       Check the UART sample code on your platform or the board documentation.

*/

}

好了,最后就是配置一下宏定义,
#define COMPILER_VERSION "MDK-ARM Plus V5.34.0.0"

#define COMPILER_FLAGS "-o3" /* "Please put compiler flags here (e.g. -o3)" */

#define MEM_LOCATION "STACK"

#define ITERATIONS 25000//此处需要设置让coremark跑到大于10秒,测试数据方可有效<span style="background-color: rgb(255, 255, 255);"> </span>
至此,coremark的工程配置就告一段落了,编译,下载,即可看到跑分结果
图2 跑分结果 2046.09
官方的imxRT1020系列的跑分结果是2517 CoreMark/1070 DMIPS @ 500 MHz 说实话,我这个2046.09的跑分结果还是差很多的,我修改了一些配置,发现也没有让跑分增加,就很绝望,最后,看到痞子衡大佬的介绍才知道,这个coremark的跑分结果是受编译器影响的,采用IAR的话估计结果会更好一些吧,但是通过coremark的排行榜https://www.eembc.org/coremark/scores.php看,imxRT1021在与竞品STM32H743对比的话,还是完全超越的。
图3 STM32H743跑分排行

总结:其实coremark只能代表MCU的某一个参数,并不能代表这个MCU有多优秀,其实我个人觉得还是把这个MCU的生态建立起来,用的人多了,这MCU就会发挥它的作用了。好了,imxRT1021的 “跨界”测试至此要到尾声了,接下来会更加深入的体验imxRT1021,来挖掘它的性能,敬请期待~

使用特权

评论回复

相关帖子

沙发
呐咯密密| | 2022-9-26 09:51 | 只看该作者
好活,当赏

使用特权

评论回复
板凳
xu@xupt| | 2022-12-8 23:48 | 只看该作者
学习了,感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

650

主题

2702

帖子

6

粉丝