拿到mt6589的版本不久,發現顯示系統**結構改變很大。做些備忘,後續不忙的時候可以繼續看。
mt6589之前的mtk的android系統顯示系統同featurephone基本一致。
先來回顧下mtk之前版本的大致結構,每個video層,每個ui層 分別對應乙個layer,再通過設定一些,區域座標,透明度,通透色等,然後啟動顯示模組的dma,實現各layer的資料的疊加,。如果是cpu介面的屏,合併後的資料往 gram刷,如果是rgb介面的資料,那麼往ddr記憶體中的視訊記憶體刷,然後rgb控制器自動從視訊記憶體來取。
mt6589平台,把顯示系統分成很多模組。
包括,rotator模組,scaler模組,gamrer模組,rdma模組,wdma模組,bls模組。
各種lcd介面模組(dpi,dbi, dsi)。
各個模組的功能從名字上就可以看出來。
無非就是顏色轉換,角度轉換,資料疊加等。每個模組的具體功能和暫存器資料手冊上寫的很詳細。暫時沒有必要去詳細了解。
當前目的是先了解框架,以後有問題可以定位再深入。
如上圖就是整個顯示子系統的框圖。上圖中的藍色箭頭指向記憶體。
其中 :rdma用來準備資料給dpi dsi dbi介面引擎(顧名思義read dma)
rdma 輸入支援兩種模式:
1. direct link input mode :指的是rdam的資料來源是上級的子模組(例如overlayer 模組)
2. memory link input mode: 指的是rdam的資料來自記憶體。
rdma 的輸出都是給顯示介面dpi 、dsi 或者dbi。
mt6589有兩個rdma。
rdma0支援從記憶體輸入和輸出給顯示介面
rdma1只支援記憶體輸入。
如上圖中的紅色虛線框部分為rdma
wdma: write dma 。從框圖可以看到都是將前面幾個模組產生顯示buffer 寫入到記憶體中的。
bls : 自動背光調節,根據顯示的資料來決定給背光占空比的一種方式,可以節省電源消耗,例如黑色部分可以降低背光亮度。省電。
overlayer : 從記憶體中或者前級模組的輸出通過透明度、區域設定、等疊加,輸出為乙個視訊記憶體。 這個也是核心部件。
2 。再來分析如何使用這些模組重新整理乙個。 按照慣例,boot 模組(lk)只是刷乙個logo,**會比較簡單,方便了解簡單使用流程,後續有空再看kernel .
初始化
下面就是呼叫顯示初始化:
從這裡可以知道lk部分的顯示路徑
從顯示記憶體(寫提示符號的層和顯示logo的層)兩層通過overlay模組輸出
overlay輸出作為顯示子系統的輸入。
以上通過disp_path_config(&config)函式把引數設定到暫存器
上面都是都是cpu斷的初始化。
最後初始化屏的暫存器。
lcm_drv->init()
再看主要的函式 disp_path_config
具體如下:
1. 首先處理各個模組的衝突以及互斥,這個不影響主流程,以後再看
2. 根據輸出路徑配置暫存器。
pconfig->dstmodule
從這裡可以看出顯示系統輸出邏輯上支援的五種情況。
disp_module_dsi_vdo
disp_module_dpi0
disp_module_dbi
disp_module_dsi_cmd
disp_module_wdma1
從直觀上看前四個就是顯示的介面,
最後一種wdma是將顯示系統的資料輸出到記憶體。支援過濾,抖動,色域轉換。
路徑配置的核心部分:
這部分注釋已經很明確了,再根據顯示子系統系統模組圖就很清晰。
可以看到,如果要刷到屏上的話,都是通過:
overlayer模組à經過bls模組rdma0模組 相應的顯示介面模組
3. 配置overlayer. (既然顯示部分都來自overlay)
綜上:這個函式支援3種路徑
1. mem->ovl->wdma1->mem
2. ovl->bls->rdma0->lcd --- lk裡面只用了這個模式
3. mem->rdma->lcd --對於這種,前面沒提到補充下srcmodule
pconfig->srcmodule=disp_module_rdma0
初始化完了之後:
再來看如何第一次刷屏。
從這裡看到lk裡面 dpi刷屏比較簡單,僅僅是重新設定了一下overlayer 引數。
輸入子系統筆記
輸入子系統筆記 現成的驅動程式 輸入子系統 input.c核心層 input init函式中呼叫err register chrdev input major,input input fops 在輸入子系統中我們不需要建立裝置號,輸入子系統已經為我們建立好了。static const struct ...
wsl windows子系統安裝筆記
開啟window子系統 控制面板 程式 啟動或關閉windows功能 或者 控制面板 程式 程式和功能 找到 適用於 linux 的 windows 子系統 並勾選上。儲存此鏈結,然後重啟 找到wsl ubuntu的安裝包使用 應用安裝程式 啟動安裝 然後點啟動,第一次會進入較長時間的初始化,不要退...
mmc子系統學習筆記二 關於mmc子系統筆記的說明
mmc子系統是linux裝置驅動中乙個不可缺少的部分,但科技進步,時代發展,現在mmc已經不是從前的mmc card 現在mmc子系統已經衍生到sd,sdio相關的技術了,也就是說mmc子系統已經能夠管理控制sd和sdio相關了,但是由於歷史的原因,仍稱呼為mmc子系統。mmc子系統差異說明 本mm...