小白自制Linux开发板 八. Linux音频驱动配置

摘要:
不知不觉,小白自制的开发板系列已经排到了第八位。本文将配置音频驱动程序,这也是硬件部分的最后一部分。积累的文章快写完了。后续更新可能会减慢。请原谅。如果需要,可以用比较工具替换配置文件。

 不知不觉小白自制开发板系列已经到第八篇了,本篇要配置的是音频驱动,也算是硬件部分的最后一片了,积攒的文章也差不多全放完了,后续更新可能会放缓,还请见谅。

对于F1C200s是自带了多媒体处理功能的,所以我们这里可以很轻松的使用这些功能。

1. 硬件原理图

对于F1C200s,音频接口如下:HPCOM(HPCOMHPCOM_FB)、HPL、HPR,HPVCC(3.3v供电)

小白自制Linux开发板 八. Linux音频驱动配置第1张

 如果对音质要求不高,可以使用如下的处理进行接线处理,注意耳机左右声道配置。

小白自制Linux开发板 八. Linux音频驱动配置第2张

2. 替换驱动代码

接下来在Linux内核目录中替换下面补丁包中的代码,本补丁包在Linux5.7.1下测试成功,其他版本请备份源码后尝试,这里的代码是通过改造sun4i-codec解码方案而来。
配置文件

如果有必要可以使用比对工具进行替换。

3. 修改设备树

修改suniv-f1c100s.dtsi设备树文件

首先添加sun41-a10.h引用。

#include <dt-bindings/dma/sun4i-a10.h> //添加头文件

然后在soc节点下,添加如下代码

dma: dma-controller@1c02000 {
    compatible = "allwinner,suniv-f1c100s-dma";
    reg = <0x01c02000 0x1000>;
    interrupts = <18>;
    clocks = <&ccu CLK_BUS_DMA>;
    resets = <&ccu RST_BUS_DMA>;
    #dma-cells = <2>;
};

codec: codec@1c23c00 {
    compatible = "allwinner,suniv-f1c100s-codec";
    reg = <0x01c23c00 0x400>;
    interrupts = <21>;
    clocks = <&ccu CLK_BUS_CODEC>,
         <&ccu CLK_CODEC>;
    clock-names = "apb", "codec";
    resets = <&ccu RST_BUS_CODEC>;
    dmas = <&dma SUN4I_DMA_NORMAL 0x0c>, 
         <&dma SUN4I_DMA_NORMAL 0x0c>;
    dma-names = "rx", "tx";
    status = "disabled";
};

修改suniv-f1c100s-licheepi-nano.dts设备树,使解码方式工作。

&codec {
    allwinner,audio-routing =
    "Headphone", "HP",
    "Headphone", "HPCOM",
    "MIC", "Mic";
    status = "okay";
};

4. 配置MENUCONFIG

配置codec

Device Drivers
     <*> Sound card support 
         <*> Advanced Linux Sound Architecture 
             <*> ALSA for SoC audio support 
                 -> Allwinner SoC Audio support

小白自制Linux开发板 八. Linux音频驱动配置第3张

 配置dma

Device Drivers 
   <*> DMA Engine support

小白自制Linux开发板 八. Linux音频驱动配置第4张

接下来编译内核,生成zimage 和dtb文件,如果有必要,请务必先清理一下工程

make clean

然后在重新进行编译

make

5. 配置默认声卡

启动小板,就可以看到F1c100s Audio Codec 的声卡配置

 小白自制Linux开发板 八. Linux音频驱动配置第5张

5.1 检查声卡

cat /proc/asound/cards

5.2 安装alsa-utils

因为我们已经有wifi了,所以连接网络通过apt-get 方式直接安装,如果没有可以通过buildroot工具中选择安装。

5.3 设置默认声卡

vi /etc/asound.conf

添加如下内容

defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1

接下来就可以使用 aplay或mplayer 来播放使用或音频了:
安装mplayer

sudo apt-get mplayer

播放视频

mplayer 1.mp4 -vo fbdev  -framedrop

播放音频

mplayer 1.mp3

免责声明:文章转载自《小白自制Linux开发板 八. Linux音频驱动配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity3D集成SVN进行版本控制网页中文本朗读功能开发实现下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

win7中USB音箱没有声音解决的方法

Win7装好后,原来在XP中工作正常的USB小音箱却不工作了,重装了声卡驱动还是一样,后来通过下面尝试最终好用了。 1、右键右下角喇叭button。 2、点击“播放设备”。 3、设定USB Audio Device为默认设备。 4、双击USB Audio Device。 5、在弹出的扬声器属性页面点击“增强功能”。 6、选择“禁用全部增强功能”。 7...

STM32CubeMx——串口使用DMA收发数据

用到的是DMA发送数据,DMA接收,在中断回调里发送出去。 一.代码生成 1.按以前的方法设置好时钟和调试方式,这里就不多说了。 2.设置串口1。 3.在DMASetting里点击Add添加USART1_TX,Mode有两种模式,一种是普通模式,使用一次发送语句就发一次,另一种是循环模式,使用一次发送会一直发送。这里发送我选择普通模式,接收选择循环模式...

查看Linux声卡基本信息[转载]

  查看系统版本~$ uname -aLinux laptop 2.6.27-7-generic #1 SMP Tue Nov 4 19:33:20 UTC 2008 i686 GNU/Linux查看型号为ac97的声卡驱动模块~$ modprobe -l | grep ac97/lib/modules/2.6.27-7-generic/kernel/so...

Linux12-内存管理

Linux内核第12章 内核不能像用户空间那样奢侈地使用内存,内核与用户空间不同,它不具备这种能力,它不支持简单便捷的内存分配方式。比如,内核一般不能睡眠,此外处理内存分配错误对内核来说也很困难。正是因为这些限制和内存分配机制不能太复杂,所以在内核中获取内存要比在用户空间复杂得多。 12.1 页 内核把物理页作为内存管理的基本单位。尽管处理器的最小可寻址单...

STM32-ETH-Lwip以太网通信

互联网模型 通信至少是两个设备的事,需要相互兼容的硬件和软件支持,我们称之为通信协议。以太网通信在结构比较复杂,国际标准组织将整个以太网通信结构制定了 OSI 模型,总共分层七个层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信中各司其职,整个模型包括硬件和软件定义。 OSI 模型是理想分层,一般的网络系统只是涉及...

如何在windows xp下实现声音内录

问题描述: 用屏幕录制软件录制一个视频,能够成功录制视频,但无法录制视频里面的声音。 问题原因: 因为现在的多数声卡,均无法直接通过声卡自身的功能实现内录和立体声混音。 这是由于声卡芯片厂商迫于RIAA(Recording Industry Association ofAmerica,美国唱片工业联合会)的压力,及维护音乐版权防止内录的需要,在新推出的声卡...