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

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

3天内不再提示

【开源项目】基于OpenHarmony的RK系列开发板音频驱动适配方案

电子发烧友论坛 来源:未知 2022-10-25 08:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:陈甲印

职位:鸿湖万联产品推荐官软通动力高级技术专家

fbd0c832-53fa-11ed-a3b6-dac502259ad0.jpg

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

背景:

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

fbec3540-53fa-11ed-a3b6-dac502259ad0.jpg

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驱动释放函数。

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

RK系列开发板音频驱动适配(二)

背景:

上一篇文章RK系列开发板音频驱动适配指南-DAI模块适配中已经阐述音频驱动适配的DAI模块适配步骤以及核心代码的展示,本次主要介绍音频驱动适配中的DMA模块适配。

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

DMA是一种无需要CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,其主要作用是实现音频数据在SoC设备与内存之间的传输,并对循环缓存中的数据进行管理。ADM定义的DMA接口包括:DMA设备初始化、内存的分配与释放、DMA通道的申请与配置、DMA预处理、暂停与恢复、音频数据的提交与悬挂和循环缓存管理共11个接口。

在适配器模块中实例化ADM定义的DAI两个结构体:PlatformData(DMA数据集)和AudioDmaOps(DMA操作集);在操作集模块中实现DMA的业务接口函数;配置DMA设备节点公有参数,若有需要,则可配置DMA相关寄存器信息等私有参数。

RK系列开发板 DMA模块关系

fc0d50cc-53fa-11ed-a3b6-dac502259ad0.jpg

RK系列开发板dmaadapter

实例化DMA操作集:g_dmaDeviceOps,核心成员字段值定义如下:

DmaBufAlloc = RK系列开发板DmaBufAlloc;

DmaBufFree = RK系列开发板DmaBufFree;

DmaRequestChannel = RK系列开发板DmaRequestChannel;

DmaConfigChannel = RK系列开发板DmaConfigChannel;

DmaPrep = RK系列开发板DmaPrep;

DmaSubmit = RK系列开发板DmaSubmit;

DmaPending = RK系列开发板DmaPending;

DmaPause = RK系列开发板DmaPause;

DmaResume = RK系列开发板DmaResume;

DmaPointer = RK系列开发板PcmPointer。

实例化DMA数据集:g_platformData,核心成员字段值定义如下:

PlatformInit= RK系列开发板DmaDeviceInit;

ops = &g_dmaDeviceOps,DMA操作集地址;

实例化HdfDriverEntry类型的DAI驱动实体:

g_platformDriverEntry,核心成员字段值定义如下:

moduleVersion = 1,模块版本号;

moduleName = "DMA_RK系列开发板",模块名;

Bind = DmaDriverBind;

Init = DmaDriverInit;

Release = DmaDriverRelease。

DMA驱动注册到鸿蒙系统:HDFINIT(gplatformDriverEntry)

实现以下函数:

DmaDriverInit,DMA驱动初始化函数;

DmaDriverBind,DMA驱动绑定函数;

DmaDriverRelease,DMA驱动释放函数。

RK系列开发板dmaops

实现以下函数:

RK系列开发板DmaDeviceInit,初始化DMA设备函数;

RK系列开发板DmaBufAlloc,分配数据内存函数;

RK系列开发板DmaBufFree,释放数据内存函数;

RK系列开发板DmaRequestChannel,申请DMA通道函数;

RK系列开发板DmaConfigChannel,配置DMA通道函数;

RK系列开发板DmaPrep,DMA预处理函数;

RK系列开发板DmaPause,暂停函数;

RK系列开发板DmaResume,恢复函数;

RK系列开发板DmaSubmit,提交数据函数;

RK系列开发板DmaPending,悬挂数据函数;

RK系列开发板PcmPointer,管理数据缓存函数。

总结:

本文详细介绍DMA的适配步骤以及核心代码,相信读者会对音频适配会有一个更清楚深入的了解,之后的文章中,会逐步更新音频驱动的Codec模块适配、Audio HCS配置等。

更多“RK系列开发板音频驱动适配指南”点击下方的文章链接阅读。

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

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

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

fc2cd7ee-53fa-11ed-a3b6-dac502259ad0.png


原文标题:【开源项目】基于OpenHarmony的RK系列开发板音频驱动适配方案

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

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

    关注

    26

    文章

    6522

    浏览量

    121393
  • OpenHarmony
    +关注

    关注

    33

    文章

    3989

    浏览量

    21477

原文标题:【开源项目】基于OpenHarmony的RK系列开发板音频驱动适配方案

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    你的专属“数字员工”已到岗!迅为RK3588系列开发板适配OpenClaw

    你的专属“数字员工”已到岗!迅为RK3588系列开发板适配OpenClaw
    的头像 发表于 03-11 11:02 867次阅读
    你的专属“数字员工”已到岗!迅为<b class='flag-5'>RK</b>3588<b class='flag-5'>系列</b><b class='flag-5'>开发板</b><b class='flag-5'>适配</b>OpenClaw

    OpenHarmony开发开源资料!凌蒙派-RK3568开发板:从入门到实战的全栈硬件平台

    点的利器:凌蒙派 - RK3568 开发板,以及它的核心开源资源站——Gitee 仓库(https://gitee.com/xie-shancai/lockzhiner-rk3568-open
    的头像 发表于 02-05 13:56 761次阅读
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>开发</b><b class='flag-5'>开源</b>资料!凌蒙派-<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>:从入门到实战的全栈硬件平台

    迅为驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略

    迅为驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略
    的头像 发表于 12-30 15:42 1443次阅读
    迅为<b class='flag-5'>驱动</b><b class='flag-5'>开发</b>实战:iTOP-<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>eDP屏幕移植全攻略

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

    【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
    的头像 发表于 11-21 13:25 1936次阅读
    【迅为工业<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内核模块符号导出详解

    触觉智能Purple Pi OH开发板率先适配OpenHarmony6.0 Release,鸿蒙明星开发板

    2025年9月19日,在官网上线开源鸿蒙OpenHarmony6.0Release仅13天,触觉智能宣布旗下PurplePiOH开发板成功完成OpenHarmony6.0Release
    的头像 发表于 10-29 08:00 1241次阅读
    触觉智能Purple Pi OH<b class='flag-5'>开发板</b>率先<b class='flag-5'>适配</b><b class='flag-5'>OpenHarmony</b>6.0 Release,鸿蒙明星<b class='flag-5'>开发板</b>

    触觉智能RK3576开发板通过OpenHarmony5.0 XTS认证

    触觉智能作为开源鸿蒙南向硬件厂家,旗下RK3576开发板及其核心(模组)PurplePiOH2系列通过了
    的头像 发表于 10-21 12:48 1295次阅读
    触觉智能<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b>通过<b class='flag-5'>OpenHarmony</b>5.0 XTS认证

    触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输功能示例

    本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,基于触觉智能RK3576开发板PurplePiOH2演示。Open
    的头像 发表于 09-30 16:31 1925次阅读
    触觉智能<b class='flag-5'>RK</b>3576<b class='flag-5'>开发板</b><b class='flag-5'>OpenHarmony</b><b class='flag-5'>开源</b>鸿蒙系统USB控制传输功能示例

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

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

    触觉智能RK3506开发板通过OpenHarmony 5.1 XTS认证,引领鸿蒙开发新标杆!

    触觉智能作为瑞芯微专业方案商与开源鸿蒙南向硬件厂家,旗下RK3506开发板及其核心(模组)通过Open
    的头像 发表于 08-14 23:49 2112次阅读
    触觉智能<b class='flag-5'>RK</b>3506<b class='flag-5'>开发板</b>通过<b class='flag-5'>OpenHarmony</b> 5.1 XTS认证,引领鸿蒙<b class='flag-5'>开发</b>新标杆!

    【重要通知】OpenHarmony主干平台开发板选型提报倒计时(参考工具发布)

    芯片平台: RK3588、展锐7885、飞腾D3000M、海思(型号待定)各厂商/团队如有以上芯片平台的开发板,请将相关资料(开发板产品信息、详细产品规格书、初步报价方案等)于本周六(
    发表于 07-24 09:17

    尝鲜开源鸿蒙6.0?试试明星开发板Purple Pi OH

    6月19日,开源鸿蒙官方发布了OpenHarmony6.0Beta1版本,触觉智能紧随其后,率先在PurplePiOH开发板进行适配
    的头像 发表于 07-11 18:42 1854次阅读
    尝鲜<b class='flag-5'>开源</b>鸿蒙6.0?试试明星<b class='flag-5'>开发板</b>Purple Pi OH

    开鸿开发板深度体验:从开源鸿蒙开发到AI场景实践

    的KaihongBoard-3588S-SBC和KaihongBoard-3576-SBC被评为“2025OpenHarmony明星开发板”,可实现设备快速开源鸿蒙化升级、分布式互联协同、弹性部署等能力。
    的头像 发表于 07-03 17:03 2118次阅读
    开鸿<b class='flag-5'>开发板</b>深度体验:从<b class='flag-5'>开源</b>鸿蒙<b class='flag-5'>开发</b>到AI场景实践

    迅为RK3562开发板2900页+资料_多种系统适配开源

    迅为RK3562开发板ARM四核A53核心多种系统适配开源 RK3562
    发表于 06-17 10:50

    Ubuntu系统安装Docker详细攻略,触觉智能RK3568开发板演示

    本文介绍Ubuntu系统安装Docker方法,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持开源鸿蒙
    的头像 发表于 06-06 18:05 1255次阅读
    Ubuntu系统安装Docker详细攻略,触觉智能<b class='flag-5'>RK</b>3568<b class='flag-5'>开发板</b>演示

    【免费试用】开发板评测大赛开启!OH 、RISC-V、Rockchip顶级开发板等你试用~

    OpenHarmony、RISC-V、Rockchip(下称RK)全面覆盖前沿技术方向,等你用代码与创意点燃科技未来!——点击开发板图片立即申请————点击开发板图片立即申请———
    的头像 发表于 06-05 08:05 1276次阅读
    【免费试用】<b class='flag-5'>开发板</b>评测大赛开启!OH 、RISC-V、Rockchip顶级<b class='flag-5'>开发板</b>等你试用~