做设计找素材那个网站最好用,查网站跳出率,十堰市郧城建设网站,收不到wordpress的邮件1.2.7 节点复制
节点复制可以实现在节点定义时从另一个节点先复制内容#xff0c;用于定义内容相似的节点。语法如下#xff0c;表示在定义node节点时将另一个节点source_node的属性复制过来。 node : source_node示例如下#xff0c;编译后bar节点…1.2.7 节点复制
节点复制可以实现在节点定义时从另一个节点先复制内容用于定义内容相似的节点。语法如下表示在定义node节点时将另一个节点source_node的属性复制过来。 node : source_node示例如下编译后bar节点既包含attr_0属性也包含attr_1属性在bar中对attr_0的修改不会影响到foo。在foo和bar在同级node中可不指定foo的路径否则需要使用绝对路径引用。
root {module sample;foo {attr_0 0x0;}bar:foo {attr_1 0x1;}
}上述代码的最终生成配置树为可以通过编译为hcb然后反编译确认效果。
root {module sample;foo {attr_0 0x0;}bar {attr_1 0x1;attr_0 0x0;}
}1.2.8 属性引用
为了在解析配置时快速定位到关联的节点可以把节点作为属性的右值通过读取属性查找到对应节点。语法如下表示attribute的值是一个节点node的引用在解析时可以用这个attribute快速定位到node便于关联和查询其他node。 attribute node;示例如下
root {module sample;node1 {attribute1 value1;}node2 {attr_1 node1;}
}注意不知道为什么该示例编译报错已提交 reference invalid node issue 跟踪。
ref_update.hcs:7 reference invalid node node11.2.9 删除
要对include导入的base配置树中不需要的节点或属性进行删除可以使用delete关键字。下面的举例中sample1.hcs通过include导入了sample2.hcs中的配置内容并使用delete删除了sample2.hcs中的attribute2属性和foo_2节点示例如下
// sample2.hcs
root {module sample2;attr_1 0x1;attr_2 0x2;foo_2 {t 0x1;}
}// sample1.hcs
#include sample2.hcs
root {module sample1;attr_2 delete;foo_2 : delete {}
}编译sample1.hcs文件在生成过程中将会删除root.foo_2节点与attr_2最终生成配置树效果为
/** HDF decompile hcs file*/root {attr_1 0x1;module sample1;
}1.2.10 模板
模板的用途在于生成严格一致的node结构以便对同类型node进行遍历和管理。使用template关键字定义模板node子node通过双冒号“::”声明继承关系。子节点可以改写但不能新增和删除template中的属性子节点中没有定义的属性将使用template中的定义作为默认值。示例如下
root {module sample;template foo {attr_1 0x1;attr_2 0x2;}bar :: foo {}bar_1 :: foo {attr_1 0x2;}
}生成配置树效果如下
root {module sample;bar {attr_1 0x1;attr_2 0x2;}bar_1 {attr_1 0x2;attr_2 0x2;}
}2、hc-gen配置生成
从上文可知hc-gen是配置生成的工具可以对HCS配置语法进行检查并把HCS源文件转化成HCB二进制文件。hc-gen的源代码目录在drivers\framework\tools\hc-gen
以./out/v200zr/xts_demo/obj/drivers/framework/tools/hc-gen/hc-gen为例执行下可以输出使用帮助信息
zhushangyuanOHOS:~/openharmony$ ./out/v200zr/xts_demo/obj/drivers/framework/tools/hc-gen/hc-gen
Usage: hc-gen [Options] [File]
options:-a hcb align with four bytes-b output binary output, default enable-t output config in C language source file style-m output config in macro file style-i output binary hex dump in C language source file style-p prefix prefix of generated symbol name-d decompile hcb to hcs-V show verbose info-v show version-h show this help message注意还有个-o选项可以指定输出文件的名字。
2.1 生成.c/.h文件
生成.c/.h文件的命令如下其中$SourceHcsFileName为HCS文件路径。
hc-gen -t $SourceHcsFileName实际例子可以使用openharmony/device/soc/bestechnic/bes2600/liteos_m/components/hdf_config/device_info.hcs文件执行命令如下。执行后可以在目录~/openharmony/device/soc/bestechnic/bes2600/liteos_m/components/hdf_config下看到生成的device_info.h和device_info.c文件。
cd ~/openharmony/device/soc/bestechnic/bes2600/liteos_m/components/hdf_config
~/openharmony/out/v200zr/xts_demo/obj/drivers/framework/tools/hc-gen/hc-gen -t device_info.hcs2.2 生成HCB文件
生成HCB二进制文件的命令如下其中$SourceHcsFileName为HCS文件路径。
hc-gen -b $SourceHcsFileName2.3 生成宏定义文件
生成宏定义文件的命令如下其中$SourceHcsFileName为HCS文件路径。使用这个命令只生成.h文件。
hc-gen -m $SourceHcsFileName2.4 反编译HCB文件为HCS文件
反编译HCB文件为HCS的命令如下其中$SourceHcbFileName为HCB文件路径。
hc-gen -d $SourceHcbFileName小结
本文介绍了HDF驱动框架配置管理的概念介绍了HCS及其语法并介绍了HCB及其用法后续会介绍更多的HDF驱动框架知识。
如果大家想更加深入的学习 OpenHarmony鸿蒙南向 开发的全栈内容不妨可以参考以下相关学习文档进行学习助你快速提升自己
OpenHarmony 开发环境搭建https://qr18.cn/CgxrRy 《OpenHarmony源码解析》https://qr18.cn/CgxrRy
搭建开发环境Windows 开发环境的搭建Ubuntu 开发环境搭建Linux 与 Windows 之间的文件共享……
系统架构分析https://qr18.cn/CgxrRy
构建子系统启动流程子系统分布式任务调度子系统分布式通信子系统驱动子系统…… OpenHarmony 设备开发学习手册https://qr18.cn/CgxrRy OpenHarmony面试题内含参考答案https://qr18.cn/CgxrRy 写在最后
如果你觉得这篇内容对你还蛮有帮助我想邀请你帮我三个小忙点赞转发有你们的 『点赞和评论』才是我创造的动力。关注小编同时可以期待后续文章ing不定期分享原创知识。想要获取更多完整鸿蒙最新学习资源请移步前往小编https://qr21.cn/FV7h05