欢迎来到开云·体育(中国)官方网站【官方网站】
开云体育网站平台多少
开云体育网站平台多少
电话:0851-85824918
传真:0851-85824918转8018
E-mail: gyjlykj888@163.com
地址:贵阳市花果园中央商务区2号楼1单元44层
  您当前位置:首页 > 新闻中心
开云体育网站平台多少:【OpenHarmony技能峰会】生态与互联分论坛 梁开祝:OpenHarmony驱动开发实践

作者:开云体育app官网 出处:开云体育电脑版    发布时间:2023-05-13 20:06:36

  上,润和软件旗下子公司江苏润开鸿数字科技有限公司(简称:润开鸿)资深软件开发梁开祝宣布了题为《OpenHarmony的驱动结构原理和实践》的主题讲演,从实践视点关键讲解了OpenHarmony驱动结构的详细完结细节和“一次开发,多体系布置”的驱动开发实践,协助OpenHarmony设备驱动

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

  作为一个全新的操作体系,OpenHarmony必需求开发一套更优异的驱动开发结构,协助开发者、企业更快捷地开发和办理硬件设备的驱动程序,助力打造自己的硬件生态。OpenHarmony的驱动结构,选用C言语面向对象编程模型构建,经过渠道解耦、内核解耦,来到达兼容不同内核,一致渠道底座的意图,然后协助开发者完结驱动一次开发,多体系布置的效果。

  OpenHarmony的内核子体系(多内核)与驱动子体系(一致的驱动结构)是松耦合的联系,仅经过一个OSAL(Operating System Abstraction Layer,操作体系笼统层)进行交互。OSAL只为驱动结构供给内核部分要害才能的笼统接口,而躲藏了接口在不同内核中的完结细节。驱动结构经过OSAL来适配不同的内核,而详细的设备则彻底依据驱动结构供给的才能来完结驱动程序并经过HDI(Hardware Driver Interface,硬件驱动接口)对上层供给驱动服务,设备驱动彻底不需求知道(也不会知道)自己运转在什么样的内核之上。

  图为OpenHarmony的驱动结构以及与驱动开发相关代码布置。驱动结构首要在//drivers/hdf_core/目录下完结。

  lframework/目录是C言语完结的驱动结构中心源代码(包含驱动结构、装备办理、装备解析、驱动通用模型、硬件通用渠道才能接口等),

  留意点:这儿的部分代码是内核态驱动结构与用户态驱动结构共用的,需求我们在阅览代码时区分清楚;

  ladapter/目录下是驱动结构适配不同内核的适配代码和编译脚本,也包含用户态驱动结构适配不同体系类型(轻量体系和规范体系)的适配代码和编译脚本。

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

  l //drivers/interface/目录下是用于办理各驱动模块的HDI接口界说,这些接口界说运用IDL言语描绘并以.idl文件方法保存。

  l 其他与驱动开发相关的代码目录还包含//device/目录和//vendor/目录下的相关部分目录,它们是详细的芯片计划、产品计划、产品界说、产品装备等相关信息和适配代码的汇总,为设备驱动的完结供给必定的支撑。

  驱动结构适配不同内核的编译装备,在代码结构的//drivers/hdf_core/adapter/目录下,首要仍是经过对应的BUILD.gn和Makefile文件将相关的源代码进行串联和依靠,以完结驱动结构全体的编译与链接。

  关于不同的内核,则在对应内核的编译脚本中参加编译驱动结构的进口和链接描绘。

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

  图中代码示例是在Linux内核的编译脚本中,将驱动结构的要害代码以patch的方法打入Linux源代码中(实践仍是代码目录的软链接方法参加Linux内核中),一起也在链接脚本vmlinux.lds.S中参加一个hdf.driver的只读数据段,用以描绘驱动结构专用的数据结构。

  当编译到OpenHarmony内核时,编译东西链经过上述脚本的描绘一并将驱动结构编译成中心文件,然后链接和打包到内核镜像中运用。

  如图所示,布置在内核态的驱动结构作为一个相对独立的部分,要么由于内核(LiteOS_A内核)的其他模块的直接调用而发动,要么作为内核(Linux内核)的一个模块(module)而主动加载和发动。在进入驱动结构的发动进口之后,驱动结构就会进入一个与内核无关的作业流程中(与内核相关部分会经过OSAL接口对接到内核供给的功用)。

  如图所示,布置在用户态的驱动结构则分为若干个独立的服务进程,在体系发动到用户态阶段时,由Init进程依据发动装备文件的描绘逐个拉起,各进程之间经过IPC进行交互并逐渐建立起各自的数据结构联系。

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

  内核态的驱动结构与用户态的驱动结构是各自独立的两部分,内核态驱动结构直接办理详细硬件设备的驱动,并以服务的方法向用户态供给服务接口,而用户态驱动结构则经过HDI接口运用内核态驱动结构供给的驱动服务。

  HDI接口运用IO Service和IO Dispatcher机制为驱动结构供给进行一致的交互接口,其完结首要有两种方法:

  l 当驱动以内核态组件方法布置时,客户端程序需求经过体系调用(system call)方法拜访驱动程序。驱动接口经过IO Service恳求将音讯经过体系调用堕入内核,并将音讯分发到IO Dispatcher进行处理。

  l 当驱动以用户态服务方法布置时,客户端进程需求经过IPC方法拜访驱动服务进程,IO Service完结IPC通讯的客户端音讯恳求封装,IO Dispatcher完结驱动服务端音讯恳求封装,客户端音讯经过IPC送达服务端再分发给IO Dispatcher处理。

  留意点:该交互进程触及比较杂乱的数据处理流程,需求结合代码进行深化了解。

  以一个通用的驱动示例程序来简略验证依据OpenHarmony驱动结构的设备驱动开发根本关键。

  本驱动示例程序,包含了驱动结构的一些根本要素,如上层的使用程序、内核的驱动程序、硬件的驱动装备信息、适配不同内核和不同类型体系的编译脚本等。小伙伴们能够跟着里边的README文档的操作阐明,从简略到杂乱一步步去验证前文说到的驱动结构常识关键,也能够十分方便地将这个示例程序移植到不同的开发板上进行验证,以此体会OpenHarmony驱动结构“一次开发,多体系布置”的优点。

  “以技能赋能开源共建,继续发挥生态引领效果”。润和软件将深化遵循“2+N”职业战略(深耕金融、动力“2”大职业,广泛赋能才智城市、医疗、教育、工业等“N”个职业),环绕职业场景落地不断夯实软硬件底座,推进使用立异,助力体会提高;招引更多企业及个人开发者融入生态、参加共建,继续为OpenHarmony昌盛开展贡献力量。

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

上一篇:下一代软件开发:数据智能驱动研发智能
下一篇:企业网站建造计划怎么做 包括哪些内容
网站首页
关于我们
新闻中心
公司新闻
产品中心
软件产品
联系我们
解决方案
网站域名

微信二维码扫描
联系电话:0851-85824918  手机:0851-85824918转8018  邮箱:gyjlykj888@163.com
Copyright 2020   开云·体育(中国)官方网站  版权所有.  地址:贵阳市花果园中央商务区2号楼1单元44层   
免责声明:本网站部分资料来自互联网,如果涉及到版权问题,请及时通知本站,我们尽快删除或更改。