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

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

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

HPM6750 LVGL刷屏性能再提升?大神網(wǎng)友開辟片內(nèi)新天地

先楫半導(dǎo)體HPMicro ? 2022-07-22 11:19 ? 次閱讀

先楫體驗官“RSCN”評測了HPM6750的coremark跑分后(原文請至EEWORLD搜索RSCN)又出干貨!這次“RSCN”將為我們演示如何優(yōu)化自己手中的HPM6750使它性能提升。

以下正文轉(zhuǎn)自EEWORLD @RSCN

之前的coremark跑分測評中,在flash和ram運行的性能大致一樣,主要的原因還是代碼空間小于32K,這剛好是cache的空間范圍內(nèi),HPM6750有32K ICACHE和32K DCACHE,性能上是最高的,所以跑分上,兩者并沒有太大的差距。

但是,如果代碼空間超過了32K,這時候cache總會有用滿的時候,也會有不命中的情況下,這時候需要考慮的正是系統(tǒng)資源和編譯整合利用。

下面以littlevgl的benchmark跑分例子要進行性能提升的一個驗證方法,當然這僅僅作為參考,并不能決定大多數(shù)應(yīng)用場景。

由于上個貼子說明了SPI的一點缺陷,會導(dǎo)致DMA的輔助功能提升并不大,在實際跑lvgl的時候,code放在flash,編譯器使用segger,代碼缺省優(yōu)化,也其實沒優(yōu)化的情況下,生成的代碼如下:

b51c1710-039c-11ed-9ade-dac502259ad0.png

那么按照這樣燒錄進去,weightied fps大概是120多左右

b5582e8a-039c-11ed-9ade-dac502259ad0.png

這是有點低了,先從lvgl的配置上去優(yōu)化,lvgl的刷新周期,從30fps最大刷新率改為100fps刷新率,提升上也并不是很大,大概在160左右變動。

b585787c-039c-11ed-9ade-dac502259ad0.pngb59f55f8-039c-11ed-9ade-dac502259ad0.png

那么開O3優(yōu)化的效果又是如何,再次燒錄進去,weightied fps大概是174多左右

b5bd9676-039c-11ed-9ade-dac502259ad0.png

當然也試了以下方法,實驗過程也忘了拍照,但是其實效果性能并沒有提升多少,也就180左右變動

1、改為全尺寸雙緩沖,但是其實這種對MCU屏幕有用,對于SPI屏幕上,效果并沒多少。

2、改為非全尺寸雙緩沖,大概五分之一局部刷新。

3、改為單緩沖局部刷新和單緩沖全尺寸刷新,效果均不大。

于是試著找了官方的技術(shù),放假期間的,技術(shù)也在中午跟著我遠程調(diào)試了下,換為GCC編譯器,以及開啟了相關(guān)優(yōu)化,優(yōu)化提升也不明顯,大概也是180fps變動。

在調(diào)試的過程中,有個idea讓樓主茅塞頓開,也就是官方技術(shù)建議把中斷isr放在ram運行,但實際提升也不大。

于是樓主照著這個思路來看下性能有沒有增加,也就是把核心的代碼加載到ram中運行。好在HPM6750有足夠的RAM來加載,根據(jù)手冊可知道,兩核心有SLV各512K,SRAM一共1M,這是足夠加載很多核心代碼。

b5eb93be-039c-11ed-9ade-dac502259ad0.png

說干就干,在代碼上去實現(xiàn)的話,可以使用ATTR_RAMFUNC修飾符放在定義的函數(shù)前面,這樣編譯的時候就會加載到RAM運行。

在實際調(diào)試中,單純幾個函數(shù)的修飾并不能解決問題。也不可能去手動一個一個修飾,好在與SES可以可視化去操作加載。從ATTR_RAMFUNC,Link文件可看到。

ATTR_RAMFUNC是把函數(shù)放在了section的.fast中

b6175e0e-039c-11ed-9ade-dac502259ad0.png

從Link可看到,fast是放在了ILM_SLV的256K空間中。

b62d4c00-039c-11ed-9ade-dac502259ad0.png

于是我們可以參考Link,自己在copy個link,把fast放在更大的RAM上,也就是SRAM上

b6445bc0-039c-11ed-9ade-dac502259ad0.png

那么ses如何去加載這些函數(shù)到RAM上了,跟keil類似

右鍵點擊需要加載的文件夾,選擇options

b658e702-039c-11ed-9ade-dac502259ad0.png

選擇code段改為.fast,這樣就可以一次搞定加載所有需要到RAM運行的函數(shù)。

b6768b90-039c-11ed-9ade-dac502259ad0.png

根據(jù)之前的調(diào)試性能,再加載核心的放在RAM中運行,燒錄代碼進去,奇跡的時刻,從122fps提升到286,整整提升了兩倍性能,這已經(jīng)對于SPI這個稍微缺陷IP,足夠有幫助了。

b68d26ac-039c-11ed-9ade-dac502259ad0.png

于此總結(jié):

1、在從代碼優(yōu)化,編譯器優(yōu)化上,可以提高性能。

2、在1的基礎(chǔ)上,隨著代碼空間的增多,32k cache總有用完的時候,xip flash 也會有所損失性能,最好就是可以把主要的代碼加載到RAM中運行,更可提高性能。

3、除了32K cache的加持,內(nèi)部RAM整合也有足夠2M,對于系統(tǒng)而言,是足夠性能整合的。

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

    關(guān)注

    5059

    文章

    18973

    瀏覽量

    302010
收藏 人收藏

    評論

    相關(guān)推薦

    夢芯科技精彩亮相CHINTERGEO 2024

    近日,以“智繪新天地 數(shù)領(lǐng)測繪展未來”為主題的測繪地理信息裝備行業(yè)展會CHINTERGEO 2024在湖北武漢中國光谷科技會展中心盛大開幕。
    的頭像 發(fā)表于 11-07 16:32 ?243次閱讀

    如何做一個hpm6750evk2的bootloader?

    我正在做一個hpm6750evk2的bootloader。設(shè)計很簡單,boot工程代碼只做跳轉(zhuǎn)到1M后的APP工程代碼處,APP工程就是做的一個點燈的程序而已,boot、APP工程都是跑
    發(fā)表于 10-23 19:01

    HPM6750 Bootloader設(shè)計

    我正在做一個hpm6750evk2的bootloader。設(shè)計很簡單,boot工程代碼只做跳轉(zhuǎn)到1M后的APP工程代碼處,APP工程就是做的一個點燈的程序而已,boot、APP工程都是跑
    發(fā)表于 10-23 18:59

    hpm_manufacturing_tool linux 版本 選擇 hidraw 連接等待超時

    _manufacturing_tool_gui linux 版本 選擇 hidraw 連接 HPM6750 芯片,能識別到 hidraw 設(shè)備,單擊連接是提示重啟芯片這個時候會等待超時然后軟件報錯,此時查看 lsusb 設(shè)備是檢測不到 hpm6750
    發(fā)表于 08-07 16:43

    【Vision Board創(chuàng)客營連載體驗】RA8D1-Vision Board 移植LVGL8.3驅(qū)動庫和觸摸屏驅(qū)動代碼

    ,與液晶屏驅(qū)動代碼一致: disp_flush函數(shù)中設(shè)置抽象刷屏函數(shù)為描點方式或者G2D加速方式,都可以實現(xiàn)LVGL刷屏LVGL初始化函數(shù)中設(shè)置
    發(fā)表于 05-13 19:53

    先楫HPM5361EVK開發(fā)板,網(wǎng)友測評效果(二)

    EEWORLD)的支持,本文整理了網(wǎng)友@qinyunti的優(yōu)秀報告,小伙伴們先睹為快!#1開發(fā)板介紹與視頻HPM5361EVK是基于先楫HPM5300系列高性能RISC
    的頭像 發(fā)表于 03-12 08:16 ?1625次閱讀
    先楫<b class='flag-5'>HPM</b>5361EVK開發(fā)板,<b class='flag-5'>網(wǎng)友</b>測評效果(二)

    HPM6750體驗ADC

    1、新建RTT工程,工程中添加對ADC的驅(qū)動: 2、保存工程后,添加測試代碼。 3、我們根據(jù)原理圖上的J10接個,只有PE29是ADC3的輸出通道 4、先定義通道、任務(wù) #define ADC_DEV_NAME\"adc3\"/* ADC 設(shè)備名稱 */ #define ADC_DEV_CHANNEL2/* ADC 通道 */ #define REFER_VOLTAGE 330/* 參考電壓 3.3V,數(shù)據(jù)精度乘以100保留2位小數(shù)*/ #define CONVERT_BITS(1 << 16)/* 轉(zhuǎn)換位數(shù)為16位 */ 5、添加任務(wù): static void Adc_entry(void* paremeter) { rt_adc_device_t adc_dev; rt_uint32_t value,vol; rt_err_t ret = RT_EOK; adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME); if (adc_dev == RT_NULL) { rt_kprintf(\"adc sample run failed! can\'t find %s device!\\\\n\", ADC_DEV_NAME); } /* 使能設(shè)備 */ ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL); if(ret == RT_EOK) { rt_kprintf(\"adc sample run success!find %s device!\\\\n\", ADC_DEV_NAME); } while(1) { /* 讀取采樣值 */ value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL); rt_kprintf(\"the value is :%d \\\\n\", value); /* 轉(zhuǎn)換為對應(yīng)電壓值 */ vol = value * REFER_VOLTAGE / CONVERT_BITS; rt_kprintf(\"the voltage is :%d.%02d \\\\n\", vol / 100, vol % 100); rt_thread_delay(500); } } 7、在主函數(shù)里啟用任務(wù) Adc_thread = rt_thread_create(\"adc1\", Adc_entry, RT_NULL, 512, 16, 20); if(Adc_thread != RT_NULL) rt_thread_startup(Adc_thread); else return -1;
    發(fā)表于 02-17 16:00

    解決HPM6750EVK2jlink下載

    拿到HPM6750EVK2,使用jlink下載時,我原來用買jlink配的20轉(zhuǎn)10轉(zhuǎn)接板進行連接,下載程序里一直報不能連接到開發(fā)板。經(jīng)過查找用手冊后,找到了問題。 我的jlink的引腳圖與之不對
    發(fā)表于 02-16 10:30

    先輯HPM6570用Jlink下載程序出錯

    as current target interface. J-Link>jtagconf -1 -1 J-Link>exec device=HPM6750xVMx Device
    發(fā)表于 02-16 09:32

    Embedded Studio 編譯器教程

    最近入手先輯的HPM6750,需要使用Embedded Studio 編譯器來做開發(fā),各位推薦一下學(xué)習(xí)資料。
    發(fā)表于 02-04 08:01

    開創(chuàng)數(shù)實融合新天地,上海市工商聯(lián)數(shù)字經(jīng)濟商會成立

    1 2月21日, 由西井科技等18家滬上數(shù)字經(jīng)濟領(lǐng)軍企業(yè)共同發(fā)起的上海市工商聯(lián)數(shù)字經(jīng)濟商會 正式成立,并召開第一屆一次會員大會和“開創(chuàng)數(shù)實融合新天地“主題論壇。上海市委常委、統(tǒng)戰(zhàn)部部長陳通出席會議
    的頭像 發(fā)表于 12-22 17:10 ?368次閱讀
    開創(chuàng)數(shù)實融合<b class='flag-5'>新天地</b>,上海市工商聯(lián)數(shù)字經(jīng)濟商會成立

    Linux 下編譯HPM_Math 工程報錯

    /hpm/hpm_sdk/soc/HPM6750/toolchains/gcc/flash_xip.ld -- Segger device name: HPM6750xVMx -- S
    發(fā)表于 12-20 12:54

    分享一款獨一無二的放大器—FUTEK IAA105

    IAA105是一款獨一無二的放大器,在傳感器電子領(lǐng)域開辟新天地。
    的頭像 發(fā)表于 12-13 09:14 ?406次閱讀

    RT_thread studio中如何配置先輯的hpm_math數(shù)學(xué)庫?

    hpm6750不知道如何在RTThread studio中使用hpm_math中的數(shù)學(xué)庫,想要使用libdspf.a,但是不知道如何配置
    發(fā)表于 12-06 18:32

    【先楫HPM5361EVK開發(fā)板試用體驗】-- HPM5361初體驗

    cortex-m7級別的芯片國產(chǎn)一直有傳說未見身影,奈何只能接受國外品牌漫長的交期和一次次的漲價。 有幸大概在2022年意外接觸到了先楫半導(dǎo)體的HPM6750,看到了價格和性能(高主頻,高DMIPS)著實
    發(fā)表于 11-29 11:26