关于openharmony:RK系列开发板音频驱动适配指南一

39次阅读

共计 1914 个字符,预计需要花费 5 分钟才能阅读完成。

背景:

多媒体系统目前在 Linux 操作系统,windows 操作系统曾经十分成熟,并且利用场景宽泛,然而,基于 OpenAtom OpenHarmony(以下简称“OpenHarmony”)操作系统,目前如果应用到多媒体(音频)是须要做一系列的适配动作,能力利用到各种场景。

计划:

基于 OpenHarmony 适配 RK 系列开发板音频驱动总体方案是:基于 HDF 框架和 ADM 模型,在内核层中创立 DAI、DMA 和 Codec 三个模块,并实现例化 ADM 定义的 DAI、DMA 和 Codec 回调业务接口,ADM 通过这些接口实现音频数据处理与性能管制;而后再通过 HCS 配置设施节点和服务,通过 HDF 的服务管理机制,对内核层和用户层提供服务。针对 DAI、DMA 和 Codec,首先别离创立对应的适配器模块(RK 系列开发板 daiadapter、RK 系列开发板 dmaadapter、es8838codecadapter),在其中实现驱动的注册、绑定、初始化和开释;而后别离创立三者对应的操作集模块(RK 系列开发板 daiops、RK 系列开发板 dmaops、es8838codecops),在其中实现所有 ADM 定义的对应业务接口;最初在 deviceinfo.hcs 中配置三者私有的参数,若须要配置公有参数,则还须要别离创立三者对应的 HCS 配置文件(daiconfig.hcs、dmaconfig.hcs、codecconfig.hcs)。

RK 系列开发板 DAI 模块适配:

DAI 次要作用是通过 I2S 将 Soc 与 Codec 连贯,实现在 Soc 和 Codec 之间音频数据的传输, 其中 I2S 驱动由 HDF 框架提供。ADM 定义的 DAI 接口包含:DAI 设施初始化、读写(Soc 的)寄存器、音频设备启动、下发硬件参数和事件监听共 6 个接口。在适配器模块中实例化 ADM 定义的 DAI 两个构造体:DaiData(SoC 端 DAI 数据集)和 AudioDaiOps(SoC 端 DAI 操作集);在操作集模块中实现 6 个 ADM 定义的 DAI 的业务接口函数;配置 DAI 设施节点私有参数,若有须要,则可配置 SoC 端的 I2S 寄存器信息等公有参数。

RK 系列开发板 DAI 模块关系

RK 系列开发板_dai-classes.puml

1.1.RK 系列开发板 daiadapter

•实例化 SoC 端 DAI 操作集:g_daiDeviceOps,核心成员字段值定义如下:
–Startup = RK 系列开发板 DaiStartup;
–HwParams = RK 系列开发板 DaiHwParams;
–Trigger = RK 系列开发板 DaiTrigger。
•实例化 SoC 端 DAI 数据集:g_daiData,核心成员字段值定义如下:
–DaiInit = RK 系列开发板 DaiDeviceInit;
–Read = RK 系列开发板 DaiDeviceReadReg;
–Write = RK 系列开发板 DaiDeviceWriteReg;
–ops = &g_daiDeviceOps,SoC 端 DAI 操作集地址。
•实例化 HdfDriverEntry 类型的 DAI 驱动实体:g_daiDriverEntry,核心成员字段值定义如下:
–moduleVersion = 1,模块版本号;
–moduleName = “DAI_RK 系列开发板 ”,模块名;
–Bind = DaiDriverBind;
–Init = DaiDriverInit;
–Release = DaiDriverRelease。
•DAI 驱动注册到鸿蒙零碎:HDFINIT(gdaiDriverEntry)。
•实现以下函数:
–DaiDriverInit,DAI 驱动初始化函数;
–DaiDriverBind,DAI 驱动绑定函数;
–DaiDriverRelease,DAI 驱动开释函数。

1.2.RK 系列开发板 daiops

•实现以下函数:
–RK 系列开发板 DaiDeviceInit,初始化 SoC 端 DAI 设施函数;
–RK 系列开发板 DaiDeviceReadReg,读 SoC 端 DAI 设施寄存器函数;
–RK 系列开发板 DaiDeviceWriteReg,写 SoC 端 DAI 设施寄存器函数;
–RK 系列开发板 DaiStartup,启动 SoC 端 DAI 设施函数;
–RK 系列开发板 DaiHwParams,下发 SoC 端 DAI 硬件参数函数;
–RK 系列开发板 DaiTrigger,监听并处理事件函数。

总结:

在 OpenHarmony 操作系统中,适配音频驱动是十分重要的一个模块,本文只是其中的一个步骤,DAI 模块适配,通过示意图的剖析,以及外围代码的领导,置信读者会对音频适配有一个根本的理解,之后的文章中,会逐渐更新音频驱动的 DMA 模块适配、Codec 模块适配、Audio HCS 配置等。

正文完
 0