> 文档中心 > OpenHarmony系统驱动HDF框架驱动介绍

OpenHarmony系统驱动HDF框架驱动介绍


OpenHarmony系统驱动实现流程

  1. 在device_info.hcs文件配置驱动信息,相当于dts树。
device0 :: deviceNode {      policy = 2;      priority = 60;      preload = 0;      permission = 0666;      moduleName = "HDF_AUDIO";      deviceMatchAttr = "hdf_audio_driver_0";      serviceName = "hdf_audio_codec_primary_dev0";  }

policy:服务策略,控制对谁提供驱动服务
moduleName 这个名称和驱动实现的HdfDriverEntry 结构体中的moduleName 相同。
deviceMatchAttr :驱动的私有配置信息。
serviceName :这个是服务名称,最终会在/dev/节点下生成serviceName 的节点(生成节点的前提条件policy 配置为大于等于1)。
2. 实现与device_info.hcs文件中配置moduleName匹配的驱动

/* HdfDriverEntry definitions */struct HdfDriverEntry g_audioDriverEntry = {    .moduleVersion = 1,    .moduleName = "HDF_AUDIO",    .Bind = AudioDriverBind,    .Init = AudioDriverInit,    .Release = AudioDriverRelease,};HDF_INIT(g_audioDriverEntry);

当g_audioDriverEntry中的moduleName 和device_info.hcs文件中的配置信息相同时,系统启动时就会执行Bind 函数,当Bind 函数执行成功时就会接着执行Init 函数。
当Bind 函数或和Init 执行失败时,系统会执行Release 函数。
Bind 函数内部实现服务的绑定。
Init 函数内部实现驱动模块的初始化。
Release 函数内部实现内存的释放。