0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK系列开发板音频驱动适配指南(一)

电子发烧友开源社区 来源:未知 2022-10-17 14:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

afb13a46-4de6-11ed-a3b6-dac502259ad0.jpg

陈甲印

鸿湖万联产品推荐官

软通动力高级技术专家

背景:

多媒体系统目前在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模块关系

afd6eac0-4de6-11ed-a3b6-dac502259ad0.png  

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配置等。

END

想了解更多开源技术?后台留言,立刻安排!就喜欢奖励一个“”和“在看”呗~

原文标题:RK系列开发板音频驱动适配指南(一)

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    6122

    浏览量

    113240
  • 音频驱动
    +关注

    关注

    0

    文章

    14

    浏览量

    8458

原文标题:RK系列开发板音频驱动适配指南(一)

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 651次阅读
    【迅为工业<b class='flag-5'>RK</b>3568稳定可靠】itop-3568<b class='flag-5'>开发板</b>Linux<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实战:<b class='flag-5'>RK</b>3568内核模块符号导出详解

    【迅为工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验

    【迅为工业RK3568稳定可靠】itop-3568开发板驱动开发第4章驱动模块传参实验
    的头像 发表于 11-06 14:25 171次阅读
    【迅为工业<b class='flag-5'>RK</b>3568稳定可靠】itop-3568<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>开发</b>第4章<b class='flag-5'>驱动</b>模块传参实验

    避坑指南RK3568开发板选型,这5点没看清千万别下手!(附迅为驱动开发指南资源)

    避坑指南RK3568开发板选型,这5点没看清千万别下手!(附迅为驱动开发指南资源)
    的头像 发表于 10-30 15:49 333次阅读
    避坑<b class='flag-5'>指南</b>!<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>选型,这5点没看清千万别下手!(附迅为<b class='flag-5'>驱动</b><b class='flag-5'>开发指南</b>资源)

    瑞芯微RK3506核心/开发板DSM音频开发实战,关键知识点与实操案例必看攻略!

    本文基于触觉智能RK3506核心/开发板,介绍DSM音频功能使用攻略。如需购买开发板可某宝搜索深圳触觉智能DSM简介DSMDSM(Delt
    的头像 发表于 09-30 17:41 2185次阅读
    瑞芯微<b class='flag-5'>RK</b>3506核心<b class='flag-5'>板</b>/<b class='flag-5'>开发板</b>DSM<b class='flag-5'>音频</b><b class='flag-5'>开发</b>实战,关键知识点与实操案例必看攻略!

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选瑞芯微RK3506开发板,3核Cortex-A7@1.5GHz+Cortex-M0,Linu
    的头像 发表于 09-11 16:26 2775次阅读
    <b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>Linux<b class='flag-5'>开发板</b>极致性价比之选

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入

    迅为RK3568开发板驱动指南GPIO子系统GPIO子系统API函数的引入
    的头像 发表于 05-29 14:05 831次阅读
    迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>指南</b>GPIO子系统GPIO子系统API函数的引入

    迅为RK3568驱动指南GPIO子系统 GPIO操作函数实验

    迅为电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1044次阅读
    迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>驱动</b><b class='flag-5'>指南</b>GPIO子系统 GPIO操作函数实验

    迅为RK3568开发板驱动指南GPIO子系统三级节点操作函数实验

    迅为RK3568开发板驱动指南GPIO子系统三级节点操作函数实验
    的头像 发表于 05-26 15:39 1266次阅读
    迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>指南</b>GPIO子系统三级节点操作函数实验

    瑞芯微RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!

    瑞芯微RK3506开发板Ethercat主站适配开发详细攻略,实测微秒级抖动延迟!
    的头像 发表于 05-09 15:57 1377次阅读
    瑞芯微<b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>Ethercat主站<b class='flag-5'>适配</b><b class='flag-5'>开发</b>详细攻略,实测微秒级抖动延迟!

    基于RK3576开发板的PWN使用说明

    RK3576开发板使用PWN教程及Demo
    的头像 发表于 05-07 14:07 1922次阅读
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>的PWN使用说明

    【北京迅为】iTOP-RK3568开发板鸿蒙OpenHarmony系统南向驱动开发实操-HDF驱动配置UART

    【北京迅为】iTOP-RK3568开发板鸿蒙OpenHarmony系统南向驱动开发实操-HDF驱动配置UART
    的头像 发表于 03-25 11:02 1287次阅读
    【北京迅为】iTOP-<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>鸿蒙OpenHarmony系统南向<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实操-HDF<b class='flag-5'>驱动</b>配置UART

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构

    北京迅为RK3568开发板OpenHarmony系统南向驱动开发内核HDF驱动框架架构
    的头像 发表于 03-11 14:13 1555次阅读
    北京迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>OpenHarmony系统南向<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>内核HDF<b class='flag-5'>驱动</b>框架架构

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux中通用SPI设备驱动
    的头像 发表于 01-23 11:02 3425次阅读
    迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b><b class='flag-5'>驱动</b><b class='flag-5'>指南</b>Linux中通用SPI设备<b class='flag-5'>驱动</b>

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数

    迅为RK3568开发板SPI驱动指南-mcp2515驱动编写:读寄存器函数
    的头像 发表于 01-20 14:43 1500次阅读
    迅为<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>SPI<b class='flag-5'>驱动</b><b class='flag-5'>指南</b>-mcp2515<b class='flag-5'>驱动</b>编写:读寄存器函数

    瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示

    本文介绍瑞芯微方案主板/开发板Linux系统播放音频的方法,触觉智能RK3562开发板演示,通用RK3566、
    的头像 发表于 12-13 11:40 1400次阅读
    瑞芯微主板/<b class='flag-5'>开发板</b>Linux系统播放<b class='flag-5'>音频</b>方法,触觉智能<b class='flag-5'>RK</b>3562<b class='flag-5'>开发板</b>演示