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

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

1. 硬件原理图

对于F1C200s,音频接口如下:HPCOM(HPCOM\HPCOM_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

小白自制Linux开发板 八. Linux音频驱动配置的更多相关文章

  1. 小白自制Linux开发板 三. Linux内核与文件系统移植

    上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...

  2. 小白自制Linux开发板 二. u-boot移植

    上一篇:小白自制Linux开发板 一. 瞎抄原理图与乱画PCB  中我们做了一个小型而没用的开发板,用的是Licheepi Nano的镜像,那从本篇开始我们开始自己构建它的灵魂吧. 我们都知道,PC在 ...

  3. 嵌入式Linux开发板

    嵌入式Linux开发板开发介绍: iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Andro ...

  4. 意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测

    ST公司去年推出了MPU系列芯片,MPU系列不同于以往产品,它既包含有ARM公司Cortex M 单片机核心,也包含有ARM公司Cortex A 应用处理器核心,以期将STM32单片机产品优势扩展到更 ...

  5. Linux开发板(树莓派)和服务器进行双向通信(socket)

    前言 ​ 物联网是目前嵌入开发必备的属性之一,我们常常需要把自己开发板和云端进行交互,本篇博文就记录一下. ​ 使用Socket来实现Linux开发板和服务器进行双向通信,Python中是默认集成了s ...

  6. 嵌入式Linux开发教程:Linux常见命令(上篇)

    摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...

  7. 小白自制Linux开发板 四. 通过SPI使用ESP8266做无线网卡

    本文章基于 WhyCan Forum(哇酷开发者社区) https://whycan.com/t_4149.htmlhttps://whycan.com/t_5870.html整理而成. 为了尊重原作 ...

  8. 小白自制Linux开发板 一. 瞎抄原理图与乱画PCB

    因为墨云是基于高中物理水平的电路知识来学习.而且此前也就玩过树莓派.Esp8266之类的开发板,水平基础趋近于零,所以在写这个系列的时候抱着记录的心态.还望不足之处还望大佬们指正. <论语> ...

  9. 小白自制Linux开发板 九. 修改开机Logo

    许久不见啊,今天我们继续来修改我们的系统. 通过前面的几篇文章我们已经能轻松驾驭我们的开发板了,但是现在都是追求个性化的时代,我们在开发板上打上了自己的Logo,那我们是否可以改变开机启动的Logo呢 ...

随机推荐

  1. Django——Ajax发送请求验证用户名是否被注册

    场景: 用户注册的时候,输入用户名之后,Ajax发送请求到后端,后端验证该用户名是否已经被注册,然后返回到注册页面提示用户. 1.模型: from django.db import models cl ...

  2. 使用Mosquitto实现MQTT客服端C语言

      上一篇文章已经将mosquitto移植到了arm平台上,现在将使用mosquitto完成mqtt客服端的demo,了解过mqtt协议的小伙伴都知道,mqtt主要分为代理服务器.发布者.订阅者三部分 ...

  3. JUnit5 快速入门指南

    1. 安装 在pom中添加依赖 <properties> <junit.jupiter.version>5.3.2</junit.jupiter.version> ...

  4. IKEv2协议协商流程: (IKE-SA-INIT 交换)第一包

    文章目录 1. IKEv2 协商总体框架 2. 第一包流程图 3. openswan源码学习 3.1 ikev2parent_outI1() 3.2 ikev2parent_outI1_withsta ...

  5. MySQL中的查询事务问题

    之前帮同学做个app的后台,使用了MySQL+MyBatis,遇到了一个查询提交的问题,卡了很久,现在有时间了来复盘下 环境情况 假设有学生表: USE test; CREATE TABLE `stu ...

  6. Elasticsearch(ES)的滚动搜索与批量操作

    1. 概述 今天我们来聊一下Elasticsearch(ES)的滚动搜索与批量操作. 2. Elasticsearch(ES)的滚动搜索 2.1 概述  滚动搜索我们经常能够用到,例如:推荐列表,此类 ...

  7. C++ 找零钱方法数

    * 动态规划法 #include "stdafx.h" #include <iostream> #include <vector> using std::v ...

  8. php 日期相关的类 DateInterval DateTimeZone DatePeriod

    * DateInterval <?php /** * Created by PhpStorm. * User: Mch * Date: 7/18/18 * Time: 21:30 */ $dat ...

  9. phpQuery

    以下资料均来自官方文档,官方文档地址:https://code.google.com/archive/p/phpquery/wikis 基础 示例 phpQuery::newDocumentFileX ...

  10. Java线程类

    基础知识 线程状态 根据Thread.State类中的描述,Java中线程有六种状态:NEW,RUNNABLE,WAITING,TERMINATED,BLOCKED. 就绪状态(NEW):当线程对象调 ...