#物联网征文# 【FFH】DevEco Device Tool:HDF框架一键生成! 原创 精华
前言
参考文章
概述
HDF驱动框架,为驱动开发者提供驱动框架能力,包括驱动加载、驱动服务管理和驱动消息机制。旨在构建统一的驱动架构系统,为驱动开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
开发者可以通过DevEco Device Tool的HDF功能管理和添加设备的驱动,添加驱动时,工具会自动生成相应的驱动目录结构、初始化驱动模板、代码及头文件等信息。
前提条件
- 开发板:Hi3516DV300开发板(目前只支持该开发板,并且支持LiteOS内核和Linux内核的HDF驱动模板生成)
- 源码:OpenHarmonyV3.1 Release及后续版本源码。
- 工具:DevEco Device Tool
使用体验
通过HDF框架自动生成确实对于小型系统和标准系统的开发带来很大便利,编写驱动代码时可以减少对编译构建的关注,而更加关注到驱动代码编写本身,提高代码编写效率,并且会生成代码框架,命名格式什么都比较规范,可以省去很多时间用于框架的编写或复制修改。缺点就是目前支持的开发板只有一个,希望后续可以完善,支持更多的开发板,这个功能是真的很好用。
新建HDF驱动模块
点开Deveco Device Tool插件图标,在工具控制区中点击HDF进入驱动添加页面,选择产品,目前只有ipcamera_hispark_taurus与ipcamera_hispark_taurus_linux与hispark_taurus_standard三款产品支持使用,未支持的产品无法点击+号添加HDF模块。
在添加驱动模块对话框中,填写模块名称,然后点击添加。
说明
只有标准系统的产品,在添加驱动的时候,需要选择“RunMode”:user和kernel;小型系统的产品只需要填写Module名称即可。
添加后,可点击Action下的删除按钮删除已添加的模块。
添加后,可以在Driver Module下看到已添加的模块,使用LiteOS内核与Linux内核生成的会有所不同。
生成后会自动帮我们配置好编译链,自动生成MakeFile,BUILD.gn,Kconfig,C++驱动代码模板等。
驱动代码实现
点击模块文件下的文件图标,可以打开文件,进行驱动开发。点击c/c++即可进行驱动代码的开发。生成的模板如下。(找了官方的含有中文注释的图)
为了验证HDF驱动是否成功编译进内核,对驱动代码进行些许修改,在Init函数中加入了红外LED灯的点亮,通过查阅原理图得到,红外led的引脚号为41,代码如下,需包含#include "gpio_if.h"头文件用于控制gpio,只是验证的话就不写用户态的函数了。
烧录验证
接着进行编译烧录启动,不清楚的可以看下面这篇文章:
Hi3516DV300 OpenHarmony3.1环境配置及烧录
点击monitor开启串口监视,可以看到打印出了Hello Linux的LOG,说明驱动成功初始化,同时可以看到红外灯成功点亮。
后记
虽然通过工具自动生成代码很方便,但还是建议初学者要搞清楚HDF框架的具体实现流程,手动实现一遍,了解编译的整个流程,这对理解OpenHarmony代码及框架还是非常有帮助的,工具最好当成你能熟练掌握后提高效率的助手。而且工具也不一定支持所有情况,理解整个HDF后即使遇到一些特殊情况也能有办法解决,后面的一篇文章我将会深入HDF的驱动开发流程,并且比较LiteOS内核与Linux内核HDF驱动开发的区别。
【本文正在参加物联网有奖征文活动】,活动链接:https://ost.51cto.com/posts/14758
Hi3516玩不起呀,希望HDF能支持更多的开发板吧,也感谢楼主的分享。