OpenHarmony驅動子系統采用C面向對象編程模型構建,通過平臺解耦、內核解耦,兼容不同內核,提供了歸一化的驅動平臺底座,旨在為開發者提供更精準、更高效的開發環境,力求做到一次開發,多系統部署。
為了縮減驅動開發者的驅動開發周期,降低三方設備驅動集成難度,OpenHarmony驅動子系統支持以下關鍵特性和能力。
- 彈性化的框架能力:
在傳統的驅動框架能力的基礎上,OpenHarmony驅動子系統通過構建彈性化的框架能力,可支持在百K級別到百兆級容量的終端產品形態部署。 - 規范化的驅動接口:
定義了常見驅動接口,為驅動開發者和使用者提供豐富、穩定接口,并和未來開放的面向手機、平板、智慧屏等設備驅動接口保持API兼容性。 - 組件化的驅動模型:
支持組件化的驅動模型,為開發者提供更精細化的驅動管理,開發者可以對驅動進行組件化拆分,使得驅動開發者可以更多關注驅動與硬件交互部分。
同時系統也預置了部分模板化的驅動模型組件,如網絡設備模型等。 - 歸一化的配置界面:
提供統一的配置界面,構建跨平臺的配置轉換和生成工具,實現跨平臺的無縫切換
為了方便驅動開發者更易于開發OpenHarmony驅動程序,OpenHarmony驅動子系統在DevEco集成了驅動開發套件工具,支持驅動工程管理,驅動模板生成、配置管理等界面化的操作。
架構
OpenHarmony驅動框架采用主從架構設計模式,圍繞著框架、模型、能力庫和工具四個維度能力展開構建。
圖 1 驅動架構圖
- 驅動框架 -位于framework/core目錄
- 提供驅動框架能力,主要完成驅動加載和啟動功能。
- 通過對象管理器方式可實現驅動框架的彈性化部署和擴展。
- 驅動模型 - 位于framework/model目錄
- 提供了模型化驅動能力,如網絡設備模型。
- 驅動能力庫 - 位于framework/ability目錄
- 提供基礎驅動能力模型,如IO通信能力模型。
- 驅動工具 - 位于framework/tools目錄
- 提供HDI接口轉換、驅動配置編譯等工具。
- 驅動接口 - 位于lite/hdi目錄
- 提供規范化的驅動接口。
- Support - 位于framework/support目錄
- 提供規范化的平臺驅動接口和系統接口抽象能力。
使用
圖 2 驅動框架交互流程
驅動框架完成大部分驅動加載的動作,用戶只需注冊自己所需的接口和配置,然后驅動框架就會解析配置的內容,完成驅動加載和初始化動作。
開發者基于HDF驅動框架開發的驅動主要包含三大部分:
1、驅動程序部分 - 完成驅動的功能邏輯。
2、驅動配置信息 - 指示驅動的加載信息內容。
3、驅動資源配置 - 配置驅動的硬件配置信息。
驅動程序主要是完成驅動功能的開發部分:
對于開發者首先看到的是驅動入口部分,驅動入口部分通過DriverEntry對其進行描述。
其中主要包含bind, init 和release三個接口。
struct HdfDriverEntry g_deviceSample = {
.moduleVersion = 1,
.moduleName = "sample_driver",
.Bind = SampleDriverBind,
.Init = SampleDriverInit,
.Release = SampleDriverRelease,
};
Bind接口描述:該接口的作用主要是完成驅動設備和設備服務接口的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接口描述:當框架完成設備綁定動作后,就開始調用驅動初始化接口,當初始化成功后,驅動框架根據配置文件決定是否對外創建設備服務接口,還是只是對當前服務接口可見。如果Init初始化失敗的話,驅動框架就會主動釋放創建的設備接口等信息。
int32_t SampleDriverInit(struct HdfDeviceObject *deviceObject)
{
// TODO: Init hardware or other resources here.
return HDF_SUCCESS;
}
Release接口描述:當用戶需要卸載驅動時,驅動框架先通過該接口通知驅動程序釋放資源。然后在執行其他內部資源釋放。
void SampleDriverRelease(struct HdfDeviceObject *deviceObject)
{
// Release all resources.
return;
}
安裝
OpenHarmony驅動主要部署在內核態,當前主要采用靜態鏈接方式,隨內核子系統編譯和系統鏡像打包。
圖 3 驅動安裝部署圖
審核編輯 黃宇
-
模型
+關注
關注
1文章
3261瀏覽量
48914 -
鴻蒙
+關注
關注
57文章
2369瀏覽量
42900 -
OpenHarmony
+關注
關注
25文章
3728瀏覽量
16395
發布評論請先 登錄
相關推薦
評論