一、AC108驱动移植

1、驱动添加

cp r18/lichee/linux-4.4/sound/soc/codecs/ac108.* a64/linux-3.10/sound/soc/codecs/

2、Kconfig、Makefile修改

linux-3.10\sound\soc\codecs\Kconfig修改:

menu "CODEC drivers"

config SND_SOC_ALL_CODECS

# ac108 config

config SND_SOC_AC108

tristate "ac108 mic array "

depends on ARCH_SUN50IW1

select SND_SUNXI_SOC_SUNXI_DAUDIO

default n

help

say Y or M if you want to add support for AC108.

endmenu

r18 sound/soc/codecs/Kconfig配置

SND_SUNXI_SOC_SUNXI_DAUDIO

ac108添加

Device Drivers  --->

<*> Sound card support  --->

<*>   Advanced Linux Sound Architecture  --->

<*>   ALSA for SoC audio support  --->

CODEC drivers  --->

<*> ac108 mic array

sunxi-snddaudio0添加

Device Drivers  --->

<*> Sound card support  --->

<*>   Advanced Linux Sound Architecture  --->

<*>   ALSA for SoC audio support  --->

<*>   ASoC support for SUNXI  --->

<*>   ASoC support for daudio0 machine

二、buildroot

https://www.cnblogs.com/zhangshenghui/p/11008115.html

三、耳机喇叭驱动

查看A64开发板声卡驱动

在linux-3.10内核代码中搜索audiocodec关键字,查找到如下:

推断在sunxi_sndcodec.c中,查看linux-3.10\sound\soc\sunxi\目录下Kconfig和Makefile查看内核配置信息打开。

四、内核配置文件

1、驱动设备树

linux-3.10/arch/arm64/boot/dts/sun50iw1p1.dtsi

五、R18 ac108、tas5731驱动

ac108 驱动目录:

linux-4.4\sound\soc\codecs\ac108.c

tas5731驱动目录:

linux-4.4\sound\soc\codecs\tas5731.c

sun50iw1p1-tulip-noma.dts文件查看设备树配置:

跟踪查找snddaudio-codec-dai关键字,sunxi-snddaudio.c

查看 /proc/asound/cards文件

在SDK 查找 sndac10810035发现:

ERROR (duplicate_label): Duplicate label 'twi0' on /soc@01c00000/twi@0x0x01C2AC00 and /soc@01c00000/twi@0x01c2ac00

ERROR: Input tree has errors, aborting (use -f to force output)

make[1]: *** [arch/arm64/boot/dts/sun50iw1p1-soc.dtb] Error 2

六、adb

参考网站:

https://www.cnblogs.com/zengjfgit/p/6289873.html

1. 编译拷贝模块:make modules && make modules_install INSTALL_MOD_PATH=~/rootfs

2. modprobe g_ffs idVendor=0x18d1 idProduct=0x4e42 iSerialNumber="buildroot"

3. mkdir -p /dev/usb-ffs/adb

4. mount -t functionfs adb /dev/usb-ffs/adb -o uid=2000,gid=2000

5. adbd &

6. 插上USB OTG线,会先安装驱动,安装完成后,可以使用adb工具了。
    7. Ubuntu里可以直接安装一下android adb tool就可以连接了。

备份:

改后:

七、A64喇叭播放

amixer cset name='Earpiece Switch' 'on'

amixer cset name='earpiece volume' '31'

aplay music_16_2.wav &

喇叭和耳机同时播放,Earpiece Switch控制开关,earpiece volume控制音量

八、A64移植tina系统

ERROR: "sunxi_wlan_get_oob_irq_flags" [drivers/net/wireless/bcmdhd/bcmdhd.ko] undefined!

ERROR: "sunxi_wlan_get_bus_index" [drivers/net/wireless/bcmdhd/bcmdhd.ko] undefined!

ERROR: "sunxi_wlan_set_power" [drivers/net/wireless/bcmdhd/bcmdhd.ko] undefined!

ERROR: "sunxi_wlan_get_oob_irq" [drivers/net/wireless/bcmdhd/bcmdhd.ko] undefined!

make[6]: *** [__modpost] Error 1

make[5]: *** [modules] Error 2

make[5]: Leaving directory `/home/danny/share/allwinner/sdk/A64/r18_tina/lichee/linux-4.4'

make[4]: *** [/home/danny/share/allwinner/sdk/A64/r18_tina/out/tulip-noma/compile_dir/target/linux-tulip-noma/linux-4.4.89/.image] Error 2

make[4]: Leaving directory `/home/danny/share/allwinner/sdk/A64/r18_tina/target/allwinner/tulip-noma'

make[3]: *** [install] Error 2

make[3]: Leaving directory `/home/danny/share/allwinner/sdk/A64/r18_tina/target/allwinner'

make[2]: *** [target/allwinner/install] Error 2

make[2]: Leaving directory `/home/danny/share/allwinner/sdk/A64/r18_tina'

make[1]: *** [/home/danny/share/allwinner/sdk/A64/r18_tina/out/tulip-noma/staging_dir/target/stamp/.target_install] Error 2

make[1]: Leaving directory `/home/danny/share/allwinner/sdk/A64/r18_tina'

make: *** [world] Error 2

九、麦克风采集与喇叭播放放到I2S0上

static void sunxi_daudio_txctrl_enable(struct sunxi_daudio_info *sunxi_daudio,

int enable)

static void sunxi_daudio_rxctrl_enable(struct sunxi_daudio_info *sunxi_daudio,

int enable)

pinctrl_select_state

static int sunxi_daudio_dai_startup(struct snd_pcm_substream *substream,

struct snd_soc_dai *dai)

(十二)A64的更多相关文章

  1. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  2. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  4. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  5. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  6. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  7. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

  8. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  9. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  10. AngularJs的UI组件ui-Bootstrap分享(十二)——Rating

    Rating是一个用于打分或排名的控件.看一个最简单的例子: <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" x ...

随机推荐

  1. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  2. C#程序 界面显示运行信息

    1.使用RichTextBox,难免要在多线程调用,所以需要委托. Color定义此条信息用什么颜色显示.可以不同的颜色显示不同的信息. private void ShowMsg(Color colo ...

  3. MySQL创建用户、授权、删除

    1.在MySQL中创建新用户 使用具有shell访问权限的root用户登录MySQL服务器并创建名为“rahul”的新用户.下面的命令只允许从localhost系统访问用户rahul的MySQL服务器 ...

  4. 【编程开发】MD5和RSA

    MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. (1)MD5 MD5(单向散列算法)的全称是Message-Di ...

  5. Python报错:TypeError: data type not understood

    K-Means聚类算法 def randCent(dataSet, k): m, n = dataSet.shape # numpy中的shape函数的返回一个矩阵的规模,即是几行几列 centrod ...

  6. IO阻塞模型、IO非阻塞模型、多路复用IO模型

    IO操作主要包括两类: 本地IO 网络IO 本地IO:本地IO是指本地的文件读取等操作,本地IO的优化主要是在操作系统中进行,我们对于本地IO的优化作用十分有限 网络IO:网络IO指的是在进行网络操作 ...

  7. <cctype>的用法

    #include<cctype> 1.isalnum() 检查字符c是十进制数还是大写还是小写字母.如果是,则返回true:如果不是,则返回false. 2.isalpha() 检查字符c ...

  8. Mybatis插件之Mybatis-Plus的CRUD方法

    使用Mybatis-plus进行基本的CRUD(增查改删)操作. 实体类(User)代码: import com.baomidou.mybatisplus.annotation.IdType; imp ...

  9. Java核心第五章继承

    5.1类 超类(父类.基类)  子类(派生类) 使用关键字extends来继承 对于子类想访问父类的私有域,则必须要借助公有接口,在父类中的公有方法正是这样的接口 为了防止子类定义了与父类一样的成员函 ...

  10. 《鸟哥的Linux私房菜:基础学习篇》读书笔记之第一部分

    一.如何学习Linux 1. Linux基础知识 (1) 计算机概论与硬件相关知识. (2) 先从Linux的安装与命令学起. (3) Linux操作系统的基础技能.如用户/用户组.权限.程序等概念. ...