HarmonyOS工具链 HarmonyOS驱动加载过程分析

HDF(Hardware Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理和驱动消息机制 。旨在构建统一的驱动架构平台,为驱动开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署 。

HarmonyOS工具链 HarmonyOS驱动加载过程分析


一、HarmonyOS驱动概述
HarmonyOS驱动框架采用C语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动的“一次开发,多系统部署” 。
为了达成这个目标,HarmonyOS驱动框架提供了:
1、操作系统适配层(OSAL,operating system abstraction layer):提供内核操作相关接口进行统一封装,屏蔽不同系统操作接口 。
2、平台驱动接口:提供Board部分驱动(例如:I2C/SPI/UART总线等平台资源)支持,同时对Board硬件操作接口进行统一的适配抽象,开发者只需开发新硬件抽象接口,即可获得新增Board部分驱动支持 。
3、驱动模型:面向器件驱动,提供常见的驱动抽象模型,主要达成两个目的:
● 提供标准化的器件驱动,开发者无需独立开发,通过配置即可完成驱动的部署 。
● 提供驱动模型抽象,屏蔽驱动与不同系统组件间的交互,使得驱动更具备通用性 。
为了进一步简化HarmonyOS驱动开发,HarmonyOS驱动框架支持多种驱动加载方式:
● 支持驱动动态加载和静态加载,解除驱动代码和框架间的直接代码依赖,使得驱动程序可以独立编译和部署;
● 支持按需动态加载方式,避免设备驱动全量加载,可有效降低系统资源的占用 。
本文主要分析HarmonyOS驱动加载过程,在正式介绍之前,首先了解HarmonyOS驱动架构的组成、工作原理和机制,从而了解驱动加载的细节 。
官网相关介绍:https://device.harmonyos.com/cn/docs/develop/drive/oem_drive_hdfdev-0000001051715456
二、HarmonyOS驱动架构介绍
2.1 HarmonyOS驱动架构组成
HarmonyOS工具链 HarmonyOS驱动加载过程分析


图1 HarmonyOS驱动架构
HarmonyOS驱动架构主要由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 。
2)驱动程序实现驱动的具体功能,每个驱动由一个或者多个驱动程序组成,每个驱动程序都对应着一个Driver Entry 。Driver Entry主要完成驱动的初始化和驱动接口绑定功能 。
3)驱动配置文件.hcs主要由设备信息(Device Information)和设备资源(Device Resource)组成 。

推荐阅读