色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Cortex-M的CoreMark性能測(cè)試

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-05-01 01:24 ? 次閱讀

1 CoreMark簡(jiǎn)介

CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一項(xiàng)基準(zhǔn)測(cè)試程序,CoreMark的主要目標(biāo)是簡(jiǎn)化操作,并提供一套測(cè)試單核處理器核心的方法。測(cè)試標(biāo)準(zhǔn)是在配置參數(shù)的組合下單位時(shí)間內(nèi)運(yùn)行的CoreMark程序次數(shù)(單位:CoreMark/MHz),該數(shù)字值越大則說明測(cè)試的性能越好。

目前在嵌入式CPU行業(yè)中普遍公認(rèn)的性能測(cè)試指標(biāo)的標(biāo)準(zhǔn)主要使用以下三種,MIPS、Dhrystone、Coremark,而CoreMark與Dhrystone一樣,擁有體積小、方便移植、易于理解、免費(fèi)并且顯示單個(gè)數(shù)字基準(zhǔn)分?jǐn)?shù)。與Dhrystone不同的是,Dhrystone的主要部分實(shí)際上暴露了編譯器優(yōu)化工作負(fù)載的能力,而不是實(shí)際MCU或CPU的能力,的性能,而CoreMark具有特定的運(yùn)行和報(bào)告規(guī)則,從而可以避免由于所使用的編譯庫(kù)不同而導(dǎo)致的測(cè)試結(jié)果難以比較。

官網(wǎng)地址:

https://www.eembc.org/coremark/index.php

https://github.com/eembc/coremark

2 CoreMark移植

筆者這里使用STM32來演示。

2.1 CoreMark源碼下載

首先去CoreMark 官網(wǎng)下載CoreMark源碼。

CoreMark 移植所需的如下:

  • core_list_join.c
  • core_main.c
  • core_matrix.c
  • core_state.c
  • core_util.c
  • coremark.h
  • simple/core_portme.c
  • simple/core_portme.h

2.2 移植CoreMark

1)拷貝CoreMark文件到工程

準(zhǔn)備一個(gè)STM32工程,將CoreMark所需的文件添加放到工程目錄中。

168286214279395k0isowo3

2)添加文件到工程

接下來要做的就是添加 CoreMark 代碼。因?yàn)?core_main.c 文件里已經(jīng)包含了一個(gè) main 函數(shù),所以需要在工程中將默認(rèn)創(chuàng)建的 main.c 文件刪除。

完成后的工程文件結(jié)構(gòu)如下:

1682862143332bfh37ixro2

2.3 配置 Coremark 文件

我們需要在 core_portme.c 中添加初始化的代碼,并根據(jù)不同的計(jì)時(shí)方法修改 core_portme.c 中計(jì)時(shí)相關(guān)函數(shù)和代碼。

2.3.1 添加初始化代碼

core_portme.c 中的 portable_init 函數(shù)在 core_main.c 的 main 函數(shù)中首先被調(diào)用, 平臺(tái)的初始化的函數(shù)(時(shí)鐘,GPIO,串口,緩存) 可以放在這里。

修改前:

void portable_init(core_portable *p, int *argc, char *argv[])
{

    (void)argc; // prevent unused warning
    (void)argv; // prevent unused warning

    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;
}

修改后:

void portable_init(core_portable *p, int *argc, char *argv[])
{
    ST_BSP_USART_Dev BSP_USART_Dev0 = USART_DEV0_CONFIG;

    /* Configure the NVIC Preemption Priority Bits */  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    /* USART1 配置模式為 115200 8-N-1,中斷接收 */
    BSP_USART_Init(&BSP_USART_Dev0, 115200, 0, 1);

    printf("The CoreMark is runing,Please Wait...\\r\\n");
    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;
}

2.3.2 修改計(jì)時(shí)相關(guān)代碼

start_time/ stop_time/ get_time 這幾個(gè)函數(shù)是 coremark 程序運(yùn)行時(shí)計(jì)算程序運(yùn)行時(shí)間所用。 這里使用 system tick 進(jìn)行計(jì)時(shí), system tick 配置為 1ms 的中斷間隔。 system tick 中斷函數(shù)中更新 Tick 的值,每進(jìn)一次中斷加 1。所以還需要修改system tick 的中斷處理函數(shù)。

1)在 core_portme.c 中按下表找到需要修改的地方。

34232.png

2) 在 core_portme.c 文件中添加新定義的變量和函數(shù)

#define SysTick_Counter_Disable ((uint32_t)0xFFFFFFFE)
#define SysTick_Counter_Enable ((uint32_t)0x00000001)
#define SysTick_Counter_Clear ((uint32_t)0x00000000)
__IO uint32_t Tick;

system tick 的中斷處理函數(shù)在 stm32f10x_it.c 中。stm32f10x_it.c 文件包含所有中斷處理入口函數(shù)。根據(jù)不同的平臺(tái), 這個(gè)文件的名字稍有不同。找到 SysTick_Handler 函數(shù)進(jìn)行修改。

修改前:

/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
void SysTick_Handler(void)
{

}

修改后:

/**
  * @brief  This function handles SysTick Handler.
  * @param  None
  * @retval None
  */
void SysTick_Handler(void)
{
    extern __IO uint32_t Tick;
    Tick++;
}

2.3.3 CoreMark 運(yùn)行配置

1)設(shè)置迭代次數(shù)

CoreMark 要求程序運(yùn)行的最短時(shí)間至少是 10s, 根據(jù)使用的系統(tǒng)時(shí)鐘等情況,可以在 core_portme.h 中修改迭代次數(shù)。

#define ITERATIONS 12000

2)設(shè)置打印信息

對(duì)編譯器版本和編譯器參數(shù)進(jìn)行定義。這2個(gè)宏不會(huì)影響跑分結(jié)果,只是coremark在打印評(píng)測(cè)結(jié)果的時(shí)候會(huì)輸出定義的值。

修改前:

#ifndef COMPILER_VERSION
#ifdef __GNUC__
#define COMPILER_VERSION "GCC"__VERSION__
#else
#define COMPILER_VERSION "Please put compiler version here (e.g. gcc 4.1)"
#endif
#endif
#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS FLAGS_STR /*
"Please put compiler flags here (e.g. -o3)"
*/
#endif

修改后

#ifndef COMPILER_VERSION
#ifdef __GNUC__
#define COMPILER_VERSION "GCC"__VERSION__
#else
#define COMPILER_VERSION "ARMCC 5.06"
#endif
#endif
#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS "-O3"
#endif

3) 修改優(yōu)化等級(jí)。

Options->C/C++ ->Optimization, 選擇O3以達(dá)到最優(yōu)的運(yùn)行速度。

1682862143756u1c7fmovhe

3 運(yùn)行結(jié)果

接上串口,復(fù)位打印信息如下:

STM32F103

1682862144110018sd0eafj

STM32F429

1682862144411t7x9k84u4b

GD32F2

1682862144702217o8rhq9u

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 測(cè)試
    +關(guān)注

    關(guān)注

    8

    文章

    5269

    瀏覽量

    126599
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304804
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211578
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    657

    瀏覽量

    32852
  • Cortex-M
    +關(guān)注

    關(guān)注

    2

    文章

    229

    瀏覽量

    29752
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM Cortex-M的音頻性能解析

    ARM Cortex-M3和Cortex-M4處理器內(nèi)核的功能和能力可以實(shí)現(xiàn)高效的音頻處理。由于低功耗、高性能,Cortex-M處理器非常適合音頻應(yīng)用。這些處理器超強(qiáng)的音頻能力可用于低
    發(fā)表于 08-09 18:07 ?5515次閱讀
    ARM <b class='flag-5'>Cortex-M</b>的音頻<b class='flag-5'>性能</b>解析

    為什么說Cortex-M是低功耗應(yīng)用的首選

    雖然Cortex-M處理器家族目標(biāo)瞄準(zhǔn)效能光譜較低端的區(qū)域,但是和大多數(shù)微控制器(MCU)采用的其他典型處理器相比,Cortex-M的效能依然算相當(dāng)強(qiáng)悍。舉例來說,像是許多高效能微控制器所采用的Cortex-M4與
    發(fā)表于 07-28 09:44 ?3481次閱讀
    為什么說<b class='flag-5'>Cortex-M</b>是低功耗應(yīng)用的首選

    如何選擇正確的Cortex-M處理器?

    系統(tǒng)級(jí)特性,調(diào)試和追蹤功能和性能的比較,歡迎大家一起學(xué)習(xí)了解。1、簡(jiǎn)介今天, ARM Cortex-M 處理器家族有8款處理器成員。除此之外,ARM的產(chǎn)品系列還有很多其他的處理器成員。對(duì)很多初學(xué)者,甚至
    發(fā)表于 10-22 08:16

    ARM Cortex-M處理器詳解 精選資料分享

    Cortex-M 系列處理器的指令集和高級(jí)中斷處理能力,以及 SoC系統(tǒng)級(jí)特性,調(diào)試和追蹤功能和性能的比較?! ?、簡(jiǎn)介  今天, ARM Cortex-M 處理器家族有8款處理器成員。除此之外,ARM
    發(fā)表于 07-16 07:57

    Arm Cortex-M處理器—Cortex-M85介紹

    Arm發(fā)布了新一代的Cortex-M處理器,Cortex-M85。簡(jiǎn)單粗暴的打個(gè)比方:Cortex-M85 ≈ Cortex-M7TrustZoneHelium(
    發(fā)表于 07-15 14:59

    【ARM白皮書】ARM Cortex-M處理器入門

    ARM Cortex-M處理器家族現(xiàn)在有8款處理器成員。在本文中,會(huì)比較Cortex-M系列處理器之間的產(chǎn)品特性,重點(diǎn)講述如何根據(jù)產(chǎn)品應(yīng)用選擇正確的Cortex-M處理器。本文中會(huì)詳細(xì)的對(duì)照C
    發(fā)表于 04-20 15:34 ?39次下載

    Atmel Studio 6軟件中如何調(diào)試ARM Cortex-M

    Atmel Studio 6軟件中如何調(diào)試ARM Cortex-M
    的頭像 發(fā)表于 07-04 10:49 ?4239次閱讀

    關(guān)于STM32和Cortex-M內(nèi)核系列介紹(1)

    Cortex-M內(nèi)核系列和STM32-講座
    的頭像 發(fā)表于 07-05 01:07 ?8044次閱讀

    關(guān)于STM32與Cortex-M內(nèi)核系列的介紹(2)

    Cortex-M內(nèi)核系列和STM32-講座3
    的頭像 發(fā)表于 07-05 00:45 ?4524次閱讀

    關(guān)于Cortex-M 調(diào)試應(yīng)用的介紹

    Cortex-M 調(diào)試應(yīng)用
    的頭像 發(fā)表于 07-10 00:56 ?2618次閱讀

    米爾科技Cortex-M Prototyping System +介紹

    ARM? Cortex?-M原型系統(tǒng) MPS2+,為Cortex-M 系列微處理器設(shè)計(jì)的原型驗(yàn)證評(píng)估系統(tǒng),包含最新的Cortex-M7 及Corte
    的頭像 發(fā)表于 11-14 10:45 ?1938次閱讀
    米爾科技<b class='flag-5'>Cortex-M</b> Prototyping System +介紹

    Cortex-M內(nèi)核的MPU內(nèi)存保護(hù)單元

    講講Cortex-M內(nèi)核的MPU內(nèi)存保護(hù)單元
    的頭像 發(fā)表于 03-04 11:17 ?3673次閱讀
    <b class='flag-5'>Cortex-M</b>內(nèi)核的MPU內(nèi)存保護(hù)單元

    Cortex-M可以跑Linux操作系統(tǒng)嗎?

    Cortex-M可以跑Linux操作系統(tǒng)嗎?
    發(fā)表于 12-01 11:36 ?2次下載
    <b class='flag-5'>Cortex-M</b>可以跑Linux操作系統(tǒng)嗎?

    no cortex-m sw device found 問題解決【轉(zhuǎn)】

    no cortex-m sw device found 問題解決【轉(zhuǎn)】
    發(fā)表于 12-02 17:36 ?33次下載
    no <b class='flag-5'>cortex-m</b> sw device found 問題解決【轉(zhuǎn)】

    Cortex-M位帶操作的原理

    Cortex-M位帶操作的原理
    的頭像 發(fā)表于 10-24 15:27 ?881次閱讀
    <b class='flag-5'>Cortex-M</b>位帶操作的原理
    主站蜘蛛池模板: 成人免费视频网站www| 欧美性猛交AAA片免费观看| 亚洲国产欧美在线看片| 国产99九九久久无码熟妇| 人妻仑乱少妇88MAV| AV一区AV久久AV无码| 美女挑战50厘米长的黑人| 一色狗影院| 寂寞护士中文字幕 mp4| 亚洲国产亚综合在线区尤物| 国产日韩欧美三级| 性xxxx18公交车| 国产免费看片| 学校女性奴sm训练调教| 国产视频精品免费| 亚洲AV成人无码999WWW| 国产人妻精品无码AV在线五十路| 天天操天天干天天透| 国产99久久久国产精品成人| 色噜噜视频影院| 高清无码中文字幕影片| 撕开美女的衣服2| 国产精品熟女人妻| 午夜一区二区三区| 国产午夜福利片| 亚洲精品偷拍影视在线观看| 吉吉影音先锋av资源| 艳照门在线播放| 久久综合九色| 99国内精品| 青青伊人网| 俄罗斯15一16处交| 无码人妻精品国产婷婷| 国产精品美女久久久久浪潮AV| 午夜免费福利| 和I儿媳妇激情| 欲奴第一季在线观看全集| 乱辈通奷XXXXXHD猛交| 97午夜伦伦电影理论片| 强奸日本美女小游戏| 国产AV无码熟妇人妻麻豆|