zoukankan      html  css  js  c++  java
  • 小白自制Linux开发板 八. Linux音频驱动配置

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

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

    1. 硬件原理图

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

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

    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

     配置dma

    Device Drivers 
       <*> DMA Engine support

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

    make clean

    然后在重新进行编译

    make

    5. 配置默认声卡

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

     

    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


    NetAnalyzer下载地址

    NetAnalzyer交流群:39753670 (PS 只提供交流平台,群主基本不说话^_^)

    [转载请保留作者信息  作者:冯天文 ]


  • 相关阅读:
    fstab是什么?被谁用?怎么写?
    一个驱动导致的内存泄漏问题的分析过程(meminfo->pmap->slabtop->alloc_calls)
    Ubuntu下doxygen+graphviz使用概录
    记录Ubuntu下使用docker使用
    hidraw设备简要分析
    一个版本烧录过程中记录:fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img
    bootrom/spl/uboot/linux逐级加载是如何实现的?
    Linux uevent分析、用户接收uevent以及mdev分析
    sched_yield()和nanosleep()对进程调度的影响
    Linux Thermal Framework分析及实施
  • 原文地址:https://www.cnblogs.com/twzy/p/15356109.html
Copyright © 2011-2022 走看看