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

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

3天内不再提示

【OpenHarmony技术峰会】生态与互联分论坛 | 梁开祝:OpenHarmony驱动开发实践

D96C_HiHope 来源:未知 2023-03-27 22:50 次阅读

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

6a284ad2-ccad-11ed-bfe3-dac502259ad0.jpg

技术背景

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

6a4d46d4-ccad-11ed-bfe3-dac502259ad0.png

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

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

6a693c0e-ccad-11ed-bfe3-dac502259ad0.png

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

技术干货

OpenHarmony中的驱动框架实现详解

代码结构

6a8b1b8a-ccad-11ed-bfe3-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文件将相关的源代码进行串联和依赖,以完成驱动框架整体的编译与链接。

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

6aad77e8-ccad-11ed-bfe3-dac502259ad0.png

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

6aca884c-ccad-11ed-bfe3-dac502259ad0.png

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

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

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

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

6aecd69a-ccad-11ed-bfe3-dac502259ad0.png

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

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

6b0eb422-ccad-11ed-bfe3-dac502259ad0.png

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

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

仓库地址:

https://gitee.com/liangkzgitee/ohos_study_note

用户态与内核态的交互

6b39fc22-ccad-11ed-bfe3-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驱动框架的设备驱动开发基本要点。

6b5d564a-ccad-11ed-bfe3-dac502259ad0.png

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

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


原文标题:【OpenHarmony技术峰会】生态与互联分论坛 | 梁开祝:OpenHarmony驱动开发实践

文章出处:【微信公众号:HiHope社区】欢迎添加关注!文章转载请注明出处。


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

    关注

    55

    文章

    1641

    浏览量

    42123
  • HiHope
    +关注

    关注

    0

    文章

    63

    浏览量

    3476

原文标题:【OpenHarmony技术峰会】生态与互联分论坛 | 梁开祝:OpenHarmony驱动开发实践

文章出处:【微信号:HiHope,微信公众号:HiHope社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenHarmony Meetup 2023北京站圆满举办

    图形架构、基于 RISC-V 架构的 OpenHarmony 应用实践、面向互联和智能的交互技术变迁、基于 OpenHarmony 的移动
    发表于 11-29 09:51

    OpenHarmony亮相MTSC 2023 | 质量&效率共进,赋能应用生态发展

    和平台。OpenAtom OpenHarmony(简称“OpenHarmony”)通过专场论坛议题分享和展区展品精彩展示,为与会者带来一场技术盛宴。
    发表于 11-28 15:41

    上海站报名启动! 2023年开源产业生态大会OpenHarmony生态论坛

    联合体共同指导,上海开源信息技术协会统筹主办。 届时,大会将携手OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群生态委员会举办
    发表于 11-24 14:55

    精彩预告 | OpenHarmony即将亮相MTSC 2023

    业的认可和大力支持。 大咖云集、精英齐聚,共享 OpenHarmony 最新生态进展 本次 OpenHarmony 专场论坛大咖云集、精英
    发表于 11-22 10:28

    OpenHarmony技术大会 | 应用(北向)生态论坛嘉宾金句

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony 原文标题:OpenHarmony技术大会 | 应用(北向)
    的头像 发表于 11-14 15:10 140次阅读

    陈海波:OpenHarmony技术领先,产学研深度协同,生态蓬勃发展

    技术项目。“根深叶茂,众行致远”,OpenHarmony已经与17家高校成立了“OpenHarmony技术俱乐部”,未来还将进一步迈向产学研共同体,通过产业与学术双轮
    发表于 11-06 14:35

    技术生态 智联赢未来,第二届OpenHarmony技术大会圆满举行

    行业权威大咖、技术专家及高校技术导师,与众多业界开发者齐聚一堂,通过1个主论坛、8个论坛、70
    发表于 11-04 14:59

    技术生态,智联赢未来 第二届OpenHarmony技术大会即将在京启幕

    开发框架论坛开发者工具论坛、应用(北向)生态
    发表于 10-31 11:27

    限量门票!第二届开放原子开源基金会OpenHarmony技术峰会报名开启~

    北京举办。峰会以“技术生态,智联赢未来”为主题,特邀全球开源操作系统技术领袖、前沿实践专家及高校技术
    发表于 10-20 14:18

    报名开启!第二届开放原子开源基金会OpenHarmony技术峰会来啦~

    展示OpenHarmony操作系统的技术革新和阶段性成果,分享当前开放生态布局进展,与参会者共同打造开源领域国际盛会! 峰会将开设主论坛、八
    发表于 10-20 12:06

    鸿智谷在鸿OS设备开发实验箱通过OpenHarmony兼容性测评

    ,实验箱还提供4个综合智能场景,高校老师在教学时可自由组合多个案例模块,开发更丰富、更有趣的互动场景。 鸿智谷依托OpenHarmony万物互联的特性,基于
    发表于 10-19 10:14

    鸿DAYU200及DAYU210联袂通过OpenHarmony 3.2 Release版本兼容性测评

    百业的生态使命。 在2023开放原子全球开源峰会OpenHarmony论坛OpenHarmony
    发表于 09-22 11:11

    开源图形驱动OpenHarmony上的使用和落地

    职务。 内容来源 第一届开放原子开源基金会OpenHarmony技术峰会——OS内核及视窗论坛 ​ 正 文 内 容 图形
    发表于 08-31 18:07

    开放原子开源基金会OpenHarmony开发者大会2023演讲资料汇总

    *附件:10-OpenHarmony系统开发常用权限问题分析及解决分享.pdf 商业生态论坛 *附件:01-在鸿学生终端:
    发表于 05-29 16:34

    峰会回顾第8期 | OpenHarmony 分布式硬件关键技术

    OpenHarmony分布式硬件架构设计以及华为多设备协同方向的研究。   内容来源 第一届开放原子开源基金会OpenHarmony技术峰会——生态
    的头像 发表于 05-05 15:46 744次阅读
    <b class='flag-5'>峰会</b>回顾第8期 | <b class='flag-5'>OpenHarmony</b> 分布式硬件关键<b class='flag-5'>技术</b>