国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

手把手教你用位圖映射方式優(yōu)化灰度液晶控制器驅(qū)動(dòng)

0
分享至


單色液晶控制器通常的寫(xiě)顯示RAM方式是一次寫(xiě)8個(gè)像素,容易實(shí)現(xiàn)MCU主存到控制器的位圖映射。但是支持灰度的液晶控制器不一定有這樣的操作方式,于是只用黑白二色的顯示時(shí),也不得不每個(gè)像素都要寫(xiě)灰階編碼到控制器。但是在MCU主存中每個(gè)像素用8-bit甚至16-bit來(lái)表示,開(kāi)銷(xiāo)就大多了,很多時(shí)候是不必要的。如果用二值的位圖存放顯示內(nèi)容,在顯示驅(qū)動(dòng)軟件中轉(zhuǎn)換,就可能實(shí)現(xiàn)和單色液晶在圖形庫(kù)上的兼容性。


例如ST7529液晶控制器的顯存數(shù)據(jù)是5-bit灰度,采用并行接口(8080模式)驅(qū)動(dòng)時(shí),有16-bit表示3個(gè)像素的辦法和3個(gè)8-bit表示3個(gè)像素的辦法。這個(gè)控制器是給CSTN液晶設(shè)計(jì)的,所以總是要RGB 3個(gè)像素一起寫(xiě),作為FSTN的驅(qū)動(dòng)顯得有些別扭——列方向的坐標(biāo)只能以3像素為單位。如果能忍受這一點(diǎn),用8-bit數(shù)據(jù)模式,每次寫(xiě)顯存操作就是更新一個(gè)像素,按列優(yōu)先模式能實(shí)現(xiàn)逐條掃描線(xiàn)的數(shù)據(jù)寫(xiě)入。


現(xiàn)在考慮類(lèi)似ST7529這種控制器的位圖映射軟件驅(qū)動(dòng)。在MCU的SRAM中開(kāi)辟一塊連續(xù)空間作為顯示區(qū)域內(nèi)容的位圖存儲(chǔ)(只顯示兩種顏色,每個(gè)像素1 bit),向控制器寫(xiě)像素?cái)?shù)據(jù)時(shí)每次根據(jù)位圖中的一個(gè)bit,決定寫(xiě)控制器的數(shù)據(jù)是兩種顏色代碼中哪一個(gè)。如果控制器是用MCU的內(nèi)存控制器(如STM32的FMC)連接的,寫(xiě)操作就對(duì)應(yīng)到一條STR指令;如果不能用FMC,就要用一組GPIO輸出并行數(shù)據(jù),另一單獨(dú)GPIO產(chǎn)生寫(xiě)脈沖。

基本的顯示代碼:


在寫(xiě)每個(gè)像素?cái)?shù)據(jù)的時(shí)候,要進(jìn)行位運(yùn)算測(cè)試內(nèi)存中數(shù)據(jù)的某位是1還是0. 按照低地址數(shù)據(jù)在前,每個(gè)字中LSB在前的順序訪(fǎng)問(wèn)整個(gè)位圖。取數(shù)據(jù)的時(shí)候一次取32 bit的效率要高于8 bit. 內(nèi)層循環(huán)就是逐位處理。在Cortex-m4上,以上代碼的實(shí)現(xiàn)效率約為12.2 時(shí)鐘周期每像素。

這樣的代碼足夠簡(jiǎn)潔了。用位運(yùn)算是因?yàn)椴荒苤苯訉ぶ稴RAM的某一位…… 但是真的不能嗎?Cortex-m3/m4有bit-banding的功能,雖然我以前沒(méi)覺(jué)得有什么用,SRAM是處于bit-band區(qū)域中的。也就是,在SRAM中存儲(chǔ)了位圖,就有某一段地址是每個(gè)32-bit映射到位圖中一個(gè)bit的。按連續(xù)地址訪(fǎng)問(wèn)就可以遍歷位圖中每個(gè)像素。于是顯示代碼就只需要一個(gè)循環(huán)了:


針對(duì)ST7529,如果輸出是全黑和全白兩種顏色,數(shù)據(jù)接口上有效位是全0或者全1,還可以把條件判斷也省去,修改成這樣:


代碼中直接輸出數(shù)據(jù) -p[n] , 因?yàn)閜[n]為1則寫(xiě)數(shù)據(jù)就成了 0xFF,是滿(mǎn)足需要的。這樣又能少用指令了。實(shí)際測(cè)試的執(zhí)行時(shí)間減少到 8~9 時(shí)鐘周期每像素,有一個(gè)浮動(dòng)可能是CPU流水線(xiàn)的關(guān)系??匆幌戮幾g的結(jié)果:


標(biāo)出的部分就是循環(huán)主體,一共7條指令,顯得沒(méi)有任何多余操作,實(shí)際執(zhí)行時(shí)間變化可能是總線(xiàn)的緣故。

到這里,好象已經(jīng)優(yōu)化到頭了,不繞彎。

回頭看,從原理上呢,根據(jù)每個(gè)像素判斷一下要寫(xiě)什么數(shù)據(jù)是沒(méi)錯(cuò)的,但是如果寫(xiě)的數(shù)據(jù)和上次一樣其實(shí)可以不用更新接口上的并行數(shù)據(jù),所以可以少一步操作?然而要增加這個(gè)條件判斷其實(shí)是又繞彎了,因?yàn)闇y(cè)試、保存前次結(jié)果和條件分支會(huì)消耗更多的周期。實(shí)際測(cè)試也是平均執(zhí)行時(shí)間到了 10.4 時(shí)鐘周期每像素。 程序如下:


雖然上面這個(gè)嘗試改進(jìn)失敗,減少不必要的操作的思路是有價(jià)值的。實(shí)際的顯示驅(qū)動(dòng)就是寫(xiě)連續(xù)一串(個(gè)數(shù)不確定)的前景色像素,再寫(xiě)連續(xù)一串背景色像素,交替進(jìn)行的。假如SRAM存儲(chǔ)的不是位圖,而是按順序排列的兩種顏色各自連續(xù)的像素個(gè)數(shù)的序列,則顯示代碼有可能執(zhí)行更快。

但是現(xiàn)在SRAM存儲(chǔ)的是位圖,只能在此前提下討論。那么,從位圖掃描的角度,統(tǒng)計(jì)連續(xù)的1個(gè)的個(gè)數(shù),再統(tǒng)計(jì)后面連續(xù)的0的個(gè)數(shù),再統(tǒng)計(jì)后面連續(xù)1的個(gè)數(shù)……如此下去也可以,只不過(guò)效率是個(gè)問(wèn)題。不妨對(duì)比以下:


這段程序?qū)?1"像素和"0"像素分組輸出,包含了測(cè)試統(tǒng)計(jì)和連續(xù)寫(xiě)脈沖的過(guò)程,屬于是繞了彎路的做法,最后的執(zhí)行時(shí)間大約是 15.5 時(shí)鐘周期每像素. 比最基本的方法還要慢,也是可想而知的。

如果不用bit-banding呢,像最基本的方法那樣每次先取一個(gè)字,那么程序還會(huì)可預(yù)期地多耗費(fèi)點(diǎn)時(shí)間:


上面這段程序?qū)嶋H測(cè)試大約平均 20.4 時(shí)鐘周期每像素, 是明顯慢多了。

但之所以要這么改寫(xiě),是我想嘗試一下能否快速地找出連續(xù)的1或0的個(gè)數(shù)——Cortex-m3/m4有CLZ (Count Leading Zeros)指令。在一個(gè)32-bit字之內(nèi),用這條指令直接得到從最高位開(kāi)始往下有多少個(gè)連續(xù)的0. 它能省去一個(gè)循環(huán)的位測(cè)試。

還是要嘗試的,下面的代碼看起來(lái)過(guò)于復(fù)雜了??赡苓€有可優(yōu)化的地方。


調(diào)試查錯(cuò)過(guò)后,上面這段代碼在我用的測(cè)試位圖(文本字符為主)上達(dá)到了平均約 8 時(shí)鐘周期每像素的效率,追上了前面用bit-band的最快的代碼。不枉這份努力啊。這種方式,執(zhí)行時(shí)間與顯示內(nèi)容是關(guān)聯(lián)的,一般圖形界面的話(huà)像素顏色連續(xù)出現(xiàn)的時(shí)候多,所以應(yīng)該是適用的。

到了這個(gè)地步,覺(jué)得還有更快的可能嗎?其實(shí)使用CLZ指令得以提升效率的原因是減少了循環(huán)次數(shù),上面這個(gè)程序仍然有循環(huán):除了不可避免的從SRAM中取數(shù)據(jù)之外,連續(xù)產(chǎn)生多少次寫(xiě)脈沖是用循環(huán)來(lái)實(shí)現(xiàn)。而后者還有優(yōu)化的可能:

  1. 不用GPIO翻轉(zhuǎn)的方式,用硬件自動(dòng)產(chǎn)生N個(gè)脈沖。STM32的TIM1/TIM8等定時(shí)器的PWM能做到,或者用一個(gè)定時(shí)器作為另一個(gè)輸出PWM的定時(shí)器的門(mén)控。我暫時(shí)還沒(méi)有實(shí)驗(yàn),好象用的板子GPIO連接缺少條件。

  2. 如果用了FMC接口的話(huà)可以用借用這個(gè)思路,用DMA內(nèi)存到內(nèi)存的方式快速寫(xiě)。

  3. 循環(huán)展開(kāi),這要費(fèi)一些代碼空間了。在上面的程序中,連續(xù)的寫(xiě)脈沖一般不會(huì)太長(zhǎng)。比如說(shuō),在32個(gè)以?xún)?nèi)就完全展開(kāi)循環(huán):


用這個(gè) wr_pulses() 函數(shù)代替前一段代碼中的產(chǎn)生WR脈沖的循環(huán),實(shí)現(xiàn)部分的循環(huán)展開(kāi),之后…… 執(zhí)行速度提升到了 6 時(shí)鐘周期每像素的水平。

當(dāng)然,要求刷屏刷得快簡(jiǎn)單地把時(shí)鐘頻率提上去就是了,是否要糾結(jié)這種優(yōu)化是MCU玩家自己決定,本文只是假期時(shí)候的一點(diǎn)研究分享。關(guān)鍵點(diǎn):一是bit-band的使用,二是CLZ指令的使用。這兩個(gè)特性都得要m3/m4起才有,m0是沒(méi)有的(現(xiàn)在國(guó)產(chǎn)m4也很便宜了嘛)。

歡迎將我們?cè)O(shè)為“星標(biāo)”,這樣才能第一時(shí)間收到推送消息。

歡迎關(guān)注EEWorld旗下訂閱號(hào):“汽車(chē)開(kāi)發(fā)圈”

掃碼添加小助手回復(fù)“進(jìn)群”

和電子工程師們面對(duì)面交流經(jīng)驗(yàn)

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
“最快女護(hù)士”張水華辭職86天交出矚目成績(jī)單:參加4場(chǎng)馬拉松,奪得2個(gè)冠軍1次打破賽會(huì)紀(jì)錄,已獲20萬(wàn)元+價(jià)值10萬(wàn)元汽車(chē)

“最快女護(hù)士”張水華辭職86天交出矚目成績(jī)單:參加4場(chǎng)馬拉松,奪得2個(gè)冠軍1次打破賽會(huì)紀(jì)錄,已獲20萬(wàn)元+價(jià)值10萬(wàn)元汽車(chē)

極目新聞
2026-03-29 14:53:27
“以軍瀕臨崩潰”,內(nèi)塔尼亞胡還能打多久?| 京釀館

“以軍瀕臨崩潰”,內(nèi)塔尼亞胡還能打多久?| 京釀館

新京報(bào)評(píng)論
2026-03-29 19:05:41
女子家門(mén)未關(guān)嚴(yán),流浪狗尾隨入室咬傷其腿,3天后狗死了,狂犬病毒檢測(cè)呈陽(yáng)性;多方回應(yīng)事件進(jìn)展

女子家門(mén)未關(guān)嚴(yán),流浪狗尾隨入室咬傷其腿,3天后狗死了,狂犬病毒檢測(cè)呈陽(yáng)性;多方回應(yīng)事件進(jìn)展

大風(fēng)新聞
2026-03-29 13:28:09
郭麒麟、劉昊然,嚴(yán)浩翔,被曝疑組團(tuán)去商K聚會(huì),本人火速回應(yīng)

郭麒麟、劉昊然,嚴(yán)浩翔,被曝疑組團(tuán)去商K聚會(huì),本人火速回應(yīng)

興史興談
2026-03-28 22:53:56
中國(guó)石油:2025年凈利潤(rùn)為1573億元

中國(guó)石油:2025年凈利潤(rùn)為1573億元

每日經(jīng)濟(jì)新聞
2026-03-29 18:11:53
東風(fēng)導(dǎo)彈泄密案!間諜郭萬(wàn)鈞一家三口,全部被處以死刑

東風(fēng)導(dǎo)彈泄密案!間諜郭萬(wàn)鈞一家三口,全部被處以死刑

談史論天地
2026-03-29 16:10:03
單依純明目張膽侵權(quán)他人作品,拒不道歉,李榮浩4連問(wèn)硬剛到底

單依純明目張膽侵權(quán)他人作品,拒不道歉,李榮浩4連問(wèn)硬剛到底

上觀新聞
2026-03-29 17:56:07
魂歸故里,長(zhǎng)眠桑梓!張雪峰安葬地選址原因披露

魂歸故里,長(zhǎng)眠桑梓!張雪峰安葬地選址原因披露

史海流年號(hào)
2026-03-29 12:14:27
享界汽車(chē)就“S9‘麋鹿測(cè)試’視頻”發(fā)布聲明:經(jīng)核實(shí),相關(guān)測(cè)試存在惡意、刻意操控行為,已固定相關(guān)證據(jù),并對(duì)涉嫌機(jī)構(gòu)及賬號(hào)采取維權(quán)行動(dòng)

享界汽車(chē)就“S9‘麋鹿測(cè)試’視頻”發(fā)布聲明:經(jīng)核實(shí),相關(guān)測(cè)試存在惡意、刻意操控行為,已固定相關(guān)證據(jù),并對(duì)涉嫌機(jī)構(gòu)及賬號(hào)采取維權(quán)行動(dòng)

瀟湘晨報(bào)
2026-03-29 14:11:09
大學(xué)生怒砸食堂后續(xù)!人已被抓,知情人爆猛料,賠幾十萬(wàn)只是一角

大學(xué)生怒砸食堂后續(xù)!人已被抓,知情人爆猛料,賠幾十萬(wàn)只是一角

潮鹿逐夢(mèng)
2026-03-29 14:54:28
“周大生門(mén)店賣(mài)周大金戒指”涉事金店已退貨賠款,負(fù)責(zé)人:顧客催得太急,自己就從其他店調(diào)了貨

“周大生門(mén)店賣(mài)周大金戒指”涉事金店已退貨賠款,負(fù)責(zé)人:顧客催得太急,自己就從其他店調(diào)了貨

極目新聞
2026-03-29 17:42:47
網(wǎng)友分享細(xì)思恐極事件,呼吁大家相信直覺(jué)!

網(wǎng)友分享細(xì)思恐極事件,呼吁大家相信直覺(jué)!

特約前排觀眾
2026-03-23 00:10:06
張雪峰遺體轉(zhuǎn)運(yùn)畫(huà)面流出!前妻和現(xiàn)任妻子現(xiàn)身,下屬向遺像三叩首

張雪峰遺體轉(zhuǎn)運(yùn)畫(huà)面流出!前妻和現(xiàn)任妻子現(xiàn)身,下屬向遺像三叩首

博士觀察
2026-03-29 11:52:26
今天南北經(jīng)濟(jì)的失衡,達(dá)到了歷史上最嚴(yán)重的時(shí)期。

今天南北經(jīng)濟(jì)的失衡,達(dá)到了歷史上最嚴(yán)重的時(shí)期。

流蘇晚晴
2026-03-28 13:37:46
淡季的大西北,需要一點(diǎn)逆流而上的小勇氣

淡季的大西北,需要一點(diǎn)逆流而上的小勇氣

吳佩頻道
2026-03-29 15:24:17
北京男子靠龍蝦OpenClaw實(shí)現(xiàn)36小時(shí)買(mǎi)房:龍蝦迅速篩出周邊房源,2小時(shí)內(nèi)獨(dú)自對(duì)比大量中介并選定,精準(zhǔn)摸清歷史最低成交價(jià)

北京男子靠龍蝦OpenClaw實(shí)現(xiàn)36小時(shí)買(mǎi)房:龍蝦迅速篩出周邊房源,2小時(shí)內(nèi)獨(dú)自對(duì)比大量中介并選定,精準(zhǔn)摸清歷史最低成交價(jià)

揚(yáng)子晚報(bào)
2026-03-29 19:35:46
歌手吳向飛喊話(huà)李榮浩道歉:未取得授權(quán)公開(kāi)演唱其歌曲;李榮浩回應(yīng):并未在個(gè)人演唱會(huì)或音樂(lè)節(jié)晚會(huì)唱過(guò),請(qǐng)列明場(chǎng)次,若侵權(quán)一定賠償?shù)狼?>
    </a>
        <h3>
      <a href=極目新聞
2026-03-29 18:56:41
汪峰定律!李榮浩撕?jiǎn)我兰兦謾?quán),吳向飛撕李榮浩!汪峰又開(kāi)演唱會(huì)

汪峰定律!李榮浩撕?jiǎn)我兰兦謾?quán),吳向飛撕李榮浩!汪峰又開(kāi)演唱會(huì)

露珠聊影視
2026-03-29 20:39:00
全國(guó)累計(jì)器官捐獻(xiàn)志愿登記人數(shù)超過(guò)733萬(wàn)

全國(guó)累計(jì)器官捐獻(xiàn)志愿登記人數(shù)超過(guò)733萬(wàn)

環(huán)球網(wǎng)資訊
2026-03-29 12:57:07
以色列最擔(dān)心的事發(fā)生:伊朗送出“大禮”,特朗普的反應(yīng)出人意料

以色列最擔(dān)心的事發(fā)生:伊朗送出“大禮”,特朗普的反應(yīng)出人意料

空天力量
2026-03-28 17:14:31
2026-03-30 00:20:49
EEWorld電子工程世界 incentive-icons
EEWorld電子工程世界
即時(shí)參與討論電子工程世界最火話(huà)題,搶先知曉電子工程業(yè)界資訊。
262文章數(shù) 22關(guān)注度
往期回顧 全部

科技要聞

馬斯克承認(rèn)xAI"建錯(cuò)了",11位創(chuàng)始人均離職

頭條要聞

中國(guó)警告美國(guó):勿將"沖突戰(zhàn)亂"引入亞太地區(qū)

頭條要聞

中國(guó)警告美國(guó):勿將"沖突戰(zhàn)亂"引入亞太地區(qū)

體育要聞

絕殺衛(wèi)冕冠軍后,他單手指天把勝利獻(xiàn)給父親

娛樂(lè)要聞

汪峰定律再現(xiàn)!李榮浩喊話(huà)單依純侵權(quán)

財(cái)經(jīng)要聞

Kimi、Minimax 們的算力荒

汽車(chē)要聞

嵐圖泰山X8配置曝光 四激光雷達(dá)/華為新一代座艙

態(tài)度原創(chuàng)

健康
藝術(shù)
親子
游戲
教育

干細(xì)胞抗衰4大誤區(qū),90%的人都中招

藝術(shù)要聞

耗資4億!天津第三殯儀館改成了“公園”樣,不陰森了

親子要聞

夏天來(lái)了,如何給小寶寶洗澡?具體步驟如下

不扔精靈球了!寶可夢(mèng)Pokopia,治愈建造類(lèi)烏托邦神作

教育要聞

總想養(yǎng)聽(tīng)話(huà)的孩子,其實(shí)正在毀掉他一生

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版