[RISC-V MCU 应用开发] 初学CH32V208进行跑分测试

[复制链接]
 楼主| qjixf 发表于 2023-1-30 14:52 | 显示全部楼层 |阅读模式
本帖最后由 qjixf 于 2023-1-30 16:10 编辑

刚拿到CH32V208EVT评估版,参考前面网友的帖子,先是跑了coremark,381分,后又修改了dhrystone,237分。
  • CH32V208的片上FLASH+SRAM按照官网手册默认128+64k,可以按需求通过更改OptionBytes相关部分设置成144+48K、160+32K等方式,最简单方法就是在MRS里面下载设置中修改:
    453363d76369245c1.png
    7241363d76436d2943.png
    同时修改链接脚本Link.ld文件:
    7247263d7676407f8c.png
  • 使用SysTick计数器实现测试计时功能,初始化systick代码如下:
        SysTick->CTLR &= ~(1<<4); //向上计数
        SysTick->CTLR &= ~(1<<2); //HCLK/8 做时基;
        SysTick->CTLR |= (1<<5); //计数值初始值更新为0

        SysTick->SR &= ~(1<<0);   //0x00000000;               //状态寄存器复位
        SysTick->CMP = 0xffffffffffffffff;                   //比较寄存器赋值
    启动和停止SysTick计数通过开关SysTick控制寄存器的使能位实现:
    void SysTick_Start(void)  //启动计数器
    {
        SysTick->CTLR |= (1<<0);
    }

    void SysTick_Stop(void)  //停止计数器
    {
        SysTick->CTLR &= ~(1 << 0);
    }

    计时通过读取SysTick当前计数值后计算获得:
      在coremark的core_portme.c里定义好每秒tick数即SysTick计数值,确定好ITERATIONS数值以满足CoreMark要求的最短测试时间10s,修改与定时相关的三个函数:
    volatile ee_s32 seed4_volatile = 4000; //ITERATIONS;

    #define EE_TICKS_PER_SEC           (SystemCoreClock / 8 )

    void start_time(void)
    {
        //GETMYTIME(&start_time_val);
        SysTick_Init();
    //    start_time_val = SysTick->CNT ;
        SysTick_Start();
    }

    void stop_time(void)
    {
        //GETMYTIME(&stop_time_val);
    //    stop_time_val = SysTick->CNT ;
        SysTick_Stop();
    }

    CORE_TICKS get_time(void)
    {
        /*
        CORE_TICKS elapsed
            = (CORE_TICKS)(MYTIMEDIFF(stop_time_val, start_time_val));
        return elapsed;
        */
        return SysTick->CNT;
    }


    Dhrystone修改在dhry_1.c中的计时函数:
    void dhry_start_time (void)
    {
         SysTick_Init();
         SysTick_Start();
    }

    void dhry_end_time (void)
    {
         SysTick_Stop();
    }

    double dhry_gettime_secs (void)
    {
         double tt=1.0;
         u64 tcnt;
         tcnt = SysTick->CNT;
         tt = tcnt / (SystemCoreClock/8.0);
         return tt;
    }

    其他需要修改的地方按照编译错误提示更正或删除不需要的代码即可。
  • 跑分结果如下:
    8021763d77a25119a7.png
    4297563d77a6b66e48.png

test1.zip

193.84 KB, 下载次数: 0

kavent 发表于 2023-1-31 14:17 | 显示全部楼层
路过,头一回听说单片机跑分!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

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