首頁(yè) > 評(píng)測(cè) > 【SWDM-QFP100-34SVEA3測(cè)評(píng)】+CoreMark移植跑分

【SWDM-QFP100-34SVEA3測(cè)評(píng)】+CoreMark移植跑分

  
  • 作者:
  • 來(lái)源:
  • [導(dǎo)讀]
  • 本帖最后由 freeelectron 于 2023-5-24 10:29 編輯 #申請(qǐng)?jiān)瓌?chuàng)# CoreMark是一項(xiàng)測(cè)試處理器性能的基準(zhǔn)測(cè)試。代碼使用C語(yǔ)言寫成,包含:列舉,數(shù)學(xué)矩陣操作和狀態(tài)及CRC等運(yùn)算法則; 目前CoreMark已迅速成為

本帖最后由 freeelectron 于 2023-5-24 10:29 編輯

#申請(qǐng)?jiān)瓌?chuàng)#

CoreMark是一項(xiàng)測(cè)試處理器性能的基準(zhǔn)測(cè)試。代碼使用C語(yǔ)言寫成,包含:列舉,數(shù)學(xué)矩陣操作和狀態(tài)及CRC等運(yùn)算法則;
目前CoreMark已迅速成為測(cè)量與比較處理器性能的業(yè)界標(biāo)準(zhǔn)基準(zhǔn)測(cè)試。CoreMark的得分越高,意味著性能更高;
CoreMark官網(wǎng)的連接地址:http://www.eembc.org/coremark;

本文將一步步來(lái)介紹如何將下載的CoreMark測(cè)試代碼移植到SWDM-QFP100-34SVEA3開(kāi)發(fā)板上進(jìn)行測(cè)試。

源碼地址 https://github.com/eembc/coremark

1、源碼結(jié)構(gòu)


主要分為兩部分,源碼和接口代碼,其中接口代碼針對(duì)不同的平臺(tái),有不同的文件夾,針對(duì)單片機(jī),我們使用simple文件夾中的即可。

2、將代碼添加進(jìn)工程



3、編譯報(bào)錯(cuò)處理


FLAGS STR:優(yōu)化等級(jí),需要替換,這里要與編譯器的優(yōu)化等級(jí)一致,本次移植設(shè)置為:

 

  1. #define COMPILER_FLAGS "-o3" ;
復(fù)制代碼


ITERATIONS:算法運(yùn)行的次數(shù),這個(gè)值的設(shè)置必須確保,運(yùn)行的時(shí)間大于10s,否則,會(huì)報(bào)錯(cuò),本次移植設(shè)置為:

  1. #define ITERATIONS        4000
  2.  
復(fù)制代碼


4、main函數(shù)重復(fù)定義


在core_main.c文件中的main函數(shù)與原來(lái)工程中的重復(fù),修改為core_main:



5、啟動(dòng)時(shí)間、停止時(shí)間、獲取當(dāng)前時(shí)間函數(shù)接口
使用定時(shí)器4實(shí)現(xiàn)了一個(gè)1ms中斷一次的計(jì)數(shù)器
start_time(void):啟動(dòng)時(shí)間

 

  1. void
  2. start_time(void)
  3. {
  4. //    GETMYTIME(&start_time_val);
  5.         start_time_val=(CORETIMETYPE)GetSystemTick();
  6. }
復(fù)制代碼

stop_time:結(jié)束時(shí)間

  1. void
  2. stop_time(void)
  3. {
  4. //    GETMYTIME(&stop_time_val);
  5.       
  6.         stop_time_val=(CORETIMETYPE)GetSystemTick();
  7. }
復(fù)制代碼

get_time:運(yùn)行時(shí)間,停止時(shí)間計(jì)數(shù)減去啟動(dòng)時(shí)間,兩個(gè)的差就是運(yùn)行時(shí)間

  1. CORE_TICKS
  2. get_time(void)
  3. {
  4.     CORE_TICKS elapsed
  5.         = (CORE_TICKS)(MYTIMEDIFF(stop_time_val, start_time_val));
  6.     return elapsed;
  7. }
復(fù)制代碼


6、時(shí)間顆粒度定義
由于我們是1ms中斷一次,即就是1ms計(jì)數(shù)一次,那么1s就需要1000次計(jì)數(shù),所以有如下定義:

  1. #define EE_TICKS_PER_SEC           1000
復(fù)制代碼


7、主函數(shù)

  1. int main(void)
  2. {        
  3.         int argc;
  4.         char *argv[]={"1","2"};
  5.                
  6.         SystemInit();
  7.         TimerInit();
  8.         LedInit();
  9.         SerialInit();
  10.         DelayInit();
  11.         
  12.         printf("SystemCoreClock=%d\r\n",SystemCoreClock);
  13.  
  14.         core_main(argc,argv);
  15.         
  16.         while(1)
  17.         {
  18.                 SystemRun();
  19. }
  20. }
復(fù)制代碼


8、下載運(yùn)行


可以看出,使用mdk編譯,優(yōu)化等級(jí)設(shè)置為3,在120MHZ的時(shí)候跑分為315。

 

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評(píng)論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開(kāi)放投稿

熱門標(biāo)簽
項(xiàng)目外包 more+