chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

HDF Display驅(qū)動(dòng)模型的整體架構(gòu)加載及運(yùn)行流程

電子工程師 ? 來源:OpenAtom OpenHarmony ? 作者:翟海鵬 ? 2021-09-05 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Display 驅(qū)動(dòng)概述

隨著電子產(chǎn)業(yè)迅速發(fā)展,帶屏類的設(shè)備種類日益增多,各種各樣的顯示屏也隨之出現(xiàn)。

最常見的顯示屏有 LCD(Liquid Crystal Display)屏、LED(OrganicLight-Emitting Diode)點(diǎn)陣屏、OLED(Organic Light-EmittingDiode)屏等,根據(jù)其各自特點(diǎn),用于不同的顯示場(chǎng)景。顯示屏的硬件接口主要有 MIPI、HDMI、SPI、I2C、RGB、MCU 等,現(xiàn)在用于手機(jī)的高分辨率顯示屏,主要用的是 MIPI 接口,HDMI 接口主要用于顯示器或 TV,RGB 和 MCU 接口為并口,主要用于功能機(jī)之上。

以 LCD 為例,其驅(qū)動(dòng)主要完成三部分工作:

1、對(duì) LCD Driver IC 及模組相關(guān)的硬件資源進(jìn)行初始化,包括配置 MIPI 參數(shù),操作 GPIO 管腳,設(shè)置上下電時(shí)序,下發(fā)屏端初始化參數(shù)序列等;

2、器件驅(qū)動(dòng)操作接口對(duì)注冊(cè)或者對(duì)接到標(biāo)準(zhǔn)的顯示框架上,例如 DRM 架構(gòu)或者 FB 顯示架構(gòu),保證在設(shè)備亮滅屏狀態(tài)切換時(shí),顯示架構(gòu)可以通過 panel 驅(qū)動(dòng)注冊(cè)的接口操控 LCD;

3、背光參數(shù)配置及等級(jí)設(shè)置等。

Display驅(qū)動(dòng)模型介紹

驅(qū)動(dòng)模型背景

當(dāng)前操作系統(tǒng)和 SOC 種類繁多,各廠商的顯示屏器件也各有不同,隨之針對(duì)器件的驅(qū)動(dòng)代碼也不盡相同,往往是某一款器件驅(qū)動(dòng),只適用于某單一內(nèi)核系統(tǒng)或 SOC,如果要遷移到其他內(nèi)核或者 SOC,可能會(huì)有不小的移植工作量。而且,不同驅(qū)動(dòng) IC 的驅(qū)動(dòng)代碼差異較大,產(chǎn)品更換驅(qū)動(dòng) IC,則又需要重新開發(fā)對(duì)應(yīng)的器件驅(qū)動(dòng),造成重復(fù)工作。因此,我們嘗試基于 HDF 驅(qū)動(dòng)框架,編寫一套較通用的 Display 器件驅(qū)動(dòng)模型,盡可能降低驅(qū)動(dòng)開發(fā)者的開發(fā)或移植工作量,簡(jiǎn)化器件驅(qū)動(dòng)開發(fā),提升開發(fā)效率。

190266be-0da6-11ec-8fb8-12bb97331649.png

圖1 HDF Display驅(qū)動(dòng)模型層次關(guān)系

以顯示模塊為例,上層為圖形服務(wù);中間層為 HDI 層(Hardware Display Interface),對(duì)圖形服務(wù)提供驅(qū)動(dòng)能力接口,方便其操作具體的外設(shè)器件;顯示驅(qū)動(dòng)模型當(dāng)前部署在內(nèi)核態(tài),向上對(duì)接到 Display HDI 的實(shí)現(xiàn),同時(shí)在內(nèi)核對(duì)接到標(biāo)準(zhǔn)的顯示框架上(如DRM、FB);向下對(duì)接不同的 panel 驅(qū)動(dòng),從而自上而下打通顯示通路,驅(qū)動(dòng)屏幕點(diǎn)亮。

驅(qū)動(dòng)模型通過逐步兼容不同的顯示框架(DRM、FB)及差異化的 SOC,開發(fā)者可基于其快速開發(fā)顯示屏器件驅(qū)動(dòng)。

驅(qū)動(dòng)模型解析

顯示驅(qū)動(dòng)模型基于 HDF 驅(qū)動(dòng)框架、Platform 接口及 OSAL 接口開發(fā),可以屏蔽不同內(nèi)核形態(tài)(LiteOS、Linux)差異,適用于不同芯片平臺(tái)(Hi35xx、Hi38xx、V3S等),為顯示屏器件提供統(tǒng)一的驅(qū)動(dòng)平臺(tái)。

當(dāng)前驅(qū)動(dòng)模型主要部署在內(nèi)核態(tài)中,向上對(duì)接到 Display 公共 hal 層,輔助 HDI 的實(shí)現(xiàn)。顯示驅(qū)動(dòng)通過 Display-HDI 層對(duì)圖形服務(wù)暴露顯示屏驅(qū)動(dòng)能力;向下對(duì)接顯示屏 panel 器件,驅(qū)動(dòng)屏幕正常工作,自上而下打通顯示全流程通路。

模型各層設(shè)計(jì)說明

Display 驅(qū)動(dòng)模型基于 HDF 驅(qū)動(dòng)框架、Platform 接口及 OSAL 接口開發(fā),可以做到不區(qū)分OS(LiteOS、Linux)和芯片平臺(tái)(Hi35xx、Hi38xx、V3S等),為 LCD 器件提供統(tǒng)一的驅(qū)動(dòng)模型。

如圖 2 所示,當(dāng)前 HDF Display 驅(qū)動(dòng)模型主要分為四層:標(biāo)準(zhǔn)架構(gòu)適配層(DRM Panel Adapter Driver)、顯示公共驅(qū)動(dòng)層(DisplayCommon Driver)、芯片平臺(tái)適配層(SoC Adapter Driver)、器件驅(qū)動(dòng)層(Display Panel Driver)。

1、標(biāo)準(zhǔn)架構(gòu)適配層

194972fc-0da6-11ec-8fb8-12bb97331649.png

圖3. 標(biāo)準(zhǔn)架構(gòu)適配層組件

如圖 3 所示,本層主要完成對(duì)接標(biāo)準(zhǔn)的顯示驅(qū)動(dòng)架構(gòu),如 DRM(Direct Rending Manager)或 FB(Framebuffer),以 DRM 為例,將 panel 側(cè)驅(qū)動(dòng)接口對(duì)接到標(biāo)準(zhǔn)框架中,保證在 DRM 框架中實(shí)現(xiàn)對(duì) Panel 驅(qū)動(dòng)的操作接口,當(dāng)前注冊(cè)的接口如下。

static struct drm_panel_funcs g_hdfDrmPanelFuncs = { .get_modes = HdfDrmPanelGetModes, .enable = HdfDrmPanelEnable, .disable = HdfDrmPanelDisable, .prepare = HdfDrmPanelPrepare, .unprepare = HdfDrmPanelUnprepare,};

2、顯示公共驅(qū)動(dòng)層

1963f730-0da6-11ec-8fb8-12bb97331649.png

圖4. 顯示公共驅(qū)動(dòng)層組件

如圖 4 所示,此部分屬于整個(gè)驅(qū)動(dòng)模型的中樞,所有的屏端接口注冊(cè)、Panel 信息管理、屏幕狀態(tài)控制、用戶態(tài) HDI 接口命令處理、以及通用的基礎(chǔ)顯示特性,目前都是通過這部分實(shí)現(xiàn)。

在本層通過結(jié)構(gòu)體 DispManager 管理所有的顯示信息,其成員 PanelManager 用于記錄與顯示屏相關(guān)的接口及參數(shù)信息。同時(shí)接收并處理 HDI 層直接對(duì) panel 操作相關(guān)的指令(主要用于 L0-L1 等輕量級(jí)系統(tǒng)),如 Panel 器件信息的獲取、休眠喚醒、背光設(shè)置等指令。此外,本層還負(fù)責(zé)實(shí)現(xiàn)一些基礎(chǔ)顯示特性的業(yè)務(wù)框架,如 ESD 檢查機(jī)制,力求將顯示相關(guān)的共有邏輯集中到本層實(shí)現(xiàn),以簡(jiǎn)化 Panel 器件驅(qū)動(dòng)的實(shí)現(xiàn),避免 panel 驅(qū)動(dòng)中相同功能的重復(fù)實(shí)現(xiàn),便于統(tǒng)一管理和維護(hù)。

3、芯片平臺(tái)適配層

196d125c-0da6-11ec-8fb8-12bb97331649.png

圖5. 芯片平臺(tái)適配層組件

如圖 5 所示,借助此 SoC 適配層,實(shí)現(xiàn) Display 器件驅(qū)動(dòng)和 SoC 側(cè)硬件資源的解耦,主要完成芯片平臺(tái)強(qiáng)相關(guān)的參數(shù)配置,如 mipi 速率計(jì)算及設(shè)置、管腳復(fù)用配置,以及其他和 SoC 強(qiáng)相關(guān)的差異化配置及初始化等。

4、器件驅(qū)動(dòng)層

198c77a0-0da6-11ec-8fb8-12bb97331649.png

圖6. 器件驅(qū)動(dòng)層組件

如圖 6 所示,器件驅(qū)動(dòng)層主要實(shí)現(xiàn)和器件自身強(qiáng)相關(guān)的驅(qū)動(dòng)適配接口,例如發(fā)送初始化序列、休眠喚醒流程、背光設(shè)置、ESD 檢測(cè)等,同時(shí)完成 panel 信息的解析,并將 panel 向上注冊(cè)到公共驅(qū)動(dòng)層進(jìn)行管理。

基于 Display 驅(qū)動(dòng)模型開發(fā) LCD 器件驅(qū)動(dòng),可以借助平臺(tái)提供的各種能力及接口,較大程度的降低器件驅(qū)動(dòng)的開發(fā)難度和周期,提升開發(fā)效率。

說明

以上驅(qū)動(dòng)模型中的各層,需要根據(jù)產(chǎn)品自身情況來選擇,其中“顯示公共驅(qū)動(dòng)層”和“器件驅(qū)動(dòng)層”為必選項(xiàng),“標(biāo)準(zhǔn)架構(gòu)適配層”和“芯片平臺(tái)適配層”則為可選項(xiàng)。對(duì)于L0-L1這種輕量級(jí)SoC,一般都會(huì)有與SoC強(qiáng)相關(guān)的硬件配置需要在“芯片平臺(tái)適配層”中完成,而對(duì)于L2及其以上的SoC,通常都會(huì)采用標(biāo)準(zhǔn)的顯示框架,此時(shí)“標(biāo)準(zhǔn)架構(gòu)適配層”則必不可少。

驅(qū)動(dòng)加載及運(yùn)行

HDF 的驅(qū)動(dòng)的加載方式,在之前的 HDF 框架介紹章節(jié)中已經(jīng)做過說明,框架通過解析設(shè)備描述的 hcs 配置文件,獲取到各設(shè)備的配置信息,根據(jù) moduleName 來匹配對(duì)應(yīng)設(shè)備的驅(qū)動(dòng)文件入口,按照配置的加載優(yōu)先級(jí),依次加載驅(qū)動(dòng),詳細(xì)說明會(huì)在下一節(jié)的“具體開發(fā)步驟”中進(jìn)行描述。

如圖 7 所示,簡(jiǎn)要概括了驅(qū)動(dòng)模型的加載及運(yùn)行流程,對(duì)模型內(nèi)部組件及關(guān)聯(lián)組件之間的關(guān)系做了劃分,整體加載流程分為 9 步,分別說明如下:

“顯示公共驅(qū)動(dòng)層”和“器件驅(qū)動(dòng)層”為必選項(xiàng),“標(biāo)準(zhǔn)架構(gòu)適配層”和“芯片平臺(tái)適配層”

1、HDF Device Manager 解析設(shè)備描述;

2、HDF 優(yōu)先加載器件驅(qū)動(dòng)層,構(gòu)建 Panel 設(shè)備;

3、將 panel 信息及操作接口注冊(cè)到公共驅(qū)動(dòng)層;

4、HDF 其次加載芯片平臺(tái)適配層,進(jìn)行 SoC 相關(guān)硬件資源初始化;

5、HDF 再次加載公共驅(qū)動(dòng)層,對(duì)共有特性進(jìn)行初始化;

6、HDF 最后加載標(biāo)準(zhǔn)架構(gòu)適配層;

7、從公共驅(qū)動(dòng)層中獲取到 PanelManager,;

8、將對(duì)應(yīng) panel 注冊(cè)到 DRM 框架中;

9、在系統(tǒng)運(yùn)行起來后,DRM 會(huì)調(diào)用 panel ops 進(jìn)行顯示屏控制。

對(duì)于采用像 LiteOS 這種輕量?jī)?nèi)核的系統(tǒng),并不會(huì)像 Linux 內(nèi)核那樣提供標(biāo)準(zhǔn)的顯示框架,驅(qū)動(dòng)模型也無(wú)法與其對(duì)接,因而上層圖形系統(tǒng)可以通過 HDI 接口,來直接操控顯示屏。

Display驅(qū)動(dòng)開發(fā)指導(dǎo)

驅(qū)動(dòng)開發(fā)說明

基于 HDF Display 驅(qū)動(dòng)模型,開發(fā)一款器件驅(qū)動(dòng),開發(fā)者主要需要完成兩部分工作:HCS 配置文件、器件驅(qū)動(dòng)層適配。

對(duì)于輕量級(jí)設(shè)備(L0-L1),以海思 Hi35xx 芯片為例,除了上述兩部分工作外,還需要在芯片平臺(tái)適配層中,完成 SoC 有關(guān)顯示屏的硬件資源配置。

對(duì)于標(biāo)準(zhǔn)設(shè)備(≥L2),還需要關(guān)注與 DRM 對(duì)接的標(biāo)準(zhǔn)架構(gòu)適配層,此部分在模型中已經(jīng)添加,開發(fā)者只需聚焦器件驅(qū)動(dòng)層的實(shí)現(xiàn)即可。

具體開發(fā)步驟

此處我們以潤(rùn)和開發(fā)板(Hi3516 SoC)為例,說明適配一款 LCD 屏需要完成的工作。

添加 Display 配置信息

(1)設(shè)備描述配置

配置文件目錄:

vendor/hisilicon/hispark_taurus/config/device_info/device_info.hcs

基礎(chǔ)的設(shè)備描述信息,在 HDF 的配置章節(jié)有作說明,此處不再重復(fù)描述。在配置文件中添加 LCD 設(shè)備描述信息如下:

device_lcd :: device { device0 :: deviceNode { policy = 0; // 設(shè)備發(fā)布策略為0,即只對(duì)內(nèi)核態(tài)發(fā)布服務(wù) priority = 100; // 設(shè)備對(duì)應(yīng)驅(qū)動(dòng)加載優(yōu)先級(jí),值越小越早加載 preload = 0; // 0代表正常加載,1代表不加載 permission = 0660; // 設(shè)備對(duì)應(yīng)節(jié)點(diǎn)的權(quán)限// 模塊名很關(guān)鍵,需和對(duì)應(yīng)驅(qū)動(dòng)的中的moduleName保持一致 moduleName = “LCD_XXX”; serviceName = “hdf_lcdxxx_service”; // 當(dāng)前設(shè)備對(duì)應(yīng)的服務(wù) deviceMatchAttr = “ hdf_lcdxxx_driver”; // 設(shè)備對(duì)應(yīng)私有配置屬性名 }}

(2)器件私有配置

參考的配置文件目錄:

vendor/hisilicon/hispark_taurus/config/lcd/lcd_config.hcs

檢查配置宏

驅(qū)動(dòng)模型的編譯入口:drivers/adapter/khdf/liteos/model/display/Makefile

根據(jù)編譯控制內(nèi)容可知,需增加 panel 對(duì)應(yīng)的編譯控制宏:

ifeq ($(LOSCFG_DRIVERS_HDF_LCD_XXX), y)LOCAL_SRCS += $(LITEOSTOPDIR)/。。/。。/drivers/framework/model/display/driver/panel/mipi_xxx.cendif

配置編譯宏的路徑:

kernel/liteos_a/tools/build/config/hispark_taurus_clang_release.config

LOSCFG_DRIVERS_HDF_DISP=yLOSCFG_DRIVERS_HDF_LCD_XXX=y

適配器件驅(qū)動(dòng)

Display 驅(qū)動(dòng)模型路徑:drivers/framework/model/display/driver

對(duì)應(yīng)的器件驅(qū)動(dòng)路徑:drivers/framework/model/display/driver/panel

驅(qū)動(dòng)入口模板如下:

struct HdfDriverEntry g_ xxxDevEntry = { .moduleVersion = 1, .moduleName = “LCD_XXX”, // 要求和device_info.hcs中配置的模塊名一致 .Init = xxxEntryInit, // 驅(qū)動(dòng)入口};HDF_INIT(g_xxxDevEntry); // HDF驅(qū)動(dòng)入口解析模板

LCD 器件驅(qū)動(dòng)需要適配的基礎(chǔ)接口包括 init、on、off、setBacklight 等,并將器件信息掛接到 panle 的 info 成員上。

static void xxxPanelInit(struct PanelData *panel){ panel-》info = &g_panelInfo; panel-》status.powerStatus = POWER_STATUS_OFF; panel-》status.currLevel = MIN_LEVEL; panel-》esd = &g_panelEsd; panel-》init = xxxInit; panel-》on = xxxOn; panel-》off = xxxOff; panel-》setBacklight = xxxSetBacklight;}

Display開發(fā)實(shí)例

當(dāng)前潤(rùn)和開源板(Hi3516 SoC)上搭載的是眾盛捷的 5.5 寸屏,對(duì)應(yīng)的 Driver IC 型號(hào)為集創(chuàng)北方 ICN9700,顯示屏的物理接口為 MIPI DSI,以此屏為例進(jìn)行開發(fā)示例說明。

添加配置

配置路徑:

vendor/hisilicon/hispark_taurus/config/device_info/device_info.hcs

/* Display驅(qū)動(dòng)相關(guān)的設(shè)備描述配置 */display :: host { hostName = “display_host”; /* Display平臺(tái)驅(qū)動(dòng)設(shè)備描述 */ device_hdf_disp :: device { device0 :: deviceNode { policy = 2; priority = 200; permission = 0660; moduleName = “HDF_DISP”; serviceName = “hdf_disp”; } } /* SOC適配層驅(qū)動(dòng)設(shè)備描述 */ device_hi35xx_disp :: device { device0 :: deviceNode { policy = 0; priority = 199; moduleName = “HI351XX_DISP”;

} } /* LCD器件驅(qū)動(dòng)設(shè)備描述 */ device_lcd :: device { device0 :: deviceNode { policy = 0; priority = 100; preload = 0; moduleName = “LCD_ ICN9700”; } }}

通過如上配置中的器件驅(qū)動(dòng)的 moduleName 為 “LCD_ICN9700”,HDF 遍歷對(duì)應(yīng)的驅(qū)動(dòng)入口并加載匹配的驅(qū)動(dòng)。

適配編譯

編譯入口:drivers/adapter/khdf/liteos/model/display/Makefile

ifeq ($(LOSCFG_DRIVERS_HDF_LCD_ICN9700), y)LOCAL_SRCS += $(LITEOSTOPDIR)/。。/。。/drivers/framework/model/display/driver/panel/mipi_icn9700.cendif

配置編譯宏的路徑:

kernel/liteos_a/tools/build/config/hispark_taurus_clang_release.config

LOSCFG_DRIVERS_HDF_LCD_ICN9700 =y

添加器件驅(qū)動(dòng)

驅(qū)動(dòng)路徑:drivers/framework/model/display/driver/panel/mipi_icn9700.c

器件驅(qū)動(dòng)加載入口:

struct HdfDriverEntry g_icn9700DevEntry = { .moduleVersion = 1, .moduleName = “LCD_ICN9700”, .Init = Icn9700EntryInit,};

器件驅(qū)動(dòng)初始化及 Panel 注冊(cè):

int32_t Icn9700EntryInit(struct HdfDeviceObject *object){ struct Icn9700Dev *icn9700 = NULL; if (object == NULL) { HDF_LOGE(“%s: object is null”, __func__); return HDF_FAILURE; } icn9700 = (struct Icn9700Dev *)OsalMemCalloc(sizeof(struct Icn9700Dev)); if (icn9700 == NULL) { HDF_LOGE(“%s icn9700 malloc fail”, __func__); return HDF_FAILURE; } Icn9700PanelInit(&icn9700-》panel);

icn9700-》panel.object = object; icn9700-》reset_gpio = RESET_GPIO; icn9700-》reset_delay = 20; // delay 20ms object-》priv = (void *)icn9700; if (RegisterPanel(&icn9700-》panel) != HDF_SUCCESS) { HDF_LOGE(“%s: RegisterPanel failed”, __func__); return HDF_FAILURE; } HDF_LOGI(“%s: exit succ”, __func__); return HDF_SUCCESS;}

Panel Info 初始化:

static struct PanelInfo g_panelInfo = { .width = WIDTH, /* width */ .height = HEIGHT, /* height */ .hbp = HORIZONTAL_BACK_PORCH,

/* horizontal back porch */ .hfp = HORIZONTAL_FRONT_PORCH, /* horizontal front porch */ .hsw = HORIZONTAL_SYNC_WIDTH, /* horizontal sync width */ .vbp = VERTICAL_BACK_PORCH, /* vertical back porch */ .vfp = VERTICAL_FRONT_PORCH, /* vertical front porch */ .vsw = VERTICAL_SYNC_WIDTH, /* vertical sync width */ .frameRate = FRAME_RATE, /* frame rate */ .intfType = MIPI_DSI, /* panel interface type */ .intfSync = OUTPUT_USER,

/* output timing type */ /* mipi config info */ .mipi = { DSI_2_LANES, DSI_VIDEO_MODE, VIDEO_BURST_MODE, FORMAT_RGB_24_BIT }, /* backlight config info */ .blk = { BLK_PWM, MIN_LEVEL, MAX_LEVEL, DEFAULT_LEVEL }, .pwm = { BLK_PWM1, PWM_MAX_PERIOD },};

填充 Panel 信息并掛接回調(diào)接口:

static struct PanelEsd g_panelEsd = { .support = false, .checkFunc = Icn9700EsdCheckFunc,};static void Icn9700PanelInit(struct PanelData *panel){ panel-》info = &g_panelInfo; panel-》status.powerStatus = POWER_STATUS_OFF; panel-》status.currLevel = MIN_LEVEL; panel-》esd = &g_panelEsd; panel-》init = Icn9700Init; panel-》on = Icn9700On; panel-》off = Icn9700Off; panel-》setBacklight = Icn9700SetBacklight;}

Panel 亮屏接口實(shí)現(xiàn):

static int32_t Icn9700On(struct PanelData *panel){ int32_t ret; struct Icn9700Dev *icn9700 = NULL; icn9700 = PanelToIcn9700Dev(panel); if (icn9700 == NULL) { HDF_LOGE(“%s: icn9700 is null”, __func__); return HDF_FAILURE; } /* lcd reset power on */ ret = LcdResetOn(icn9700); if (ret != HDF_SUCCESS) { HDF_LOGE(“%s: LcdResetOn failed”, __func__);

return HDF_FAILURE; } if (icn9700-》mipiHandle == NULL) { HDF_LOGE(“%s: mipiHandle is null”, __func__); return HDF_FAILURE;

} /* send mipi init code */ int32_t count = sizeof(g_OnCmd) / sizeof(g_OnCmd[0]); int32_t i; for (i = 0; i 《 count; i++) { ret = MipiDsiTx(icn9700-》mipiHandle, &(g_OnCmd[i])); if (ret != HDF_SUCCESS) { HDF_LOGE(“%s: MipiDsiTx failed”, __func__); return HDF_FAILURE; } } panel-》status.powerStatus = POWER_STATUS_ON; /* set mipi to hs mode */ MipiDsiSetHsMode(icn9700-》mipiHandle);

添加芯片適配驅(qū)動(dòng)

驅(qū)動(dòng)路徑:

drivers/framework/model/display/driver/adapter_soc/hi35xx_disp.c

部分代碼示例如下,mipi 參數(shù)配置:

static int32_t MipiDsiInit(struct PanelInfo *info){ int32_t ret; struct DevHandle *mipiHandle = NULL; struct MipiCfg cfg; mipiHandle = MipiDsiOpen(0); if (mipiHandle == NULL) { HDF_LOGE(“%s: MipiDsiOpen failed”, __func__); return HDF_FAILURE; } cfg.lane = info-》mipi.lane; cfg.mode = info-》mipi.mode;

cfg.format = info-》mipi.format; cfg.burstMode = info-》mipi.burstMode; cfg.timing.xPixels = info-》width;cfg.timing.hsaPixels = info-》hsw; cfg.timing.hbpPixels = info-》hbp; cfg.timing.hlinePixels = info-》width + info-》hbp + info-》hfp + info-》hsw; cfg.timing.vsaLines = info-》vsw; cfg.timing.vbpLines = info-》vbp;cfg.timing.vfpLines = info-》vfp; cfg.timing.ylines = info-》height; cfg.timing.edpiCmdSize = 0;cfg.pixelClk = CalcPixelClk(info);

cfg.phyDataRate = CalcDataRate(info); /* config mipi device */ ret = MipiDsiSetCfg(mipiHandle, &cfg); if (ret != HDF_SUCCESS) { HDF_LOGE(“%s:MipiDsiSetCfg failed”, __func__); } MipiDsiClose(mipiHandle); return ret;}

總結(jié)

本文簡(jiǎn)要說明了 HDF Display 驅(qū)動(dòng)模型的整體架構(gòu)、加載及運(yùn)行流程、以及開發(fā)者基于此模型開發(fā)一款 LCD 驅(qū)動(dòng)需要完成的基礎(chǔ)適配工作。當(dāng)前模型更多的是聚焦對(duì)各顯示框架和差異化 SOC 的兼容適配,優(yōu)先滿足不同開發(fā)板的基本顯示功能需求,驅(qū)動(dòng)模型還在不斷演進(jìn)完善,歡迎持續(xù)關(guān)注。

責(zé)任編輯:haq

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

    關(guān)注

    12

    文章

    1939

    瀏覽量

    88410
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3694

    瀏覽量

    51958
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2152

    瀏覽量

    35862

原文標(biāo)題:OpenHarmony HDF Display驅(qū)動(dòng)模型解析及移植指導(dǎo)

文章出處:【微信號(hào):gh_e4f28cfa3159,微信公眾號(hào):OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    后勤業(yè)務(wù)工單大模型流程管理系統(tǒng)軟件的應(yīng)用與未來發(fā)展

    后勤任務(wù)分配、執(zhí)行跟蹤與資源調(diào)度全流程,進(jìn)而提升整體服務(wù)效率與資源利用率。以下從系統(tǒng)架構(gòu)、核心功能、技術(shù)優(yōu)勢(shì)、應(yīng)用場(chǎng)景及實(shí)施建議五個(gè)維度展開解析: ? ?系統(tǒng)軟件供應(yīng)可以來這里,這個(gè)首肌開始是幺伍扒,中間是幺幺叁叁,最
    的頭像 發(fā)表于 12-24 11:53 ?192次閱讀

    模型驅(qū)動(dòng)的星間鏈路動(dòng)態(tài)組網(wǎng)分系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析

    模型賦能的星間鏈路動(dòng)態(tài)組網(wǎng)分系統(tǒng)技術(shù)解析 ? ?北京華盛恒輝大模型驅(qū)動(dòng)的星間鏈路動(dòng)態(tài)組網(wǎng)分系統(tǒng),融合人工智能大模型與衛(wèi)星通信核心技術(shù),聚焦衛(wèi)星間動(dòng)態(tài)智能組網(wǎng)及通信鏈路優(yōu)化,核心優(yōu)勢(shì)在
    的頭像 發(fā)表于 12-23 14:52 ?192次閱讀

    基于大模型ai的地面測(cè)控站網(wǎng)調(diào)度分系統(tǒng):功能特點(diǎn)與平臺(tái)架構(gòu)解析

    分系統(tǒng)通過多源數(shù)據(jù)深度融合、動(dòng)態(tài)資源精準(zhǔn)調(diào)度與大模型智能決策能力的協(xié)同賦能,顯著提升了地面測(cè)控站網(wǎng)的運(yùn)行效率、安全冗余與可靠性能。以下從技術(shù)架構(gòu)、核心功能、應(yīng)用場(chǎng)景及未來趨勢(shì)四大維度展開深度解析: ? ?系統(tǒng)軟件供應(yīng)可以來這里,
    的頭像 發(fā)表于 12-19 15:13 ?256次閱讀

    迅為RK3568開發(fā)板實(shí)操-HDF驅(qū)動(dòng)配置UART

    /hdf_config/khdf/device_info/device_info.hcs 文件, device_info.hcs 中添加以下內(nèi)容: 1、device3 :: deviceNode { 2
    的頭像 發(fā)表于 06-27 15:58 ?516次閱讀

    知識(shí)分享 | 評(píng)估模型架構(gòu)——如何實(shí)現(xiàn)?

    確保良好的模型架構(gòu)對(duì)于開發(fā)安全和可靠的軟件非常重要。本文為您介紹MES Model Examiner? (MXAM)如何優(yōu)化模型架構(gòu),簡(jiǎn)化復(fù)雜度管理步驟,并最終提升軟件質(zhì)量。
    的頭像 發(fā)表于 06-05 11:46 ?546次閱讀
    知識(shí)分享 | 評(píng)估<b class='flag-5'>模型</b><b class='flag-5'>架構(gòu)</b>——如何實(shí)現(xiàn)?

    迅為RK3568開發(fā)板實(shí)操-HDF驅(qū)動(dòng)配置UART-修改HCS配置

    deviceMatchAttr 的值表示驅(qū)動(dòng)的私有配置信息 5 serviceName 表示服務(wù)名稱,服務(wù)加載成功之后會(huì)在開發(fā)板的/dev/目錄下生成節(jié)點(diǎn)。例如 HDF_PLATFORM_UART_9 后面跟著的數(shù)據(jù) 9 是
    發(fā)表于 05-22 11:32

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART

    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置UART
    的頭像 發(fā)表于 03-25 11:02 ?1521次閱讀
    【北京迅為】iTOP-RK3568開發(fā)板鴻蒙OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)實(shí)操-<b class='flag-5'>HDF</b><b class='flag-5'>驅(qū)動(dòng)</b>配置UART

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED

    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)實(shí)操-HDF驅(qū)動(dòng)配置LED
    的頭像 發(fā)表于 03-14 14:41 ?1236次閱讀
    北京迅為iTOP-RK3568開發(fā)板OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)實(shí)操-<b class='flag-5'>HDF</b><b class='flag-5'>驅(qū)動(dòng)</b>配置LED

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1704次閱讀
    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)內(nèi)核<b class='flag-5'>HDF</b><b class='flag-5'>驅(qū)動(dòng)</b>框架<b class='flag-5'>架構(gòu)</b>

    請(qǐng)問stm32mp257如何修改設(shè)備樹并加載驅(qū)動(dòng)

    1、重新編譯kernel容易報(bào)錯(cuò),重新編譯設(shè)備樹也會(huì)報(bào)錯(cuò)。 2、加載驅(qū)動(dòng),編譯環(huán)境應(yīng)該對(duì)應(yīng),加載不成功。 3、想知道整體比方說,修改下IO,修改下設(shè)備樹,加入一個(gè)應(yīng)用程序。
    發(fā)表于 03-07 08:05

    請(qǐng)問為什么模型加載時(shí)間比CPU長(zhǎng)?

    為什么模型加載時(shí)間比 CPU 長(zhǎng)?
    發(fā)表于 03-06 06:03

    迅為RK3568開發(fā)板篇Openharmony配置HDF控制UART-實(shí)操-HDF驅(qū)動(dòng)配置UART-修改HCS配置

    serviceName 表示服務(wù)名稱,服務(wù)加載成功之后會(huì)在開發(fā)板的/dev/目錄下生成節(jié)點(diǎn)。例如HDF_PLATFORM_UART_9 后面跟著的數(shù)據(jù) 9 是 UartOpen()的端口號(hào)
    發(fā)表于 02-21 10:53

    字節(jié)豆包大模型團(tuán)隊(duì)提出稀疏模型架構(gòu)

    字節(jié)跳動(dòng)豆包大模型Foundation團(tuán)隊(duì)近期研發(fā)出UltraMem,一種創(chuàng)新的稀疏模型架構(gòu),旨在解決推理過程中的訪存問題,同時(shí)確保模型效果不受影響。
    的頭像 發(fā)表于 02-13 15:25 ?1145次閱讀

    迅為RK3568開發(fā)板篇OpenHarmony實(shí)操HDF驅(qū)動(dòng)控制LED-編寫應(yīng)用APP

    HdfIoServiceBind 綁定 LED燈的 HDF 服務(wù),獲取 HDF 空間緩存區(qū),并向該緩沖區(qū)寫入控制數(shù)據(jù)。然后,通過 LED_WRITE 命令將數(shù)據(jù)發(fā)送到 HDF 驅(qū)動(dòng)
    發(fā)表于 02-06 10:27

    【「鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)」閱讀體驗(yàn)】- 第5章閱讀有感

    Ch5 驅(qū)動(dòng)子系統(tǒng)原理解析 書中對(duì) HarmonyOS 中的 HDF 驅(qū)動(dòng)架構(gòu)所畫的這張圖非常清晰的描述了 HDF 的設(shè)計(jì)思想。書中的描述
    發(fā)表于 02-02 00:34