瑞芯微Rockchip开发者社区
直播中

李刚

7年用户 1317经验值
私信 关注
[问答]

如何利用VS-RK3399创建声卡?

如何利用VS-RK3399创建声卡?

回帖(1)

赵军

2022-3-4 10:41:56
总体控制的概念主要描述音频的相关代码、结构。
1.2 概念
 CPU DAI:主端的音频数据接口,S,Spdif,Pdm,Tdm
 CODEC DAI:即Codec
2_LINK:绑定定为一个声卡DAI
和Codec_Dmai等Dmai:Dmai等
机器驱动程序。ACK
:监控耳机的检测监控部分,监控使用的监控监控部分,用于监控监控的监控功能,用于监控设备的监控功能。 Sound soc:主要包含部分代码, dapm
控制,jack,dmaengine,core等; sound/soc/
rockchip平台:包括Rockchip平台的cpu dai的驱动,比如I2S,spdif等以及自定义声卡机驱动;sound/soc/rock
通用平台:simple card framework ;sound/soc/generic
code 驱动:所有的codec driver/rockchip 存放位置;sound/soccodecs

2开发指南
音频开发指南
的一个声卡包含cpu_dai、codec_dai、以及dai_link组成,分别是cpu dai的驱动程序,比如I2S驱动、spdif驱动;codec驱动,比如rt5640编解码驱动;dai_link驱动,也就是机器驱动,比如sound/soc/rockchip /rockchip_rt560.c。 4.4 的内核中支持方式创建声卡,是一种通用的简易卡创建框架,是传统的自定义机器驱动。本文档均以rt564040.c。

2.2. 1 simple-card
简单卡驱动,如果simple-card 早点满足需求,优先使用simple-card 框架,简单,方便,通用的推荐c。
1. 添加code driver,比如添加:sound/soc/ codec/rt5640.c
2. 修改sound/soc/codec/Kconfig以及Makefile加入驱动编译

sound/soc/codec/Kconfig:
config SND_SOC_RT5640 tristate "Realtek ALC5640 CODEC"
取决于I2C
sound/soc/codec/Makefile:
snd-soc -rt5640-objs := rt5640.o
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o

3. menuconfig中enable simple card,codec
make menuconfig Device Drivers --->
Sound card support --->
Advanced Linux Sound Architecture --->
ALSA for SoC audio support --->
ASoC support for Rockchip Rockchip I2S Device Driver CODEC drivers --->
Realtek ALC5640 CODEC
ASoC Simple sound card support

4. 产品的DTS中添加Simple Card Node
rt5640-sound {
compatible = "simple-audio-card";
简单的声卡,格式=“i2s”;
simple-audio-card,name = "rockchip,rt5640-codec";
简单声卡,mclk-fs = <256>;
simple-audio-card,widgets = "麦克风", "麦克风插孔", "耳机", "耳机插孔";
simple-audio-card,routing = "Mic Jack", "MICBIAS1", "IN1P", "Mic Jack", "Headphone Jack", "HPOL", "Headphone Jack", "HPOR";
简单的声卡,cpu { sound-dai = <&i2s_8ch>;
};
简单的声卡,编解码器 { sound-dai = <&rt5640>;
};
};

&i2c1
{ 状态 = "好的";
rt5640: rt5640@1c {
#sound-dai-cells = <0>;
兼容 = "realtek,rt5640";
注册 = <0x1c>;
时钟 = <&cru SCLK_I2S_8CH_OUT>;
时钟名称=“mclk”;
realtek,in1-差分;
};
};



当这个简单的卡片不适合这种特殊需要的时候,需要的时候,合适的时候编写对应的,比如:声音/机器驱动程序,然后添加机器驱动程序的特殊性,程序等等。 3.2.2.2.2.2.可作为

调试调试
1.。通过如下命令确认声卡是否注册成功
root@rk3366:/ # cat /proc/asound/cards
0 [rockchiprt5640c]: rockchip_rt5640 - rockchip,rt5640-codec rockchip,rt5640-codec

root@rk3366:/ # ls -l /dev/ snd/
crw-rw---- 系统音频 116, 2 2013-01-18 08:51 controlC0
crw-rw---- 系统音频 116, 4 2013-01-18 08:51 pcmC0D0c
crw-rw--- - 116, 3 2013-01-18 08:51 系统 pcmC0p
2. 波端再使用 D 播放录音 0 调试弦卡:然后播放播放录音 0 调试弦卡:
然后播放 11kh db 正则失真,杂音通常,,如果root@ rk3366
:/#tinyplay Usage: tinyplay file.wav
[-D 卡] [-d 设备] [-p period_size] [-n n_periods]
|root@rk3366:/ # tinyplay /sdcard/test44.wav -D 0 -d 0 -p 1024 -n 3 播放样本:2 ch, 44100 hz, 32 bit


: root@rk3366:/
# tinycap Usage tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p periodsize] [-n n_periods]
||tinycap /sdcard/sdcard/c.wav -D 0 -c 2 -r 44100 -b 16 -p 1024 -0 -n@root@

通过电话调试声卡的提供:
可提供各种类似复杂的代码,如下所示:是部分数字控制图和类似控制图,显示出显示有显示控制的位,编解码器驱动程序,给上层设置通过监控显示使用,实际的调试为从数字部分的点赞开始,DAT 模拟输出端,例如 DAC 的最佳路径HPOUT。 rk .


tinymix 破解 3666
root@336
混合器名称: 'rockchip,rt5640-codec'
控件数量
ctl type num name value 0
BOOL 1 Mono Playback Switch Off
1 INT 2 Mono DAC Playback Volume 175 175
2 BOOL 2 Speaker Channel Switch Off
3 INT 2 Speaker Playback Volume 31 31
4 BOOL 2 HP Channel Switch Off Off
名称来控制,例子,不带val设置时,为查询该mix的当前状态
root@rk3366:/#tinymix 0 1
root@rk3366:/#tinymix 0
单声道播放开关:在
root@rk3366:/#tinymix" Mono Playback Switch 1
根场景下366:/ #tinymix“Mon@rk Playback Switch”
单声道播放开关:然后是播放器”


。然后,需要把功能配置配置到hal的声卡以及部署后5个不同的部署层的播放确定。 ,配置的值配置即为成功配置后的配置列表的,把值分别加入到其中,例如:
alsa_hal/hardwarehchip/audio40_hal/hardwarehchip/audio5
#ifndef _RT5640_CONFIG_H_
#define _RT5640_CONFIG_H_
#include "config.h"

const struct config_control rt5640_speaker_normal_controls[] = {
{ .ctl_name = "DAI select", .str_val = "1:2|2:1", },
{ .ctl_name = "单声道 DAC 播放音量", .int_val = {175, 175}, },
{ .ctl_name = "DAC2 播放开关", .int_val = {on, on}, },

hardware/rockchip/audio/tinyalsa_hal/codec_config/config_list。 h
struct alsa_sound_card_config sound_card_config_list[] = {
……
{ .sound_card_name = "rockchiprt5640c", .route_table = &rt5640_config_table, },
……
通过步骤即完成基本的声卡创建,调试代码,以上使用的tinyplay, tinycap, tinymix位于android/external/tinyalsa中,如果系统中没有该命令,可进到该目录执行mm生成相应的命令。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分