【鸿蒙南向开发】OpenHarmony HDF 驱动框架介绍和驱动加载过程分析

前言

OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统 HDF 驱动框架采用 C 语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。

为了达成这个目标, OpenHarmony 系统 HDF 驱动框架提供了:

  • 操作系统适配层(OSAL,operatingsystem abstraction layer):对内核操作相关接口进行统一封装,屏蔽不同系统操作接口。

  • 平台驱动接口:提供 Board 部分驱动(例如,I2C/SPI/UART 总线等平台资源)支持,同时对 Board 硬件操作进行统一的适配接口抽象,方便开发者只需开发新硬件抽象接口,即可获得新增 Board 部分驱动支持。

  • 驱动模型:面向器件驱动,提供常见的驱动抽象模型,主要达成两个目的。

    1)提供标准化的器件驱动模型,开发者无需独立开发,通过配置即可完成驱动部署。

    2)提供驱动模型抽象,屏蔽驱动与不同系统组件间的交互,使得驱动更具备通用型。

为了进一步简化 OpenHarmony 系统驱动开发,OpenHarmony 系统 HDF 驱动框架支持多种驱动加载方式:

  • 支持驱动动态加载和静态加载,解除驱动代码和框架间的直接代码依赖,使得驱动程序可以独立编译和部署;

  • 支持按需动态加载方式,避免设备驱动全量加载,可有效降低系统资源的占用。

本文主要分析 OpenHarmony 系统驱动加载过程,在正式介绍之前,首先了解 OpenHarmony 系统驱动架构的组成、工作原理和机制,从而了解驱动加载的细节。

OpenHarmony系统

HDF驱动框架介绍

OpenHarmony 系统 HDF 驱动框架组成

image.png

OpenHarmony 系统 HDF 驱动框架主要由驱动基础框架、驱动程序、驱动配置文件和驱动接口这四个部分组成。

1)** HDF 驱动基础框架**提供统一的硬件资源管理,驱动加载管理以及设备节点管理等功能。驱动框架采用的是主从模式设计,由 Device Manager 和 Device Host 组成。

Device Manager 提供了统一的驱动管理,Device Manager 启动时根据 Device Information 提供驱动设备信息加载相应的驱动 Device Host,并控制 Host 完成驱动的加载。

Device Host 提供驱动运行的环境,同时预置 Host Framework 与 Device Manager 进行协同,完成驱动加载和调用。根据业务的需求 Device Host 可以有多个实例。

说明

Device Host 顾名思义就是驱动宿主,提供驱动运行的环境。

当驱动部署在用户态时,Device Host 可以由独立的进程进行承载,

当驱动在部署在内核态时,Device Host 仅表示逻辑隔离。

Device Host 的划分原则:

Device Host 属于一类设备聚合,如 Camera,Audio,Display 等。

驱动程序是部署在一个 Device Host 还是部署在不同的 Device Host,主要考虑驱动程序之间是否存的业务耦合性,如果两个驱动程序之间存在依赖,可以考虑将这部分驱动程序部署在统一 Host。

  1. 驱动程序实现驱动具体的功能,每个驱动由一个或者多个驱动程序组成,每个驱动程序都对应着一个 Driver Entry。Driver Entry 主要完成驱动的初始化和驱动接口绑定功能。

  2. **驱动配置文件.hcs **主要由设备信息(Device Information)和设备资源(Device Resource)组成。Device Information 完成设备信息的配置。如配置接口发布策略,驱动加载的方式等。Device Resource 完成设备资源的配置。如 GPIO 管

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值