SSD_TinyAlsa使用参考


1. 概述

SSD20X本身Audio架构设计之初并未考虑Alsa使用场景,所以目前只做了TinyAlsa的相关播放/录音操作,目前暂不支持完善的Alsa操作,如:Dmix操作等


2. 平台alsa支持需要依赖的config

  1. alsa需要依赖kernel的配置,kernel需要打开的配置如下(使用make menuconfig配置)

    CONFIG_PM = y

    CONFIG_SOUND = m

    CONFIG_SND = m

    CONFIG_SND_PCM_OSS = m

    CONFIG_SND_PCM_TIMER = y

    kernel会生成:

    insmod soundcore.ko

    insmod snd.ko

    insmod snd-timer.ko

    insmod snd-pcm.ko

  2. insmod mi_alsa.ko


3. alsa测试方法:使用标准Tinyalsa测试

平台alsa可以直接使用标准的tinyalsa bin去测试,但是,因为tinyalsa本身也在跟着kernel版本走,针对我们SSD平台的ALSA适配,建议使用tinyalsa1. 1.1的版本测试,以下是测试过的tinyalsa的版本信息:

  1. 使用Tinyalsa的源码获取

    网址:https://github.com/tinyalsa/tinyalsa/tree/1.1.1

    下载:git clone https://github.com/tinyalsa/tinyalsa.git

  2. tinyalsa编译

    配置编译链:

    export ARCH = arm
    
    export CROSS_COMPILE = arm-linux-gnueabihf-
    
    export CC = $(CROSS_COMPILE)gcc
    

    直接在tinyalsa根目录执行:

    make clean;make
    
  3. 生成的测试bin

    生成目录:tinyalsa/utils bin:tinycap/tinymix/tinypcminfo/tinyplay

  4. 测试bin基本测试命令

    tinyplay播放测试:

    ./tinyplay  *.wav
    

    tinypcminfo 查看 pcm 通道的相关信息:

    ./tinypcminfo -D 0
    

    tinycap 录音测试:

    ./tinycap  cap_out.wav
    

    tinymix 设置和获取音量:

    ./tinymix contents    //查看对应Dev的相关属性
    
    ./tintmix  set 1 60    //设置对应Dev的音量,这里是获取dev=1
    
    ./tinymix get 1      //获取对应Dev的当前音量,这里是获取dev=1
    

4. 平台特性说明

AO说明:

a. Tinyalsa部分版本限制gain不能设负值,故将AO gain [-60, 30] mapping 至 [0, 90],如:-60→0,30→90。

b. 若使用mi_alsa、Lineout不支持采样率12k、24k(alsa本身限制);所支持采样率:8k、11.025k、16k、22.05k、32k、44.1k、48k; Lineout支持1chn单声道或立体声。

c. Alsa/Tinyalsa上层暂时无法下I2S参数:eWorkmode、bSyncClock、eFmt、eMclk,使用I2S时会受限制。