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

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

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

鴻蒙開發(fā)實(shí)戰(zhàn):【Hdf Framework】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-21 20:29 ? 次閱讀

簡介

該倉主要存放OpenHarmony驅(qū)動子系統(tǒng)核心源碼信息(包括驅(qū)動框架、配置管理、配置解析、驅(qū)動通用框架模型、硬件通用平臺能力接口等),旨在為開發(fā)者提供更精準(zhǔn)、更高效的開發(fā)環(huán)境,力求做到一次開發(fā),多系統(tǒng)部署。

圖 1 驅(qū)動框架架構(gòu)圖[]()

說明

驅(qū)動框架使用說明

基于HDF框架開發(fā)驅(qū)動,開發(fā)者只需注冊所需接口和配置,驅(qū)動框架就會解析配置內(nèi)容,完成驅(qū)動加載和初始化動作。

HDF驅(qū)動框架主要包含三部分:

1、驅(qū)動程序部分----完成驅(qū)動的功能邏輯。

2、驅(qū)動配置信息----指示驅(qū)動的加載信息內(nèi)容。

3、驅(qū)動資源配置----配置驅(qū)動的硬件配置信息。

驅(qū)動程序主要是完成驅(qū)動功能的邏輯代碼:

對于開發(fā)者首先看到的是驅(qū)動入口部分,驅(qū)動入口通過結(jié)構(gòu)體DriverEntry進(jìn)行描述。

其中主要包含Bind, Init 和Release三個接口。

struct HdfDriverEntry g_deviceSample = {
    .moduleVersion = 1,
    .moduleName = "sample_driver", 
    .Bind = SampleDriverBind,
    .Init = SampleDriverInit,
    .Release = SampleDriverRelease,
};

Bind接口描述:該接口的作用主要是完成驅(qū)動設(shè)備和設(shè)備服務(wù)接口的bind動作。

int32_t SampleDriverBind(struct HdfDeviceObject *deviceObject)
{
    return HDF_SUCCESS;
}

Init接口描述:當(dāng)框架完成設(shè)備綁定動作后,就開始調(diào)用驅(qū)動初始化接口,初始化成功后,驅(qū)動框架根據(jù)配置文件決定是對外創(chuàng)建設(shè)備服務(wù)接口,還是接口只對當(dāng)前服務(wù)可見。如果Init初始化失敗,驅(qū)動框架就會主動釋放創(chuàng)建的設(shè)備接口等信息。

int32_t SampleDriverInit(struct HdfDeviceObject *deviceObject)
{
    return HDF_SUCCESS;
}

Release接口描述:當(dāng)用戶需要卸載驅(qū)動時,驅(qū)動框架先通過該接口通知驅(qū)動程序釋放資源,然后再釋放其他內(nèi)部資源。

void SampleDriverRelease(struct HdfDeviceObject *deviceObject)
{
    // Release all resources.
    return;
}

Sensor框架模型說明

基于HDF(Hardware Driver Foundation)驅(qū)動框架的Sensor驅(qū)動模型,可實(shí)現(xiàn)跨操作系統(tǒng)遷移、器件差異配置等功能。

Sensor驅(qū)動模型主要由以下兩部分組成:

  • 基礎(chǔ)能力部分:依賴HDF驅(qū)動框架實(shí)現(xiàn)Sensor器件驅(qū)動的注冊、加載、去注冊、器件探測等能力,提供同一類型Sensor器件的驅(qū)動歸一接口、寄存器配置解析操作接口、總線訪問抽象接口和平臺抽象接口。
  • 開發(fā)者實(shí)現(xiàn)部分:依賴HDF驅(qū)動框架的HCS(HDF Configuration Source)配置管理,根據(jù)同類型Sensor差異化配置,實(shí)現(xiàn)Sensor器件參數(shù)序列化配置和器件部分操作接口。

Display框架模型說明

基于OpenHarmony驅(qū)動框架的Display驅(qū)動模型,對下屏蔽了芯片平臺差異,方便操作系統(tǒng)跨平臺遷移;向上抽象了外設(shè)驅(qū)動公共業(yè)務(wù)邏輯,通過配置或差異化適配接口,實(shí)現(xiàn)了一套驅(qū)動模型兼容不同的外設(shè)器件,使得三方廠商可以高效、便捷的切入鴻蒙驅(qū)動生態(tài)。

Display驅(qū)動模型主要由以下兩部分組成:

  • 基礎(chǔ)能力部分:包括HDI(Hardware Driver Interfaces)接口的定義及實(shí)現(xiàn)框架,以及芯片平臺對HDI接口的適配實(shí)現(xiàn);內(nèi)核驅(qū)動部分抽象了Panel驅(qū)動的公共業(yè)務(wù),提供了Panel初始化、器件配置信息獲取、上下電、背光設(shè)置等公共流程。
  • 開發(fā)者實(shí)現(xiàn)部分:需要完成板級HCS配置及Panel私有數(shù)據(jù)配置,實(shí)現(xiàn)部分器件差異化接口。

Input框架模型說明

基于OpenHarmony驅(qū)動框架的Input驅(qū)動模型,不依賴于芯片平臺,對上層輸入服務(wù)提供統(tǒng)一的驅(qū)動接口;在具體的驅(qū)動模型實(shí)現(xiàn)中,針對不同類別的輸入設(shè)備,抽象出幾類公共的平臺驅(qū)動,通過配置及差異化的適配接口,使得驅(qū)動模型可兼容不同的輸入設(shè)備。借由此驅(qū)動模型,可大幅縮減Input設(shè)備驅(qū)動的開發(fā)周期。

Input驅(qū)動模型主要有以下兩部分組成:

  • 基礎(chǔ)能力部分:包括Input HDI層的接口定義及公共實(shí)現(xiàn),對上層輸入服務(wù)提供設(shè)備管理、業(yè)務(wù)控制、數(shù)據(jù)上報等驅(qū)動能力接口;而Input驅(qū)動模型提供不同類型Input設(shè)備的歸一化驅(qū)動, 包括輸入設(shè)備的注冊和注銷、event數(shù)據(jù)的上報通道、配置信息的解析、公共驅(qū)動的加載等能力。
  • 開發(fā)者實(shí)現(xiàn)部分:需根據(jù)驅(qū)動模型提供的平臺驅(qū)動,完成設(shè)備描述配置及器件私有配置,實(shí)現(xiàn)預(yù)留的器件差異化接口。

QQ瀏覽器截圖20240320162546.png

WLAN框架模型說明

基于OpenHarmony驅(qū)動框架的WLAN驅(qū)動模型,可實(shí)現(xiàn)跨操作系統(tǒng)遷移,自適應(yīng)器件差異,模塊化拼裝編譯等功能。各WLAN廠商驅(qū)動開發(fā)人員可根據(jù)WLAN模塊提供的向下統(tǒng)一接口適配各自的驅(qū)動代碼,HDI層開發(fā)人員可根據(jù)WLAN模塊提供的向上統(tǒng)一接口獲取如下能力:建立/關(guān)閉WLAN熱點(diǎn)、掃描、關(guān)聯(lián)WLAN熱點(diǎn)等。

WLAN驅(qū)動模型主要有以下兩部分組成:

  • 基礎(chǔ)能力部分:包括WLAN HDI層的接口定義及公共實(shí)現(xiàn),對上層輸入服務(wù)提供如設(shè)置MAC地址,獲取設(shè)備MAC地址,獲取特性類型,設(shè)置發(fā)射功率等能力;對驅(qū)動開發(fā)者提供創(chuàng)建/釋放WifiModule、關(guān)聯(lián)/取消關(guān)聯(lián)、申請/釋放NetBuf等能力。
  • 開發(fā)者實(shí)現(xiàn)部分:需根據(jù)驅(qū)動模型提供的平臺驅(qū)動,完成板級的HCS配置及WLAN芯片的私有配置,實(shí)現(xiàn)預(yù)留的初始化/注銷網(wǎng)絡(luò)設(shè)備、打開/關(guān)閉網(wǎng)絡(luò)設(shè)備等相關(guān)接口。

審核編輯 黃宇

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

    關(guān)注

    2

    文章

    657

    瀏覽量

    73098
  • Sensor
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    49601
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2351

    瀏覽量

    42849
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3722

    瀏覽量

    16313
收藏 人收藏

    評論

    相關(guān)推薦

    一文解析鴻蒙系統(tǒng)中的HDF架構(gòu)

    1 鋪墊一下 鴻蒙系統(tǒng)終于公開源代碼了,正可謂“千呼萬喚始出來”。筆者也手癢下載了一套代碼,并研讀了一二。這里就先編寫一篇關(guān)于HDF的文檔。 其實(shí),不同讀碼人都會有各自讀代碼的習(xí)慣和切入點(diǎn),我之所以
    的頭像 發(fā)表于 03-25 16:06 ?6832次閱讀
    一文解析<b class='flag-5'>鴻蒙</b>系統(tǒng)中的<b class='flag-5'>HDF</b>架構(gòu)

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】

    、OpenHarmony 多媒體技術(shù)、Napi組件、OpenHarmony內(nèi)核、Harmony南向開發(fā)、鴻蒙項(xiàng)目實(shí)戰(zhàn)等等)鴻蒙(Harmony NEXT) 技術(shù)知識點(diǎn) 如果你是一名An
    發(fā)表于 03-03 21:29

    鴻蒙Flutter實(shí)戰(zhàn):07混合開發(fā)

    # 鴻蒙Flutter實(shí)戰(zhàn):混合開發(fā) 鴻蒙Flutter混合開發(fā)主要有兩種形式。 ## 1.基于har 將flutter module
    發(fā)表于 10-23 16:00

    鴻蒙Flutter實(shí)戰(zhàn):08-如何調(diào)試代碼

    # 鴻蒙Flutter實(shí)戰(zhàn):如何調(diào)試代碼 ## 1.環(huán)境搭建 參考文章[鴻蒙Flutter實(shí)戰(zhàn):01-搭建開發(fā)環(huán)境](https://g
    發(fā)表于 10-23 16:29

    【信盈達(dá)】鴻蒙系統(tǒng)驅(qū)動程序--1、HDF開發(fā)指南

    1,HDF開發(fā)指南HDF(HarmonyOS Driver Foundation)鴻蒙驅(qū)動框架,提供驅(qū)動框架能力,包括驅(qū)動加載,驅(qū)動服務(wù)管理,驅(qū)動消息機(jī)制和驅(qū)動電源管理?;?/div>
    發(fā)表于 09-14 10:20

    HarmonyOS HDF驅(qū)動框架---開發(fā)概述

    簡介HDF(HarmonyOS Driver Foundation)驅(qū)動框架,為驅(qū)動開發(fā)者提供驅(qū)動框架能力,包括驅(qū)動加載、驅(qū)動服務(wù)管理和驅(qū)動消息機(jī)制。旨在構(gòu)建統(tǒng)一的驅(qū)動架構(gòu)平臺,為驅(qū)動開發(fā)者提供更精
    發(fā)表于 09-16 18:06

    【HarmonyOS】品讀鴻蒙HDF架構(gòu)(一)

    以這個PublishService()為切入點(diǎn),開始研讀代碼,慢慢就涉及了HDF的更多知識,現(xiàn)在是時候整理出來了。所謂HDF,應(yīng)該是Harmony Driver Fundation的縮寫,說到底是鴻蒙形成
    發(fā)表于 10-14 12:19

    品讀鴻蒙HDF架構(gòu)(一)

    1.鋪墊一下鴻蒙系統(tǒng)終于公開源代碼了,正可謂“千呼萬喚始出來”。筆者也手癢下載了一套代碼,并研讀了一二。這里就先編寫一篇關(guān)于HDF的文檔。其實(shí),不同讀碼人都會有各自讀代碼的習(xí)慣和切入點(diǎn),我之所以從
    發(fā)表于 12-16 11:29

    品讀鴻蒙HDF架構(gòu)(二)

    DevmgrServiceClntAttachDeviceHost()一步,該函數(shù)代碼截選如下:【drivers/hdf/frameworks/core/host/src/Devmgr_service_clnt.c】int
    發(fā)表于 12-16 11:42

    品讀鴻蒙HDF架構(gòu)(三)

    現(xiàn)在我們繼續(xù)研究鴻蒙HDF架構(gòu),上回書說到經(jīng)由HdfDeviceAttach(),HdfDevice節(jié)點(diǎn)不但添加進(jìn)了DevHostService的devices列表,而且還和一個
    發(fā)表于 12-16 14:03

    鴻蒙開發(fā)AI應(yīng)用(五)HDF 驅(qū)動補(bǔ)光燈

    前言上一篇,我們在鴻蒙上運(yùn)行了第一個程序,這一篇我們來編寫一個驅(qū)動開啟攝像頭的紅外補(bǔ)光燈,順便熟悉一下鴻蒙上的 HDF 驅(qū)動開發(fā)。硬件準(zhǔn)備先查一下原理圖(具體可參考第一篇的硬件資料),
    發(fā)表于 12-27 07:00

    鴻蒙開發(fā)AI應(yīng)用(匯總)連載中

    ...5. 用鴻蒙開發(fā)AI應(yīng)用(五)HDF 驅(qū)動補(bǔ)光燈本篇介紹了鴻蒙上的 HDF 驅(qū)動開發(fā),通過
    發(fā)表于 01-13 15:03

    樹莓派4B運(yùn)行鴻蒙系統(tǒng)增加HDF模塊

    前言HDF驅(qū)動子系統(tǒng)是OpenHarmony重要的特色功能之一,其主要的功能是實(shí)現(xiàn)驅(qū)動程序在多內(nèi)核多平臺的物聯(lián)網(wǎng)環(huán)境,實(shí)現(xiàn)一次驅(qū)動開發(fā),多端部署。之前移植OHOS3.0使用了傳統(tǒng)的linux驅(qū)動
    發(fā)表于 12-12 19:01

    華為開發(fā)者大會分論壇HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-鴻蒙智聯(lián)認(rèn)證生態(tài)設(shè)備測試挑戰(zhàn)

    HDC 2021華為開發(fā)者大會分論壇HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-鴻蒙智聯(lián)認(rèn)證生態(tài)設(shè)備測試挑戰(zhàn)
    的頭像 發(fā)表于 10-23 16:40 ?1818次閱讀
    華為<b class='flag-5'>開發(fā)</b>者大會分論壇HarmonyOS測試技術(shù)與<b class='flag-5'>實(shí)戰(zhàn)</b>-<b class='flag-5'>鴻蒙</b>智聯(lián)認(rèn)證生態(tài)設(shè)備測試挑戰(zhàn)

    HDF驅(qū)動框架中USB DDK的解析與開發(fā)指導(dǎo)

    HDF(Hardware Driver Foundation)驅(qū)動框架是HarmonyOS硬件生態(tài)開放的基礎(chǔ),為開發(fā)者提供了驅(qū)動加載、驅(qū)動服務(wù)管理和驅(qū)動消息機(jī)制等驅(qū)動能力,讓開發(fā)者能精準(zhǔn)且高效的
    的頭像 發(fā)表于 03-30 10:16 ?2229次閱讀