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

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

3天内不再提示

鸿蒙开发学习:【驱动子系统】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-17 22:05 次阅读

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

    文章

    2706

    浏览量

    47701
  • 鸿蒙
    +关注

    关注

    55

    文章

    1639

    浏览量

    42123
  • OpenHarmony
    +关注

    关注

    23

    文章

    3313

    浏览量

    15161
收藏 人收藏

    评论

    相关推荐

    免费学习鸿蒙(HarmonyOS)开发,一些地址分享

    国内一流高校。通过鸿蒙班的设立,高校可以为学生提供专业的鸿蒙OS学习环境和丰富的实践机会,培养出更多的鸿蒙开发人才,为
    发表于 01-12 20:48

    盘点那些硬件+项目学习套件:Hi3861鸿蒙开发板及入门常见问题解答

    、源码、视频课程,可以进行单片机入门、电机控制基础、总线通讯-协议学习。Hi3861鸿蒙+STM32单片机的协作开发:Hi3861鸿蒙开发
    发表于 02-01 16:55

    学习鸿蒙背后的价值?星河版开放如何学习

    真正的操作系统鸿蒙爆火的背后是举国支持,鸿蒙具有无与伦比的机遇和潜力,预计到今年年底,将会有5,000款的应用,完成原生鸿蒙开发,未来将
    发表于 02-22 20:55

    【连载】信盈达实力大佬讲师带你学习鸿蒙系统移植和驱动开发

    第一个应用程序和第一个驱动程序的实现。【信盈达】鸿蒙操作系统移植--1、开发板介绍【信盈达】鸿蒙操作系统
    发表于 09-11 10:25

    鸿蒙OS驱动开发

    这篇文章主要带领大家学习鸿蒙系统驱动开发,本文包含以下知识点:1、开发Hi3516第一个
    发表于 09-11 14:42

    首批HarmonyOS系统课程开发者为您详解鸿蒙系统开发与应用

    信盈达实力大佬讲师带你学习鸿蒙系统移植和驱动开发!讲师介绍:胡智元,男、江西理工大学硕士,资深嵌入式ARM、Linux研发工程师。具有多年嵌
    发表于 09-14 14:26

    【课程连载】高级硬件工程师张飞带你学习鸿蒙驱动开发系统烧录

    ,去测试鸿蒙操作系统的wifi驱动是否安装成功。实现手机能够连上开发板网卡生成的热点,及开发板连上指定的热点。5、从串口、网口、USB的方式
    发表于 09-17 09:36

    HarmonyOS学习之二:鸿蒙HarmonyOS系统架构

    鸿蒙HarmonyOS整体遵从分层的层次化设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能
    发表于 11-25 14:46

    HarmonyOS学习之二:鸿蒙HarmonyOS系统架构

    驱动开发、管理框架。二、系统服务层:系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:系统
    发表于 11-25 22:20

    【HarmonyOS IPC 试用连载 】鸿蒙系统初步了解

    服务和用户服务资源都是在同一个空间内实现,运行效率比较高,不过一个服务资源的崩溃,会导致整个内核的崩溃。鸿蒙内核分为内核子系统驱动子系统,相互隔离和分开。
    发表于 01-04 17:25

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

    Ubuntu、配置共享目录和在Win10上映射网络驱动器,操作系统相关的配置...3. 用鸿蒙开发AI应用(三)软件篇本篇介绍了DevEco Device Tool的配置、
    发表于 01-13 15:03

    鸿蒙应用开发基础术语学习 轻应用

    。我们计划后续深度开发,作为鸿蒙操作系统上的独特的开发学习平台与方式。通过轻应用,带点游戏娱乐性质的方式,广泛地传播
    发表于 05-19 18:33

    鸿蒙驱动子系统资料汇总(一)

    1、轻量系统驱动开发查看 //drivers/adapter/khdf/,这个目录下有一个 liteos_m 子目录,进入子目录查看 readme 文档: 该仓主要存放 OpenHarmony
    发表于 03-29 14:53

    鸿蒙驱动子系统资料汇总(二)

    3、驱动相关模块的编译打开并查看 //vendor/hisilicon/hispark_taurus/config.json, 这是小型系统 Hi3516 开发板的产品配置表,仔细查看与驱动
    发表于 03-29 14:58

    鸿蒙驱动子系统-1-轻量系统驱动开发

    注:本系列文章基于LTS分支代码(本地代码根目录B_LTS/),对鸿蒙系统的设备驱动开发进行学习、分析和总结。查看 //drivers/ad
    发表于 12-22 15:40