鸿蒙HDF通用平台接口能力实现原理 

功能

提供驱动使用的系统接口资源和硬件资源,如GPIO、I2C、SPI等通用平台接口能力。该接口部分与平台无关可支持跨平台迁移。

根据本人的理解通用平台接口能力位为下图HDF框架中的红框内。这样能做到与OS平台隔离开来,驱动开发者只需要关注于适配芯片平台的接口即可。

实现

HDF会把加载的所有驱动的HdfDriverEntry对象的起始地址汇总起来,形成一个类似地址数组的东西,这个数组的第一项的地址对应上面代码中的HDF_DRIVER_BEGIN(),最后一项的地址对应HDF_DRIVER_END()(最后一项不填内容)。示意图如下:

当HDF初始化时会根据驱动开发者注册的驱动加载过程如下:

1、Bind函数使用UartHostCreate分配一个uartHost,并与device绑定。

2、Init时取出Host并注册设备结点,将uartHost作为私有参数传入。

3、实现host->methon函数。

当应用层open时。会检查是否存在uartHost私有数据是否存在。

当应用层write时。会执行uartHost中的write函数。

附:

参考大神文章:https://blog.csdn.net/codefly/article/details/108901989

官方示例代码路径: drivers\hdf\frameworks\support\platform\src

官方文档:\docs\readme\开发Hi3516第一个驱动程序示例.md

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐