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

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

时间:2023-06-09 10:34:49浏览次数:56  
标签: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框架提供的配置解析接口获取配置。 7d0ad2948b86a34c9323aa7133792836.png ::: hljs-center

图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文件的适配工作。 e5afb5dacaff32d73de138b02429ce2f.png ::: hljs-center

图2 HCS配置可视化编辑

::: ● GUI界面可视化编辑,显示直观,操作友好 ● 错误实时提示,降低HCS配置方法学习成本 ● 完成语法检查,HCS文件0错误

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

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

图3 HDF驱动模板自动生成

::: 驱动模板:开发具体驱动代码; 配置模板:hcs模板基本字段生成完成; 编译模板:gn文件自动化生成。 整体的驱动框架代码自动生成,减少重复劳动。

4 、总结

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

本文作者:软通动力HOS

想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​

标签:OpenHarmony,HCS,代码,配置,HDF,3.2,驱动,模板
From: https://blog.51cto.com/harmonyos/6445718

相关文章

  • OpenHarmony 4.0 Beta1发布,邀您体验
     初夏之际,OpenAtom OpenHarmony(简称“OpenHarmony”) 4.0 Beta1版本如期而至。4.0 Beta1版本在3.2 Release版本基础上,继续提升标准系统的ArkUI、应用框架、图形媒体等子系统能力,并提供首批API Level 10接口。作为OpenHarmony 4.0的首个Beta版本,推出了系列新特性。......
  • OpenHarmony系统之Service代码一键生成工具介绍
    作者:苟晶晶前言当开发者为OpenHarmony系统框架开发某些功能时,有时需要将这个功能包装成一个独立的服务进程运行在系统中,为了其它应用进程能够调用此服务,开发人员需要基于系统IPC通信框架编写一套远程接口调用实现。实现Service远程调用接口需要开发人员熟悉IPC通信框架,了解proxy/......
  • 快速掌握OpenHarmony社区贡献新流程
    10分钟快速掌握OpenHarmony社区贡献新流程为提升Issue和PR(PullRequest)的处理效率,OpenHarmony社区优化了Issue和PR处理流程,新支持了一系列交互命令和状态标签,用于明确处理阶段和当前处理责任人。社区CIBot工具还提供了待办事项提醒能力,并能自动处理超期无效Issue和PR。流程交互......
  • 完成第一个 Vue3.2 项目后,使用体会
    第一次CompositionAPI在vue3.2中,正式支持了scriptsetup的写法,这样可以大大简化组件的代码量,减少一些重复操作,我认为当你写vue3时,应该把这当作默认写法。在vue3.2之前,一般会这样写。<script>exportdefault{setup(props,ctx){consta=ref(0)//必须......
  • 完成第一个 Vue3.2 项目后,使用体会
    第一次CompositionAPI在vue3.2中,正式支持了scriptsetup的写法,这样可以大大简化组件的代码量,减少一些重复操作,我认为当你写vue3时,应该把这当作默认写法。在vue3.2之前,一般会这样写。<script>exportdefault{setup(props,ctx){consta=ref(0)//必须......
  • Spring3.2 + cxf1.7.3整合
    参考:[url]http://tsinglongwu.iteye.com/blog/832704[/url][color=red][b]测试调试工具介绍[/b][/color][b]1.SoapUI1.6[/b][url]http://webservices.ctocio.com.cn/tips/263/7817763.shtml[/url][b]2.TestMaker[/b][url]http://webservices.ctocio.com......
  • SpringMVC3.2.x + Hibernate4.2.x + ecache + Spring Security 3.0.5
    这只是部分代码,一些代码可以参考:[url]http://panyongzheng.iteye.com/blog/1871418[/url]SpringSecurity3.1最新配置实例[url它自带的附件也上传。SpringSecurity3十五日研究[url]http://www.blogjava.net/SpartaYew/archive/2013/09/23/350630.html[/......
  • 2023.22 黄仁勋台大毕典演说
    台湾大学5月27日举行毕业典礼,并邀请英伟达(Nvidia)创办人黄仁勋担任致词嘉宾。黄仁勋用英语演讲20分钟,分享了3个Nvidia曾经差点失败的故事,期勉台大毕业生们学习面对错误、寻求帮助,为追求愿景而坚持、磨练品格,以及学会放弃。1、坦诚面对错误,谦卑寻求帮助是聪明、成功人士最难学会的......
  • AI安防视频汇聚融合平台EasyCVR v3.2版本托盘显示优化
    EasyCVR基于云边端协同,可支持海量视频的轻量化接入与汇聚管理。平台兼容性强、拓展度高,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能。为了便于用户二次开发、调用与集成,我们也提供了丰富的A......
  • 23.3.27-4.2 每周总结
    本周的学习任务依然是每天的javaweb学习、mysql、Android开发学习以及后期的课程复习任务。在javaweb学习方面,我学习了Spring框架的使用和AOP编程等内容;在MySQL方面,我学习了事务的隔离级别和存储引擎的对比使用;在Android开发方面,我学习了多线程编程的方法。在后期的课程复习任务方......