首页 > 其他分享 >OpenHarmony 3.2 Release新特性解读之驱动HCS

OpenHarmony 3.2 Release新特性解读之驱动HCS

时间:2023-05-31 11:04:14浏览次数:41  
标签:OpenHarmony HCS 代码 配置 HDF 3.2 驱动 模板

 

OpenAtom OpenHarmony(以下简称“OpenHarmony”)开源社区,在今年4月正式发布了OpenHarmony 3.2 Release版本,标准系统能力进一步完善,提升了系统的整体性能、稳定性和安全性。此次版本对于驱动也提供了一些新的特性,极大的方便了驱动开发工作。其中针对HCS文件开发提供新的开发思路,本文就简单介绍一下相关内容。

1 、HCS宏式解析

1.1 HCS概述

HCS(HDF Configuration Source)是HDF驱动框架的配置描述源码,内容以Key-Value为主要形式。它实现了配置代码与驱动代码解耦,便于开发者进行配置管理。

HC-GEN(HDF Configuration Generator)是HCS配置转换工具,可以将HDF配置文件转换为软件可读取的文件格式:

● 在弱性能环境中,转换为配置树源码或配置树宏定义,驱动可直接调用C代码或宏式APIs获取配置。

● 在高性能环境中,转换为HCB(HDF Configuration Binary)二进制文件,驱动可使用HDF框架提供的配置解析接口获取配置。

 图1 配置使用流程图

HCS经过HC-GEN编译生成HCB文件,HDF驱动框架中的HCS Parser模块会从HCB文件中重建配置树,HDF驱动模块使用HCS Parser提供的配置读取接口获取配置内容。

1.2 HCS宏式解析特性

HCS宏式解析主要是为了支持Mini类系统设备,是一种为Mini系统提供极小资源占用的HCS配置管理方案。之前的方案HCS文件完成编译之后会生成独立的二进制文件。在宏式解析之后生成一个代码文件,可以和驱动代码一起编译,这样就节省ROM空间,增加参数调用效率。

极致性能:

● 资源占用相比二进制解析降低50%

● 解析在编译阶段完成,运行效率提升70%

开发友好:

● 提供了适用于小型设备驱动软硬件解耦方案

● 功能完备,支持节点和属性的查询、遍历、判断等操作

HCS宏式解析功能的应用,极大的方便了开发者对于不同设备,相同驱动的移植适配工作,使得多场景、多功能Mini类系统设备的应用成为现实。

2 、HCS可视化编辑器

VScode提供hcsView扩展工具,支持HCS文件的导入、编译、导出功能。编译器工具的推广,很好的方便了HCS文件的适配工作。

 图2 HCS配置可视化编辑

 

● GUI界面可视化编辑,显示直观,操作友好

● 错误实时提示,降低HCS配置方法学习成本

● 完成语法检查,HCS文件0错误

3 、HDF设备驱动开发模板代码生成

驱动模板智能化生成,主要应用于内核态驱动开发场景。内核态驱动代码对于不同的设备类型,但是都具有相似的驱动架构框架。对于这部分相同的重复代码,可以通过智能化自动化生成,方便开发者的调试工作,减少不必要的重复工作。创建模块名称,通过IDE提供的工具直接生成一个模板。主要包括以下方面:

 图3 HDF驱动模板自动生成

 

驱动模板:开发具体驱动代码;

配置模板:hcs模板基本字段生成完成;

编译模板:gn文件自动化生成。

整体的驱动框架代码自动生成,减少重复劳动。

4 、总结

OpenHarmony 3.2 Release版本驱动框架在原来的HDF架构基础上进行了细化,新增HCS宏式解析,使得系统ROM空间得到进一步的节省,增加参数调用效率;新增HCS可视化编辑器,提供hcsView扩展工具,极大的提高了HCS编译效率,降低了门槛,减少了错误率;新增HDF驱动代码模板自动化生成,增加内核驱动代码的开发效率,减少重复劳动。

 

标签:OpenHarmony,HCS,代码,配置,HDF,3.2,驱动,模板
From: https://www.cnblogs.com/openharmony/p/17445423.html

相关文章

  • 3.2. 数学类(Math、BigInteger、BigDecimal)
    1.Math类Math类提供了一些基本的数学函数,如求平方根、绝对值、三角函数等。它是一个final类,并且所有的方法都是static的,因此无需创建对象,直接使用类名调用方法即可。以下是Math类的一些常用方法:abs(doublea):返回参数的绝对值。ceil(doublea):返回大于或等于参数的最小整数值......
  • 操作系统(3.2)--作业和作业调度
    批处理系统中的作业1.作业和作业步(1)作业(Job)。包含了通常的程序和数据,而且还应配有一份作业说明书。在批处理系统中,是以作业为基本单位从外存调入内存的。(2)作业步(JobStep)。每个作业都必须经过若千个相对独立,又相互关联的顺序加工步骤才能得到结果。我们把其中的每一个加工......
  • MAC系统13.2,安装最新版logi options+,打开一直转圈
    我联系官网客服,按照他给的步骤成功的安装了options+,你试试请抽出时间按照下面列出的故障排除步骤尝试解决问题。卸载我们所有的软件删除剩余文件步骤1:打开Finder,在菜单栏中选择“前往>前往文件夹”。步骤2:在“转到文件夹”框中输入/Library,然后敲回车键将其打开。......
  • 2023.21 linux下的文件打包tar
    “tar”是“tapearchive”的缩写,最初是为了在磁带上创建档案而设计的,Linux下常使用tar命令将多个文件或目录打包成一个文件,这样可以方便地将多个文件或目录打包成一个文件,以便于备份或传输。刚从Windows使用Linux的很多可能都没意识到打包和压缩两个不同的概念,打包就是将多......
  • 服务器和电脑主机的区别 103.219.38.x
       我们都知道服务器和台式主机有着不同之处,但具体说出个一二三来很多人还是一头雾水,也就是知其然不知其所以然,都是CPU主板 内存 硬盘 电源,撑死就差一个显卡不同,但其实服务器和我们正常使用的台式主机差距很大,即使是内存都有着许多不同,因为用处不一样所以设计也不一样,下面......
  • 3.2 逻辑设计和硬件控制语言HCL
    在硬件设计中,用电子电路来计算对位进行运算的函数,以及在各种存储器单元中存储位。大多数现代电路技术都是用信号线上的高电压或低电压来表示不同的位值。在当前的技术中,逻辑1是用1.0伏特左右的高电压表示的,而逻辑0是用0.0伏特左右的低电压表示的。要实现一个数字系统需要三个主要......
  • 交叉编译内存分析工具 valgrind3.21.0 (aarch64-linux-gnu-gcc)
    交叉编译工具编译机器:ubuntuServer22LTS编译目标:ARM64开发板https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/注:如果使用7.5以上的GCC,请到ARM官网下载:https://developer.arm.com/downloads/-/gnu-agcc版本(7.5)需对应板子......
  • 3.2 线性回归从零开始实现
    %matplotlibinlineimportrandomimporttorchfromd2limporttorchasd2l3.2.1生成数据集为了简单起见,使用易于可视化的低维数据。使用线性模型\(\boldsymbol{y}=\boldsymbol{Xw}+b+\epsilon\)生成数据集及其标签,其中合成的数据集是一个矩阵\(\boldsymbol{X}\in\R^{1......
  • BGP线路有什么优势?43.248.187.x
       1、消除南北访问障碍由于BGP可以将联通、电信、移动等运营商的线路“合并”,使得中国南北无障碍通讯成为可能,对接入层来说,可使“联通、电信”这类区别消失,更能使一个网站资源无限制的在全国范围内无障碍访问,而不需要在异地部署VPN或者异地加速站来实现异地无障碍访问2、高......
  • Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎
    CiscoIdentityServicesEngine(ISE)3.2Patch2发布-思科身份服务引擎请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org工作场所零信任安全的核心所在任何零信任策略的一个关键组成部分是确保所有人和所有设......