RK3568------Openharmony 4.0-Release HDF串口驱动(CH9344 USB转串口) 上


前言

距离发布上一篇文章时隔半个月!之所以这么长时间没有发布文章,是因为一直在做适配CH9344 USB转串口驱动适配HDF驱动框架的工作,在这个过程遇到了很多问题,我将通过上、下两篇文章来详细讲解。本章的内容为-------如何在OHOS编译构建体系中,调用HDF提供的上层接口。


一、应用层接口调用实例

在这里插入图片描述
实例: rs485_test.c
使用的API均来自官网平台驱动使用,具体我不在此赘述。

!!!!!!!!需要注意的就是实例中设备端口号port的取值,关于port对应实际平台的端口号具体指什么,官网没有给出详细的解释,我将在 下篇 文章中结合源码给出解释
在这里插入图片描述

二、bundle.json 部件文件实例

实例: bundle.json
因为是在应用层调用HDF相关接口,需要依赖一些部件的接口,所以我选择建立一个新的子系统来创建我的工程。官网 编译构建已经详细介绍这一过程,我不在此赘述。只将我和讨论群群友遇到的问题和重点需要关注的地方详细记录

  1. 新的子系统一定要添加进配置文件中才能生效,//build/subsystem_config.json

在这里插入图片描述

2.部件的实际路径是以bundle.json文件所在路径为准

在这里插入图片描述
!!!!!!这里重点强调,我是将bundle.json放在rs485_test文件下了,如果我是放在samples文件下,那么路径就是samples,这里路径不对是找不到部件的

3.构建的目标路径

在这里插入图片描述
这里的路径应该分成3部分来看:

  • //samples 是子系统的所在路径
  • //samples/rs485_test 是编译构建文件BUILD.gn的所在路径
  • :rs485_test是构建文件中一个构建目标的名称。

4.依赖的库

在这里插入图片描述
这里的依赖是指编译目标中需要依赖的库,分为两部分,一部分是其他组件,一部分是三方库,根据实际依赖的情况填写。

  1. 注意书写格式规范

在这里插入图片描述

bundle.json`对格式的规范检查很严格,举个我犯的错误,而且很不好排查
如果是BUILD.gn,这行的结尾添加一个","逗号是没问题的,但是在json中,是绝对不行的。

三 、BUILD.gn 构建文件实例

实例BUILD.gn

1.引用的头文件如果是其他组件的头文件,实际上不需要特别引用

这句话大家可能不是很理解,直接看图说话
在这里插入图片描述
这里大家可以看到头文件其实全是其他组件中API的定义头文件。实际上我是全部注释掉了,但是依然可以编译成功,是因为external_deps中依赖的相关组件,已经引用过这些头文件了。因为在构建规则了,这些可以提供给外部使用的组件,在定义时必须引用头文件,具体在哪里我可以举个hdf_core:libhdf_utils例子
路径://drivers/hdf_core/bundle.json
在这里插入图片描述

2.依赖库时要分清依赖的是三方库、外部组件、内部组件

这里在引用时一定不要混淆,而且要求必须写准确

  • deps 是该组件内部的依赖和第三方库
  • external_deps 是声明可以给其他组件使用的依赖

3.必填的参数

在这里插入图片描述
!!!!!!!不管官网是如何描述的,以上几项是我认为在构建文件中必须填写的属性

四、遇到的问题

编写构建文档中遇到的问题已在实例中详细介绍解析,感谢群友@飘絮 @Promise提供的模版
这里为各位提供一个快速编译目标的方法

  • ./build.sh --product-name 产品名 --build-target 模块名 --build-only-gn生成build.ninja,然后去该文件中查找相关模块名。
  • 执行./build.sh --product-name 产品名 --build-target 模块名
    这里的模块名就是你编译的目标,比如我的就是rs485_test

五、效果展示

在这里插入图片描述


总结

本人之前一直从事应用开发,借着这次电鸿的契机进行系统级开发的学习,将我在工作中的遇到的问题及解决思路记录并分享,希望可以与诸君共勉
目前网上技术讨论群大都是鸿蒙的应用开发,总结此类文章也是希望将同样进行鸿蒙设备开发的同僚召集到一起,一起讨论学习。如果有同样在进行鸿蒙设备开发的朋友,可以加我的联系方式,期待您的消息
个人微信
在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐