Linux I2S驱动移植*
8008可以作为I2S主设备输出音频。在linux或者Android系统上,需要把8008包装为一个标准的codec声卡设备。8008不需要驱动控制,它只需要上电就可以自动运行,并把I2S数据持续输出。
但是,在linux或者Android系统上,还是需要个codec驱动,把8008包装为一个标准的声卡设备。这样linux或者Android上的arecord,tinycap或者录音机工具,才能正确的录音。
文档后续描述,8008和8008C都是一样的驱动。
1. 驱动移植说明*
1】参考驱动 8008C_I2S_Sample.zip (http://yun.nationalchip.com:10000/l/7F2wSd)
2】驱动代码描述:
- 驱动代码:vcodec.c
- 编译后生成:vcodec.ko
- 编译:修改makefile,匹配自己平台的gcc工具链和linux内核头文件,然后执行make
3】该驱动基于ASOC框架
4】下面以MTK平台为例子
在MTK验证前需要:(这里codec就是8008)
-
MTK做I2S Slave,确认可以录音
-
找到MTK 自己I2S驱动的snd_soc_dai_link,后面绑定需要把codec的名字挂上
vcodec.c 中,把 dai 名字写为了:vcodec_dai
并且 8008C 只作为 capture 设备,不支持 playback
因此,需要在MTK的snd_soc_dai_link上,把codec的dai名字绑定上去
这个和MTK的I2S驱动代码相关,需要自己找到codec_dai_name并修改,例如:
然后需要按照如下,设置 MTK 的驱动(注意:MTK 要作为 I2S Slave)
8008C I2S 格式 :
采样率 | 48K |
---|---|
位宽 | 输出32bit 有效位16bit |
FS | 48K |
bclk | 64fs |
对齐 | 标准I2S格式 |
驱动生成后,通过insmod加载,使用:arecord –l 查看
可见,生成了一个新的声卡设备,支持录音功能 (录制左右两声道音频)
arecord -D hw:1,0 -d 10 -c 2 -r 48000 -f S16_LE test.wav
使用tinycap录音如下:(设备号根据自己的平台查看下,看是否要修改)
./tinycap /sdcard/record.pcm -D 0 -d 1 -c 2 -r 48000 -b 16