RM新时代网站-首页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

鴻蒙開發(fā)學習:【驅(qū)動子系統(tǒng)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-17 22:05 ? 次閱讀

OpenHarmony驅(qū)動子系統(tǒng)采用C面向?qū)ο?a target="_blank">編程模型構(gòu)建,通過平臺解耦、內(nèi)核解耦,兼容不同內(nèi)核,提供了歸一化的驅(qū)動平臺底座,旨在為開發(fā)者提供更精準、更高效的開發(fā)環(huán)境,力求做到一次開發(fā),多系統(tǒng)部署。

為了縮減驅(qū)動開發(fā)者的驅(qū)動開發(fā)周期,降低三方設備驅(qū)動集成難度,OpenHarmony驅(qū)動子系統(tǒng)支持以下關(guān)鍵特性和能力。

  • 彈性化的框架能力:
    在傳統(tǒng)的驅(qū)動框架能力的基礎上,OpenHarmony驅(qū)動子系統(tǒng)通過構(gòu)建彈性化的框架能力,可支持在百K級別到百兆級容量的終端產(chǎn)品形態(tài)部署。
  • 規(guī)范化的驅(qū)動接口
    定義了常見驅(qū)動接口,為驅(qū)動開發(fā)者和使用者提供豐富、穩(wěn)定接口,并和未來開放的面向手機、平板、智慧屏等設備驅(qū)動接口保持API兼容性。
  • 組件化的驅(qū)動模型:
    支持組件化的驅(qū)動模型,為開發(fā)者提供更精細化的驅(qū)動管理,開發(fā)者可以對驅(qū)動進行組件化拆分,使得驅(qū)動開發(fā)者可以更多關(guān)注驅(qū)動與硬件交互部分。
    同時系統(tǒng)也預置了部分模板化的驅(qū)動模型組件,如網(wǎng)絡設備模型等。
  • 歸一化的配置界面:
    提供統(tǒng)一的配置界面,構(gòu)建跨平臺的配置轉(zhuǎn)換和生成工具,實現(xiàn)跨平臺的無縫切換

為了方便驅(qū)動開發(fā)者更易于開發(fā)OpenHarmony驅(qū)動程序,OpenHarmony驅(qū)動子系統(tǒng)在DevEco集成了驅(qū)動開發(fā)套件工具,支持驅(qū)動工程管理,驅(qū)動模板生成、配置管理等界面化的操作。

架構(gòu)

OpenHarmony驅(qū)動框架采用主從架構(gòu)設計模式,圍繞著框架、模型、能力庫和工具四個維度能力展開構(gòu)建。

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

  • 驅(qū)動框架 -位于framework/core目錄
    • 提供驅(qū)動框架能力,主要完成驅(qū)動加載和啟動功能。
    • 通過對象管理器方式可實現(xiàn)驅(qū)動框架的彈性化部署和擴展。
  • 驅(qū)動模型 - 位于framework/model目錄
    • 提供了模型化驅(qū)動能力,如網(wǎng)絡設備模型。
  • 驅(qū)動能力庫 - 位于framework/ability目錄
    • 提供基礎驅(qū)動能力模型,如IO通信能力模型。
  • 驅(qū)動工具 - 位于framework/tools目錄
    • 提供HDI接口轉(zhuǎn)換、驅(qū)動配置編譯等工具。
  • 驅(qū)動接口 - 位于lite/hdi目錄
    • 提供規(guī)范化的驅(qū)動接口。
  • Support - 位于framework/support目錄
    • 提供規(guī)范化的平臺驅(qū)動接口和系統(tǒng)接口抽象能力。

使用

圖 2 驅(qū)動框架交互流程

驅(qū)動框架完成大部分驅(qū)動加載的動作,用戶只需注冊自己所需的接口和配置,然后驅(qū)動框架就會解析配置的內(nèi)容,完成驅(qū)動加載和初始化動作。

開發(fā)者基于HDF驅(qū)動框架開發(fā)的驅(qū)動主要包含三大部分:

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

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

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

驅(qū)動程序主要是完成驅(qū)動功能的開發(fā)部分:

對于開發(fā)者首先看到的是驅(qū)動入口部分,驅(qū)動入口部分通過DriverEntry對其進行描述。

其中主要包含bind, init 和release三個接口。

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

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

int32_t SampleDriverBind(struct HdfDeviceObject *deviceObject)
{
    // TODO: Bind device service to device object.
    // And you can also initialize device resources here.
    return HDF_SUCCESS;
}

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

int32_t SampleDriverInit(struct HdfDeviceObject *deviceObject)
{
    // TODO: Init hardware or other resources here.
    return HDF_SUCCESS;
}

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

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

安裝

OpenHarmony驅(qū)動主要部署在內(nèi)核態(tài),當前主要采用靜態(tài)鏈接方式,隨內(nèi)核子系統(tǒng)編譯和系統(tǒng)鏡像打包。

圖 3 驅(qū)動安裝部署圖

審核編輯 黃宇

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

    關(guān)注

    1

    文章

    3226

    瀏覽量

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

    關(guān)注

    57

    文章

    2339

    瀏覽量

    42805
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3713

    瀏覽量

    16254
收藏 人收藏

    評論

    相關(guān)推薦

    免費學習鴻蒙(HarmonyOS)開發(fā),一些地址分享

    國內(nèi)一流高校。通過鴻蒙班的設立,高??梢詾閷W生提供專業(yè)的鴻蒙OS學習環(huán)境和豐富的實踐機會,培養(yǎng)出更多的鴻蒙開發(fā)人才,為
    發(fā)表于 01-12 20:48

    盤點那些硬件+項目學習套件:Hi3861鴻蒙開發(fā)板及入門常見問題解答

    、源碼、視頻課程,可以進行單片機入門、電機控制基礎、總線通訊-協(xié)議學習。Hi3861鴻蒙+STM32單片機的協(xié)作開發(fā):Hi3861鴻蒙開發(fā)
    發(fā)表于 02-01 16:55

    【連載】信盈達實力大佬講師帶你學習鴻蒙系統(tǒng)移植和驅(qū)動開發(fā)

    第一個應用程序和第一個驅(qū)動程序的實現(xiàn)?!拘庞_】鴻蒙操作系統(tǒng)移植--1、開發(fā)板介紹【信盈達】鴻蒙操作系統(tǒng)
    發(fā)表于 09-11 10:25

    鴻蒙OS驅(qū)動開發(fā)

    這篇文章主要帶領大家學習鴻蒙系統(tǒng)驅(qū)動開發(fā),本文包含以下知識點:1、開發(fā)Hi3516第一個
    發(fā)表于 09-11 14:42

    首批HarmonyOS系統(tǒng)課程開發(fā)者為您詳解鴻蒙系統(tǒng)開發(fā)與應用

    信盈達實力大佬講師帶你學習鴻蒙系統(tǒng)移植和驅(qū)動開發(fā)!講師介紹:胡智元,男、江西理工大學碩士,資深嵌入式ARM、Linux研發(fā)工程師。具有多年嵌
    發(fā)表于 09-14 14:26

    【課程連載】高級硬件工程師張飛帶你學習鴻蒙驅(qū)動開發(fā)系統(tǒng)燒錄

    ,去測試鴻蒙操作系統(tǒng)的wifi驅(qū)動是否安裝成功。實現(xiàn)手機能夠連上開發(fā)板網(wǎng)卡生成的熱點,及開發(fā)板連上指定的熱點。5、從串口、網(wǎng)口、USB的方式
    發(fā)表于 09-17 09:36

    【HarmonyOS IPC 試用連載 】鴻蒙系統(tǒng)初步了解

    服務和用戶服務資源都是在同一個空間內(nèi)實現(xiàn),運行效率比較高,不過一個服務資源的崩潰,會導致整個內(nèi)核的崩潰。鴻蒙內(nèi)核分為內(nèi)核子系統(tǒng),驅(qū)動子系統(tǒng),相互隔離和分開。
    發(fā)表于 01-04 17:25

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

    Ubuntu、配置共享目錄和在Win10上映射網(wǎng)絡驅(qū)動器,操作系統(tǒng)相關(guān)的配置...3. 用鴻蒙開發(fā)AI應用(三)軟件篇本篇介紹了DevEco Device Tool的配置、
    發(fā)表于 01-13 15:03

    鴻蒙應用開發(fā)基礎術(shù)語學習 輕應用

    。我們計劃后續(xù)深度開發(fā),作為鴻蒙操作系統(tǒng)上的獨特的開發(fā)學習平臺與方式。通過輕應用,帶點游戲娛樂性質(zhì)的方式,廣泛地傳播
    發(fā)表于 05-19 18:33

    鴻蒙驅(qū)動子系統(tǒng)資料匯總(一)

    1、輕量系統(tǒng)驅(qū)動開發(fā)查看 //drivers/adapter/khdf/,這個目錄下有一個 liteos_m 子目錄,進入子目錄查看 readme 文檔: 該倉主要存放 OpenHarmony
    發(fā)表于 03-29 14:53

    鴻蒙驅(qū)動子系統(tǒng)資料匯總(二)

    3、驅(qū)動相關(guān)模塊的編譯打開并查看 //vendor/hisilicon/hispark_taurus/config.json, 這是小型系統(tǒng) Hi3516 開發(fā)板的產(chǎn)品配置表,仔細查看與驅(qū)動
    發(fā)表于 03-29 14:58

    鴻蒙驅(qū)動子系統(tǒng)-1-輕量系統(tǒng)驅(qū)動開發(fā)

    注:本系列文章基于LTS分支代碼(本地代碼根目錄B_LTS/),對鴻蒙系統(tǒng)的設備驅(qū)動開發(fā)進行學習、分析和總結(jié)。查看 //drivers/ad
    發(fā)表于 12-22 15:40

    要成為鴻蒙開發(fā)者,應該學習哪些編程語言

    據(jù)了解,鴻蒙系統(tǒng)是基于Linux開發(fā)的,源碼是C語言。那么,作為一名開發(fā)者,如何幫助鴻蒙系統(tǒng)構(gòu)建
    的頭像 發(fā)表于 09-24 12:06 ?1.3w次閱讀

    鴻蒙系統(tǒng)是基于什么開發(fā)

    爭議,那么鴻蒙系統(tǒng)到底是基于什么開發(fā)的呢?下面小編就為大家?guī)?b class='flag-5'>鴻蒙系統(tǒng)是基于什么開發(fā)的答案。
    的頭像 發(fā)表于 07-05 17:12 ?1.2w次閱讀

    迅為RK3568開發(fā)驅(qū)動開發(fā)指南-輸入子系統(tǒng)

    迅為RK3568開發(fā)驅(qū)動開發(fā)指南-輸入子系統(tǒng)
    的頭像 發(fā)表于 02-23 15:11 ?862次閱讀
    迅為RK3568<b class='flag-5'>開發(fā)</b>板<b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>指南-輸入<b class='flag-5'>子系統(tǒng)</b>
    RM新时代网站-首页