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

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

3天内不再提示

【OpenHarmony威廉希尔官方网站 峰会】生态与互联分论坛 | 梁开祝:OpenHarmony驱动开发实践

HiHope社区官方号 2023-03-28 16:54 次阅读

在2月25日刚刚圆满闭幕的首届开放原子开源基金会OpenHarmony威廉希尔官方网站 峰会(2023)生态与互联分论坛上,润和软件旗下子公司江苏润开鸿数字科技有限公司(简称:润开鸿)资深软件开发工程师梁开祝发表了题为《OpenHarmony的驱动框架原理和实践》的主题演讲,从实践角度重点讲解了OpenHarmony驱动框架的具体实现细节和“一次开发,多系统部署”的驱动开发实践,帮助OpenHarmony设备驱动开发者深入理解驱动框架工作流程和工作细节。

70e87e16-cd37-11ed-ad0d-dac502259ad0.jpg

威廉希尔官方网站 背景

OpenHarmony引入全新驱动开发理念和框架

7108c342-cd37-11ed-ad0d-dac502259ad0.png

OpenHarmony是一个面向万物互联/万物智联大场景的分布式操作系统,它面对的是硬件性能和功能需求千差万别的设备,比如智能手环与手机之间的硬件差异。为了统一适配能力差别巨大的设备,OpenHarmony设计了一个多内核的架构,能力弱的设备选用简单的内核(如LiteOS)、能力强的设备选用复杂的内核(如Linux),这意味着生态圈中的硬件产品在系统内核层面上就存在巨大的差异。然而这些产品很有可能会用到相近甚至相同的外围硬件,比如,家里的智能门禁系统、智能电视、平板电脑、手机上所使用的摄像头模组都可能是同一个型号或同系列的,而在设备端运行不同内核的操作系统,就需要为不同内核开发各自的驱动程序,这会造成驱动程序的复用性、可移植性、可维护性较差,不利于产品开发和维护,也不利于硬件生态圈的成长。

作为一个全新的操作系统,OpenHarmony必须要开发一套更优秀的驱动开发框架,帮助开发者、企业更便捷地开发和管理硬件设备的驱动程序,助力打造自己的硬件生态。OpenHarmony的驱动框架,采用C语言面向对象编程模型构建,通过平台解耦、内核解耦,来达到兼容不同内核,统一平台底座的目的,从而帮助开发者实现驱动一次开发,多系统部署的效果。

7124153e-cd37-11ed-ad0d-dac502259ad0.png

OpenHarmony的内核子系统(多内核)与驱动子系统(统一的驱动框架)是松耦合的关系,仅通过一个OSAL(Operating System Abstraction Layer,操作系统抽象层)进行交互。OSAL只为驱动框架提供内核部分关键能力的抽象接口,而隐藏了接口在不同内核中的实现细节。驱动框架通过OSAL来适配不同的内核,而具体的设备则完全基于驱动框架提供的能力来实现驱动程序并通过HDI(Hardware Driver Interface,硬件驱动接口)对上层提供驱动服务,设备驱动完全不需要知道(也不会知道)自己运行在什么样的内核之上。

威廉希尔官方网站 干货

OpenHarmony中的驱动框架实现详解

代码结构

712dfdb0-cd37-11ed-ad0d-dac502259ad0.png

图为OpenHarmony的驱动框架以及与驱动开发相关代码部署。驱动框架主要在//drivers/hdf_core/目录下实现。

lframework/目录是C语言实现的驱动框架核心源代码(包括驱动框架、配置管理、配置解析、驱动通用模型、硬件通用平台能力接口等),

注意点:这里的部分代码是内核态驱动框架与用户态驱动框架共用的,需要大家在阅读代码时区分清楚;

l adapter/目录下是驱动框架适配不同内核的适配代码和编译脚本,也包括用户态驱动框架适配不同系统类型(轻量系统和标准系统)的适配代码和编译脚本。

l //drivers/peripheral/目录下是部署在OpenHarmony用户空间的各种外围设备驱动相关的HDI、HAL、驱动模型及测试用例等的实现代码和编译配置。

l //drivers/interface/目录下是用于管理各驱动模块的HDI接口定义,这些接口定义使用IDL语言描述并以.idl文件形式保存。

l 其他与驱动开发相关的代码目录还包括//device/目录和//vendor/目录下的相关部分目录,它们是具体的芯片方案、产品方案、产品定义、产品配置等相关信息和适配代码的汇总,为设备驱动的实现提供一定的支持。

编译与链接

驱动框架适配不同内核的编译配置,在代码结构的//drivers/hdf_core/adapter/目录下,主要还是通过对应的BUILD.gn和Makefile文件将相关的源代码进行串联和依赖,以完成驱动框架整体的编译与链接。

对于不同的内核,则在对应内核的编译脚本中加入编译驱动框架的入口和链接描述。

715195a4-cd37-11ed-ad0d-dac502259ad0.png

图中代码示例是在LiteOS_A内核的编译脚本中include驱动框架的编译入口,同时也在链接脚本中加入一个hdf.driver的只读数据段,用以描述驱动框架专用的数据结构。

715f42f8-cd37-11ed-ad0d-dac502259ad0.png

图中代码示例是在Linux内核的编译脚本中,将驱动框架的关键代码以patch的形式打入Linux源代码中(实际仍是代码目录的软链接形式加入Linux内核中),同时也在链接脚本vmlinux.lds.S中加入一个hdf.driver的只读数据段,用以描述驱动框架专用的数据结构。

当编译到OpenHarmony内核时,编译工具链通过上述脚本的描述一并将驱动框架编译成中间文件,然后链接和打包到内核镜像中使用。

内核态驱动框架及用户态驱动框架启动流程

内核态驱动框架的启动流程

718e6bd2-cd37-11ed-ad0d-dac502259ad0.png

如图所示,部署在内核态的驱动框架作为一个相对独立的部分,要么因为内核(LiteOS_A内核)的其他模块的直接调用而启动,要么作为内核(Linux内核)的一个模块(module)而自动加载和启动。在进入驱动框架的启动入口之后,驱动框架就会进入一个与内核无关的工作流程中(与内核相关部分会通过OSAL接口对接到内核提供的功能)。

用户态驱动框架的启动流程

71a5eeb0-cd37-11ed-ad0d-dac502259ad0.png

如图所示,部署在用户态的驱动框架则分为若干个独立的服务进程,在系统启动到用户态阶段时,由Init进程根据启动配置文件的描述逐一拉起,各进程之间通过IPC进行交互并逐步建立起各自的数据结构关系。

以上两张示意图均为以功能模块划分的启动流程概略图,梁开祝老师在阅读理解OpenHarmony驱动框架的代码时,以API为粒度整理了一份详细的启动流程图,以及在驱动框架启动过程中一步步建立起来的数据结构关系图,感兴趣的读者可到资源仓库下载、阅读。

用户态与内核态的交互

71d16d42-cd37-11ed-ad0d-dac502259ad0.png

内核态的驱动框架与用户态的驱动框架是各自独立的两部分,内核态驱动框架直接管理具体硬件设备的驱动,并以服务的形式向用户态提供服务接口,而用户态驱动框架则通过HDI接口使用内核态驱动框架提供的驱动服务。

HDI接口使用IO Service和IO Dispatcher机制为驱动框架提供进行统一的交互接口,其实现主要有两种形式:

l 当驱动以内核态组件形式部署时,客户端程序需要通过系统调用(system call)方式访问驱动程序。驱动接口通过IO Service请求将消息通过系统调用陷入内核,并将消息分发到IO Dispatcher进行处理。

l 当驱动以用户态服务形式部署时,客户端进程需要通过IPC方式访问驱动服务进程,IO Service完成IPC 通信的客户端消息请求封装,IO Dispatcher完成驱动服务端消息请求封装,客户端消息通过IPC送达服务端再分发给IO Dispatcher处理。

注意点:该交互过程涉及比较复杂的数据处理流程,需要结合代码进行深入理解。

通用的驱动示例程序

以一个通用的驱动示例程序来简单验证基于OpenHarmony驱动框架的设备驱动开发基本要点。

71f71d30-cd37-11ed-ad0d-dac502259ad0.png

本驱动示例程序,包含了驱动框架的一些基本要素,如上层的应用程序、内核的驱动程序、硬件的驱动配置信息、适配不同内核和不同类型系统的编译脚本等。小伙伴们可以跟着里面的README文档的操作说明,从简单到复杂一步步去验证前文提到的驱动框架知识要点,也可以非常方便地将这个示例程序移植到不同的开发板上进行验证,以此体验OpenHarmony驱动框架“一次开发,多系统部署”的好处。

“以威廉希尔官方网站 赋能开源共建,持续发挥生态引领作用”。润和软件将深入贯彻“2+N”行业战略(深耕金融、能源“2”大行业,广泛赋能智慧城市、医疗、教育、工业等“N”个行业),围绕行业场景落地不断夯实软硬件底座,推动应用创新,助力体验提升;吸引更多企业及个人开发者融入生态、参与共建,持续为OpenHarmony繁荣发展贡献力量。

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

    关注

    12

    文章

    1839

    浏览量

    85278
  • OpenHarmony
    +关注

    关注

    25

    文章

    3718

    浏览量

    16296
收藏 人收藏

    评论

    相关推荐

    华秋电子 | 电子发烧友亮相OpenHarmony人才生态大会2024

    公开课直播,为开发者提供了丰富的威廉希尔官方网站 资源与学习机会。在谈到生态合作与市场推广时,刘勇表示,电子发烧友社区致力于为OpenHarmony生态
    发表于 12-02 09:45

    OpenHarmony人才生态大会南向生态社区发展论坛在武汉圆满举办

    11月27日,OpenHarmony人才生态大会2024在武汉隆重举行。当日下午的 OpenHarmony南向生态社区发展论坛(以下简称“
    的头像 发表于 11-29 10:06 172次阅读
    <b class='flag-5'>OpenHarmony</b>人才<b class='flag-5'>生态</b>大会南向<b class='flag-5'>生态</b>社区发展<b class='flag-5'>论坛</b>在武汉圆满举办

    OpenHarmony人才生态大会南向生态社区发展论坛在武汉圆满举办

    11月27日,OpenHarmony人才生态大会2024在武汉隆重举行。当日下午的 OpenHarmony南向生态社区发展论坛(以下简称“
    发表于 11-29 09:54

    鸿亮相OpenHarmony人才生态大会,打造人才生态“强引擎”

    11月27日,OpenHarmony人才生态大会2024(以下简称“大会”)在武汉隆重举行。本次大会设立主题演讲及多场教育论坛、南向社区论坛、外设
    的头像 发表于 11-28 01:03 241次阅读
    深<b class='flag-5'>开</b>鸿亮相<b class='flag-5'>OpenHarmony</b>人才<b class='flag-5'>生态</b>大会,打造人才<b class='flag-5'>生态</b>“强引擎”

    第三届OpenHarmony威廉希尔官方网站 大会 “OpenHarmony开发者激励计划”授牌仪式圆满举行

    10月12日,以“威廉希尔官方网站 引领筑生态,万物智联创未来”为主题的第三届OpenHarmony威廉希尔官方网站 大会隆重举行,“OpenHarmony
    的头像 发表于 10-21 11:48 242次阅读
    第三届<b class='flag-5'>OpenHarmony</b><b class='flag-5'>威廉希尔官方网站
</b>大会 “<b class='flag-5'>OpenHarmony</b><b class='flag-5'>开发</b>者激励计划”授牌仪式圆满举行

    鸿亮相第三届OpenHarmony威廉希尔官方网站 大会,以威廉希尔官方网站 驱动OpenHarmony生态发展

    10月12-13日,第三届OpenHarmony威廉希尔官方网站 大会(以下简称“大会”)在上海顺利举行。本届大会以“威廉希尔官方网站 引领筑生态,万物智联创未来”为主题,设置1场主
    的头像 发表于 10-15 08:07 497次阅读
    深<b class='flag-5'>开</b>鸿亮相第三届<b class='flag-5'>OpenHarmony</b><b class='flag-5'>威廉希尔官方网站
</b>大会,以<b class='flag-5'>威廉希尔官方网站
</b><b class='flag-5'>驱动</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>生态</b>发展

    第三届OpenHarmony威廉希尔官方网站 大会在上海成功举办

    了来自全球的开源操作系统威廉希尔官方网站 精英、前沿实践专家、广大开发者以及学术界大咖,面向全球展示了OpenHarmony的最新威廉希尔官方网站
    发表于 10-13 11:14

    九联鸿闪耀HDC2024,展示OpenHarmony生态创新

    的最新进展以及OpenHarmony原生应用的开发实践。作为华为OpenHarmony使能伙伴以及开放原子开源基金会OpenHarmony
    的头像 发表于 06-24 10:15 1134次阅读

    鸿出席OpenHarmony开发者大会2024,共建威廉希尔官方网站 革新

    2024年5月25日,“OpenHarmony开发者大会2024”在深圳隆重召开。作为开放原子开源基金会黄金捐赠人,OpenHarmony项目群初始成员单位、A类捐赠人、核心共建单位,江苏润
    的头像 发表于 05-30 10:24 1227次阅读

    鸿智谷与OpenHarmony的创新对话

    OpenHarmony4.1Release版本根威廉希尔官方网站 特性解读为契机,聚集广大开发者、生态伙伴、行业领袖与百位威廉希尔官方网站 专家共同讨论
    的头像 发表于 05-29 08:30 484次阅读
    <b class='flag-5'>开</b>鸿智谷与<b class='flag-5'>OpenHarmony</b>的创新对话

    鸿智谷亮相OpenHarmony开发者大会,与生态共创开源新篇章!

    5月25日,以“鸿心聚力智引未来”为主题的OpenHarmony开发者大会2024(以下简称大会)在深圳成功举办。鸿智谷获得多项奖项及授牌,并全程参与6场
    的头像 发表于 05-26 08:30 743次阅读
    <b class='flag-5'>开</b>鸿智谷亮相<b class='flag-5'>OpenHarmony</b><b class='flag-5'>开发</b>者大会,与<b class='flag-5'>生态</b>共创开源新篇章!

    报名开启!第二届OpenHarmony开发者大会2024重磅来袭!

    OpenHarmony 开发者大会2024,为开发者、产业组织、生态伙伴和行业用户搭建一个交流、分享和学习的平台。大会以 OpenHarmony
    发表于 05-14 15:23

    鸿升为OpenHarmony项目群A类捐赠人,引领开源生态新篇章!

    近日,深鸿作为OpenHarmony核心共建单位、OpenHarmony生态委员会委员单位、OpenHarmony代码Top10贡献单位,
    的头像 发表于 04-18 08:33 812次阅读
    深<b class='flag-5'>开</b>鸿升为<b class='flag-5'>OpenHarmony</b>项目群A类捐赠人,引领开源<b class='flag-5'>生态</b>新篇章!

    您有一份OpenHarmony开发论坛2023年度总结,请查收~

    体验用户,并迅速在论坛开启了 OpenHarmony 威廉希尔官方网站 交流。 通过开发者们在论坛进行提问、答疑、分享
    发表于 01-26 17:27

    OpenHarmony社区运营报告(2023年12月)

    隆重举行。作为开放原子开发者大会最重要的威廉希尔官方网站 论坛之一,此次论坛不仅展示了 2023 年 OpenHar
    发表于 01-10 15:44