展訊平台android display驅動分析

2021-08-10 09:03:41 字數 3253 閱讀 7928

本文以展訊tshak平台的display controller為硬體模型,來說明android底層顯示驅動的實現原理。該硬體模型較基礎和簡單,目前大多soc平台的硬體設計都變得越來越複雜,實現功能也越來越全面,但基於此平台的設計更方便理解。

下圖的結構即是顯示控制器的模組組成,它內部整合了lcd顯示相關的控制器:lcdc和dispc,其中lcdc僅支援mcu介面型別(dbi),而dispc支援dbi和dpi介面型別。 最上面的實現是lcdc,直接通過dbi進行了輸出。 中間較複雜的內容是dispc,影象資料流流向 ddr sdram ------> dispc ------> panel,dispc通過axi匯流排連線ddr controller並獲取ddr sdram中的影象資料,經由dispc處理後通過dbi/dpi等inte***ce將影象輸出給螢幕。 最下面是暫存器配置相關,一般暫存器配置在soc內部通過ahb匯流排。

展訊平台dispc支援兩層影象顯示: image 層/osd 層,image 層支援的影象格式: yuv422/yuv420/yuv400/rgb888/rgb565/rgb666/rgb555/pack data,osd 層支援的影象格式: rgb888/rgb565/rgb666/rgb555。下圖是dispc內部blending的功能示意。 video和camera的影象一般是yuv格式的,ui的影象是rgb的。

支援rgb888->rgb 666, rgb888->rgb 565。1. dbi介面, 就是通常所講的mcu模式。lcd panel內部一般需要一塊sram,重新整理操作由lcd panel完成。控制簡單方便,無需時鐘和同步訊號。

dpi介面,就是rgb模式。lcd panel內部一般不需要sram,重新整理操作由外部輸入的vsync完成。資料線和控制線分離顯示資料直接寫屏,速度快。

dpi時序圖如下面兩幅圖所示。

command mode: panel可以自重新整理,不需要sync訊號。.

video mode:需要sync訊號進行重新整理。

手機平台目前最常用的方案,內容較多,在此不詳述,可參考專業文件。…

為方便理解輸出介面,下面附一張螢幕顯示驅動晶元ili9486的結構圖,它與dispc的輸出介面相連。它支援mcu,spi,rgb,mipi各種介面。

首先show一下display驅動的結構圖,由三個層次組成,分別為fb, dispc和panel。

//暫存器

g_dispc_base_addr = (unsigned long)ioremap_nocache(r.start,

resource_size(&r));

if(!g_dispc_base_addr)

bug();

printk("sprdfb: set g_dispc_base_addr = %ld\n", g_dispc_base_addr);

#endif

} dev->frame_count = 0;

dev->logo_buffer_addr_v = 0;

dev->capability = sprdfb_config_capability();

if(sprdfb_panel_get(dev))else

dev->ctrl->early_init(dev); //sprd dispc控制器的early_init,其中有vsync中斷的申請

if(!dev->panel_ready)

} ret = setup_fb_mem(dev, pdev); //申請fb的memory,一般在dts中有reservemem

if (ret)

//配置fb_info成員引數,除了變數資訊外,還會設定ops資訊,其中最常用的就是mmap函式,將

//framebuffer的物理記憶體對映給usersapce使用

setup_fb_info(dev);

/* register framebuffer device */

ret = register_framebuffer(fb); //fb裝置註冊

if (ret)

platform_set_drvdata(pdev, dev);

sprdfb_create_sysfs(dev);

dev->ctrl->init(dev); //sprd dispc控制器的init

dpi_clk的計算方法如下: dpi_clk=(witdh+hfp+hbp+hsync)* (height+vfp+vbp+vsync)*fps

例如需配置幀率的話需要根據配置的dpi_clock,對除width/height這類影象固有引數以外引數進行配置。

dpi_clk=64m,如需配置720p的顯示幀率為60的話,可使用後面對應的可變引數(720+4+80+4)*(1280+18+17+5)*60= 64m

memory dump & screencap ...

展訊平台 mimi教程

資源位置 要會看學習文件 先看目錄 在具體看內容 有重點的看 d l6 test ms mmi source resource mmi res 320x240 common mmi res default imag idle style black breey time 學習方法 注意跟蹤測試理論與...

展訊平台sysdump解析

先確認有當前映象的vmlinux檔案,插入sdcard後,核心出現問題會觸發sysdump,sysdump內容儲存在ylog資料夾。將vmlinux,crash arm vendor sprd tools crash yslog下面的檔案放在同一資料夾,如 bt 該命令用於獲取當前執行緒的呼叫堆疊 ...

展訊平台 「設定字型大小功能」

這周移植了展訊平台的 設定字型大小功能 總結一些如下 分析 在設定選單中需要增加 設定字型大小 的功能。對於每乙個視窗都是由一些控制項畫出來的。所以要更改字型,必須把每個控制項的字型的字型處改動。看 可以得到基本上控制項的字型引數都是由mmi default big font引數傳遞的,只需要改動此...