背景:

上一篇文章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模块关系

RK系列开发板_dma-classes.puml

    1. 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驱动释放函数。
    1. 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系列开发板音频驱动适配指南(二)相关推荐

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

    背景: 多媒体系统目前在Linux操作系统,windows操作系统已经非常成熟,并且应用场景广泛,但是,基于OpenAtom OpenHarmony(以下简称"OpenHarmony&quo ...

  2. 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习,来自STM32神舟系列开发板设计师的总结)

    转载: 来源:www.armjishu.com 作者:jesse 我的另一篇文章:<STM32嵌入式入门必看之文章-----介绍非常详细!(学STM32的理由!!!!)>http://ww ...

  3. 构建一个适合stm32mp157系列开发板的嵌入式Linux系统

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  4. 瑞芯微RK3399嵌入式开发板Wifi 驱动 build in 方式

     RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数.浮点.内存等作了大幅优化,在整体性能.功耗及核心面积三个方面都具革命性提升 ...

  5. STM32MP157驱动开发——Linux 音频驱动

    STM32MP157驱动开发--Linux 音频驱动 一.简介 1.CS42L51 简介 2.I2S总线 3.STM32MP1 SAI 总线接口 二.驱动开发 1.音频驱动 1)修改设备树 i2c 接 ...

  6. Beaglebone Black开发板安装驱动

    Beaglebone Black开发板安装驱动 Beaglebone Black开发板安装驱动,在使用Beaglebone Black开发板子做任何事情之前首先需要安装驱动.下面的内容就了展示在Win ...

  7. 【STM32F103ZE】TOF250(TTL)基于STM32系列开发板的运用

    目录 @[TOC](目录) 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通 ...

  8. 【STC12C5A60S2】TOF250(TTL)基于51系列开发板的运用

    目录 一.前言 二.硬件准备 二.软件准备 三.硬件接线图 四.例程源码 五.烧录说明 5.1 烧录接线示意图 5.2 烧录动态图 六.结果输出 一.前言 此片文章主要介绍如果通过51系列开发板来读取 ...

  9. 龙芯智龙开发板:驱动步进电机实战入门

    本文面向初学者,请多各位高手包涵.我在此特别致谢勤为本先生为我提供的帮助. 步进电机 步进电机就是一种受脉冲控制的电机,步进电机接收到一系列某种调制顺序的脉冲,做出相应的反应,转到相应的角度或者相应的 ...

最新文章

  1. 40年诞生7位诺奖得主,美国贝尔实验室做对了什么?
  2. CompletableFuture并行异步处理类使用示例
  3. c++导出标准win32格式的dll
  4. mysql几种备份恢复_mysql多种备份与恢复方式一
  5. UVA11039 Building designing【排序】
  6. Redhat Linux Enterprise Server 5.5 x86_64位操作系统Karachi时区问题?
  7. php管理员权限表,权限表的建立
  8. javaScript之函数,分支结构 ,循环结构(二)
  9. 2019上海开源峰会炉边会谈纪要
  10. 数据包络分析方法与maxdea软件_数据包络模型 DEA三阶段超效率SBM非期望
  11. PLC编程入门基础知识
  12. 魔兽怀旧服怎么找不到服务器,魔兽世界怀旧服世界服务器无法连接怎么办
  13. zabbix mysql安装配置_Zabbix安装图解教程 | 系统运维
  14. flyway 社区版本使用团队(企业级)特性ignore-migration-patterns使用
  15. 量化交易入门笔记-策略常用对象
  16. python3GUI--微博图片爬取工具V1.5 By:PyQt5(附源码)
  17. 海关179号出口清单报文CEB603Message描述规范
  18. 鸿蒙子系统解读-分布式任务调度篇
  19. 英语知识系列:按发音规律重排的英语音标
  20. 辽宁移动数码S6_S805_RTL8188_线刷固件包

热门文章

  1. 小白带你学安卓——Intent
  2. POST /product/:id 获取单个商品
  3. python+vue 税务申报系统
  4. 怎样转换WPS格式,WPS怎么转换PPT格式
  5. Spring Boot的启动流程
  6. 普通路由器改4g路由器_4G工业路由器将加速工业物联网发展进程
  7. 哪一款iPhone拍照效果最好?拍照最好用的苹果手机是哪款
  8. 干货 | 数字经济创新创业——数字技术创造新经济
  9. 基于J2EE的B2C电子商务系统开发与实现
  10. CSS3表单设计–复古