日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

mtk6589显示子系统笔记(一)

發(fā)布時(shí)間:2025/7/14 windows 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mtk6589显示子系统笔记(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

拿到MT6589的版本不久,發(fā)現(xiàn)顯示系統(tǒng)代碼結(jié)構(gòu)改變很大。做些備忘,后續(xù)不忙的時(shí)候可以繼續(xù)看。

MT6589之前的MTK的Android系統(tǒng)顯示系統(tǒng)同featurePhone基本一致。

?

先來(lái)回顧下MTK之前版本的大致結(jié)構(gòu),每個(gè)Video層,每個(gè)UI層 分別對(duì)應(yīng)一個(gè)layer,再通過(guò)設(shè)置一些,區(qū)域坐標(biāo),透明度,通透色等,然后啟動(dòng)顯示模塊的DMA,實(shí)現(xiàn)各layer的數(shù)據(jù)的疊加,。如果是CPU接口的屏,合并后的數(shù)據(jù)往?GRAM刷,如果是RGB接口的數(shù)據(jù),那么往DDR內(nèi)存中的顯存刷,然后RGB控制器自動(dòng)從顯存來(lái)取。 

?

MT6589平臺(tái),把顯示系統(tǒng)分成很多模塊。

包括,rotator模塊,scaler模塊,gamrer模塊,RDMA模塊,WDMA模塊,BLS模塊。

各種LCD接口模塊(DPI,DBI,?DSI)。

?

各個(gè)模塊的功能從名字上就可以看出來(lái)。

無(wú)非就是顏色轉(zhuǎn)換,角度轉(zhuǎn)換,數(shù)據(jù)疊加等。每個(gè)模塊的具體功能和寄存器數(shù)據(jù)手冊(cè)上寫(xiě)的很詳細(xì)。暫時(shí)沒(méi)有必要去詳細(xì)了解。

當(dāng)前目的是先了解框架,以后有問(wèn)題可以定位再深入。

如上圖就是整個(gè)顯示子系統(tǒng)的框圖。上圖中的藍(lán)色箭頭指向內(nèi)存。

?

其中 :RDMA用來(lái)準(zhǔn)備數(shù)據(jù)給DPI DSI DBI接口引擎(顧名思義read DMA)

?rdma 輸入支持兩種模式:

1. ?direct link input mode :指的是RDAM的數(shù)據(jù)源是上級(jí)的子模塊(例如overlayer 模塊)

2. memory link input mode:?指的是RDAM的數(shù)據(jù)來(lái)自?xún)?nèi)存。

?rdma 的輸出都是給顯示接口DPI 、DSI 或者DBI。

-------

MT6589有兩個(gè)RDMA。

?RDMA0支持從內(nèi)存輸入和輸出給顯示接口
RDMA1只支持內(nèi)存輸入。

如上圖中的紅色虛線(xiàn)框部分為RDMA

?------------------------------

WDMA:?Write DMA 。從框圖可以看到都是將前面幾個(gè)模塊產(chǎn)生顯示buffer 寫(xiě)入到內(nèi)存中的。

?

BLS :?自動(dòng)背光調(diào)節(jié),根據(jù)顯示的數(shù)據(jù)來(lái)決定給背光占空比的一種方式,可以節(jié)省電源消耗,例如黑色部分可以降低背光亮度。省電。

?

overlayer :??從內(nèi)存中或者前級(jí)模塊的輸出通過(guò)透明度、區(qū)域設(shè)置、等疊加,輸出為一個(gè)顯存。 這個(gè)也是核心部件。

2 。

再來(lái)分析如何使用這些模塊刷新一個(gè)圖片。 按照慣例,boot 模塊(LK)只是刷一個(gè)logo,代碼會(huì)比較簡(jiǎn)單,方便了解簡(jiǎn)單使用流程,后續(xù)有空再看kernel .

?

初始化

Platform.c (bootable\bootloader\lk\platform\mediatek\mt6589\lk)????

--》void platform_early_init(void)

首先找到顯示系統(tǒng)要用地址:(從下面可以看到和以前平臺(tái)一樣把內(nèi)存中最后一段區(qū)域的作為顯存)

?

---------------------

下面就是調(diào)用顯示初始化:

Platform.c (mediatek\platform\mt6589\lk)? --

?

?

?

?

從這里可以知道lk部分的顯示路徑

從顯示內(nèi)存(寫(xiě)提示符號(hào)的層和顯示logo的層)兩層通過(guò)overlay模塊輸出

overlay輸出作為顯示子系統(tǒng)的輸入。

以上通過(guò)disp_path_config(&config)函數(shù)把參數(shù)設(shè)置到寄存器

上面都是都是CPU斷的初始化。

最后初始化屏的寄存器。

lcm_drv->init()

--------------------

再看主要的函數(shù)????????????????????? disp_path_config

具體如下:

1.???????首先處理各個(gè)模塊的沖突以及互斥,這個(gè)不影響主流程,以后再看

2.???????根據(jù)輸出路徑配置寄存器。

pConfig->dstModule

從這里可以看出顯示系統(tǒng)輸出邏輯上支持的五種情況。

DISP_MODULE_DSI_VDO

DISP_MODULE_DPI0

DISP_MODULE_DBI

DISP_MODULE_DSI_CMD

DISP_MODULE_WDMA1

從直觀(guān)上看前四個(gè)就是顯示的接口,

最后一種WDMA是將顯示系統(tǒng)的數(shù)據(jù)輸出到內(nèi)存。支持過(guò)濾,抖動(dòng),色域轉(zhuǎn)換。

路徑配置的核心部分:

?

這部分注釋已經(jīng)很明確了,再根據(jù)顯示子系統(tǒng)系統(tǒng)模塊圖就很清晰。

可以看到,如果要刷到屏上的話(huà),都是通過(guò):

OVERLAYER模塊à經(jīng)過(guò)BLS模塊RDMA0模塊?相應(yīng)的顯示接口模塊

3.???????配置overlayer.?(既然顯示部分都來(lái)自overlay)

綜上:這個(gè)函數(shù)支持3種路徑

1. mem->ovl->wdma1->mem

2. ovl->bls->rdma0->lcd --- LK里面只用了這個(gè)模式

3. mem->rdma->lcd? --對(duì)于這種,前面沒(méi)提到補(bǔ)充下srcModule

pConfig->srcModule=DISP_MODULE_RDMA0

?-----------

初始化完了之后:

再來(lái)看如何第一次刷屏。

?

從這里看到LK里面 DPI刷屏比較簡(jiǎn)單,僅僅是重新設(shè)置了一下overlayer 參數(shù)。

轉(zhuǎn)載于:https://www.cnblogs.com/Ph-one/p/6794675.html

總結(jié)

以上是生活随笔為你收集整理的mtk6589显示子系统笔记(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。