查看: 3897|回复: 1

[原创] LPC824 coremark移植

[复制链接]
  • TA的每日心情
    开心
    2018-2-10 08:10
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    98
    最后登录
    2018-2-10
    发表于 2018-1-15 14:37:05 | 显示全部楼层 |阅读模式
    本帖最后由 shenxfs 于 2018-1-15 14:40 编辑

    NXP社区已有人分享了LPC54114的coremark移植和跑分,但还没有在MCUXpressoIDE移植过,这也是申请试用LPC824Lite开发板主要原因。由于有过在NUCLEO-L432KC移植的经历,LPC824Lite的移植也比较顺利,现把这个过程分享一下。
    下载coremark源码
    在eembc官网下载源码
    需要注册有些不方便,可以网上搜索下载分享的源码,在github网也能下载,也可在我的github版本库下载
    已移植好的项目
    创建MCUXpressoIDE项目
    在“Quick Panel”面板,新建基于“C Project(Semihosted)”名为coremark项目
    quick.png
    在coremark项目中建inc目录,将下载的coremark1.0的core_list_jion.c、core_main.c、core_matrix.c、core_state.c、core_util.c、simpl/core_portme.c复制到src目录,将coremark.h、simpl/core_portme.h复制到inc目录。按F5刷新
    project.png

    coremark.c是系统创建的要把它从项目中移走,因core_main.c也有main函数,所以coremark.c就不需要了。移除coremark.c方法是在“项目管理器页”右击该文件单击“Resource Configuration”->"Exlude from build..."全选中,按“Ok”就可移除该文件。同时移除aebi_romdiv_path.s、crp.c和mtb.c。
    remove.png


    coremark移植


    cormark移植只需修改core_portme.c和core_portme.h两个接口文件,首先修改core_portme.c,在文件头部添加
    1. #include "board.h"

    2.      #define TICKRATE_HZ (1000)        /* 1000 ticks per second */

    3.      __IO uint32_t ticks = 0;
    4.      void SysTick_Handler(void){
    5.          ticks++;
    6.     }
    复制代码
    注释掉以下无用行
    1. //#define NSECS_PER_SEC CLOCKS_PER_SEC
    2.      //#define CORETIMETYPE clock_t
    3.      //#define GETMYTIME(_t) (*_t=clock())
    4.      //#define MYTIMEDIFF(fin,ini) ((fin)-(ini))
    5.      //#define TIMER_RES_DIVIDER 1
    6.      //#define SAMPLE_TIME_IMPLEMENTATION 1
    7.      //#define EE_TICKS_PER_SEC (NSECS_PER_SEC / TIMER_RES_DIVIDER)
    复制代码
    改写宏“EE_TICKS_PER_SEC”
    1. #define EE_TICKS_PER_SEC (1000)
    复制代码
    改写start_time函数
    1. void start_time(void) {
    2.             //GETMYTIME(&start_time_val );
    3.            ticks = 0;
    4.            SysTick_Config(SystemCoreClock / TICKRATE_HZ);
    5.     }
    复制代码
    改写stop_time函数
    1. void stop_time(void) {
    2.           //GETMYTIME(&stop_time_val );
    3.           SysTick->CTRL &= SysTick_CTRL_ENABLE_Msk;
    4.           SysTick->VAL = 0;
    5.     }
    复制代码
    改写get_time函数
    1. CORE_TICKS get_time(void) {
    2.     //CORE_TICKSelapsed=(CORE_TICKS)(MYTIMEDIFF(stop_time_val,start_time_val));
    3.           CORE_TICKS elapsed=(CORE_TICKS)ticks;
    4.           return elapsed;
    5.     }
    复制代码
    给portable_init函数添加针对LPC824Lite初始化代码
    1. void portable_init(core_portable *p, int *argc, char *argv[])
    2.     {
    3.    Board_Init();
    4.    SystemCoreClockUpdate();
    5.   Board_LED_Set(0, true);
    6.   ee_printf("start coremark\n");
    7.   if (sizeof(ee_ptr_int) != sizeof(ee_u8 *)) {
    8.    ee_printf("ERROR! Please define ee_ptr_int to a type that holds a pointer!\n");
    9.   }
    10.   if (sizeof(ee_u32) != 4) {
    11.   ee_printf("ERROR! Please define ee_u32 to a 32b unsigned type!\n");
    12.   }
    13.   p->portable_id=1;
    14.     }
    复制代码
    编译环境设置
    在coremark属性窗口添加引用的库(lpc8_chip_82x和lpc_board_lpc824lite)
    dep.png
    添加头文件路径,两lpc8_chip_82x和lpc_board_lpc824lite库的头文件路径
    pre.png
    添加ITERATIONS宏定义为12000,表示运算次数,删除"__CODE_RED"宏
    iteration.png
    去掉使能自动加入代码读取保护镜像的选项("Enable automatic placement of Code Read Protection field in image")
    linker.png
    设置优化选项“-O3 -fno-common -funroll-loops -finline-functions”
    opt.png
    设置所需的库和搜索库的路径
    libs.png
    这样就完成移植,编译下载运行看结果
    编译链接目标长度

    size.png
    编译优化选项是“Os”的结果
    lpc.png
    编译优化选项是“O3”的结果
    lpcO3.png
    运行结果不尽人意才十几分左右,每MHz分数也只有不到0.6,与LPC54114跑分差不多,与STM32L0x相差甚远,LPC为降低功耗损失性能太多。
    exlude.png
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-7-31 08:40
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    299

    主题

    876

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14839
    最后登录
    2020-3-1
    发表于 2018-1-25 10:52:08 | 显示全部楼层
    这是给824跑了个分吗哈哈~赞一个~
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-9 12:50 , Processed in 0.079538 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表