0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发实战:【Hdf Framework】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-21 20:29 次阅读

简介

该仓主要存放OpenHarmony驱动子系统核心源码信息(包括驱动框架、配置管理、配置解析、驱动通用框架模型、硬件通用平台能力接口等),旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。

图 1 驱动框架架构图[]()

说明

驱动框架使用说明

基于HDF框架开发驱动,开发者只需注册所需接口和配置,驱动框架就会解析配置内容,完成驱动加载和初始化动作。

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)
{
    return HDF_SUCCESS;
}

Init接口描述:当框架完成设备绑定动作后,就开始调用驱动初始化接口,初始化成功后,驱动框架根据配置文件决定是对外创建设备服务接口,还是接口只对当前服务可见。如果Init初始化失败,驱动框架就会主动释放创建的设备接口等信息。

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

Release接口描述:当用户需要卸载驱动时,驱动框架先通过该接口通知驱动程序释放资源,然后再释放其他内部资源。

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

Sensor框架模型说明

基于HDF(Hardware Driver Foundation)驱动框架的Sensor驱动模型,可实现跨操作系统迁移、器件差异配置等功能。

Sensor驱动模型主要由以下两部分组成:

  • 基础能力部分:依赖HDF驱动框架实现Sensor器件驱动的注册、加载、去注册、器件探测等能力,提供同一类型Sensor器件的驱动归一接口、寄存器配置解析操作接口、总线访问抽象接口和平台抽象接口。
  • 开发者实现部分:依赖HDF驱动框架的HCS(HDF Configuration Source)配置管理,根据同类型Sensor差异化配置,实现Sensor器件参数序列化配置和器件部分操作接口。

Display框架模型说明

基于OpenHarmony驱动框架的Display驱动模型,对下屏蔽了芯片平台差异,方便操作系统跨平台迁移;向上抽象了外设驱动公共业务逻辑,通过配置或差异化适配接口,实现了一套驱动模型兼容不同的外设器件,使得三方厂商可以高效、便捷的切入鸿蒙驱动生态。

Display驱动模型主要由以下两部分组成:

  • 基础能力部分:包括HDI(Hardware Driver Interfaces)接口的定义及实现框架,以及芯片平台对HDI接口的适配实现;内核驱动部分抽象了Panel驱动的公共业务,提供了Panel初始化、器件配置信息获取、上下电、背光设置等公共流程。
  • 开发者实现部分:需要完成板级HCS配置及Panel私有数据配置,实现部分器件差异化接口。

Input框架模型说明

基于OpenHarmony驱动框架的Input驱动模型,不依赖于芯片平台,对上层输入服务提供统一的驱动接口;在具体的驱动模型实现中,针对不同类别的输入设备,抽象出几类公共的平台驱动,通过配置及差异化的适配接口,使得驱动模型可兼容不同的输入设备。借由此驱动模型,可大幅缩减Input设备驱动的开发周期。

Input驱动模型主要有以下两部分组成:

  • 基础能力部分:包括Input HDI层的接口定义及公共实现,对上层输入服务提供设备管理、业务控制、数据上报等驱动能力接口;而Input驱动模型提供不同类型Input设备的归一化驱动, 包括输入设备的注册和注销、event数据的上报通道、配置信息的解析、公共驱动的加载等能力。
  • 开发者实现部分:需根据驱动模型提供的平台驱动,完成设备描述配置及器件私有配置,实现预留的器件差异化接口。

QQ浏览器截图20240320162546.png

WLAN框架模型说明

基于OpenHarmony驱动框架的WLAN驱动模型,可实现跨操作系统迁移,自适应器件差异,模块化拼装编译等功能。各WLAN厂商驱动开发人员可根据WLAN模块提供的向下统一接口适配各自的驱动代码,HDI层开发人员可根据WLAN模块提供的向上统一接口获取如下能力:建立/关闭WLAN热点、扫描、关联WLAN热点等。

WLAN驱动模型主要有以下两部分组成:

  • 基础能力部分:包括WLAN HDI层的接口定义及公共实现,对上层输入服务提供如设置MAC地址,获取设备MAC地址,获取特性类型,设置发射功率等能力;对驱动开发者提供创建/释放WifiModule、关联/取消关联、申请/释放NetBuf等能力。
  • 开发者实现部分:需根据驱动模型提供的平台驱动,完成板级的HCS配置及WLAN芯片的私有配置,实现预留的初始化/注销网络设备、打开/关闭网络设备等相关接口。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WLAN
    +关注

    关注

    2

    文章

    652

    浏览量

    73007
  • Sensor
    +关注

    关注

    0

    文章

    134

    浏览量

    49547
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42731
  • OpenHarmony
    +关注

    关注

    25

    文章

    3658

    浏览量

    16129
收藏 人收藏

    评论

    相关推荐

    一文解析鸿蒙系统中的HDF架构

    1 铺垫一下 鸿蒙系统终于公开源代码了,正可谓“千呼万唤始出来”。笔者也手痒下载了一套代码,并研读了一二。这里就先编写一篇关于HDF的文档。 其实,不同读码人都会有各自读代码的习惯和切入点,我之所以
    的头像 发表于 03-25 16:06 6730次阅读
    一文解析<b class='flag-5'>鸿蒙</b>系统中的<b class='flag-5'>HDF</b>架构

    鸿蒙实战项目开发:【短信服务】

    、OpenHarmony 多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发鸿蒙项目实战等等)鸿蒙(Harmony NEXT) 技术知识点 如果你是一名An
    发表于 03-03 21:29

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

    鸿蒙Flutter实战:08-如何调试代码

    # 鸿蒙Flutter实战:如何调试代码 ## 1.环境搭建 参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://g
    发表于 10-23 16:29

    【信盈达】鸿蒙系统驱动程序--1、HDF开发指南

    1,HDF开发指南HDF(HarmonyOS Driver Foundation)鸿蒙驱动框架,提供驱动框架能力,包括驱动加载,驱动服务管理,驱动消息机制和驱动电源管理。基于
    发表于 09-14 10:20

    HarmonyOS HDF驱动框架---开发概述

    简介HDF(HarmonyOS Driver Foundation)驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理和驱动消息机制。旨在构建统一的驱动架构平台,为驱动开发者提供更精
    发表于 09-16 18:06

    【HarmonyOS】品读鸿蒙HDF架构(一)

    以这个PublishService()为切入点,开始研读代码,慢慢就涉及了HDF的更多知识,现在是时候整理出来了。所谓HDF,应该是Harmony Driver Fundation的缩写,说到底是鸿蒙形成
    发表于 10-14 12:19

    品读鸿蒙HDF架构(一)

    1.铺垫一下鸿蒙系统终于公开源代码了,正可谓“千呼万唤始出来”。笔者也手痒下载了一套代码,并研读了一二。这里就先编写一篇关于HDF的文档。其实,不同读码人都会有各自读代码的习惯和切入点,我之所以从
    发表于 12-16 11:29

    品读鸿蒙HDF架构(二)

    DevmgrServiceClntAttachDeviceHost()一步,该函数代码截选如下:【drivers/hdf/frameworks/core/host/src/Devmgr_service_clnt.c】int
    发表于 12-16 11:42

    品读鸿蒙HDF架构(三)

    现在我们继续研究鸿蒙HDF架构,上回书说到经由HdfDeviceAttach(),HdfDevice节点不但添加进了DevHostService的devices列表,而且还和一个
    发表于 12-16 14:03

    鸿蒙开发AI应用(五)HDF 驱动补光灯

    前言上一篇,我们在鸿蒙上运行了第一个程序,这一篇我们来编写一个驱动开启摄像头的红外补光灯,顺便熟悉一下鸿蒙上的 HDF 驱动开发。硬件准备先查一下原理图(具体可参考第一篇的硬件资料),
    发表于 12-27 07:00

    鸿蒙开发AI应用(汇总)连载中

    ...5. 用鸿蒙开发AI应用(五)HDF 驱动补光灯本篇介绍了鸿蒙上的 HDF 驱动开发,通过
    发表于 01-13 15:03

    树莓派4B运行鸿蒙系统增加HDF模块

    前言HDF驱动子系统是OpenHarmony重要的特色功能之一,其主要的功能是实现驱动程序在多内核多平台的物联网环境,实现一次驱动开发,多端部署。之前移植OHOS3.0使用了传统的linux驱动
    发表于 12-12 19:01

    华为开发者大会分论坛HarmonyOS测试技术与实战-鸿蒙智联认证生态设备测试挑战

    HDC 2021华为开发者大会分论坛HarmonyOS测试技术与实战-鸿蒙智联认证生态设备测试挑战
    的头像 发表于 10-23 16:40 1781次阅读
    华为<b class='flag-5'>开发</b>者大会分论坛HarmonyOS测试技术与<b class='flag-5'>实战</b>-<b class='flag-5'>鸿蒙</b>智联认证生态设备测试挑战

    HDF驱动框架中USB DDK的解析与开发指导

    HDF(Hardware Driver Foundation)驱动框架是HarmonyOS硬件生态开放的基础,为开发者提供了驱动加载、驱动服务管理和驱动消息机制等驱动能力,让开发者能精准且高效的
    的头像 发表于 03-30 10:16 2156次阅读