自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 alsa驱动:codec配置通信接口实现(i2c)

Alsa驱动snd_soc_read的底层实现:在分析snd_soc_codec_driver的结构体时,发现有些芯片的驱动中定义了字段reg_word_size, reg_cache_size, reg_cache_default,但没有定义read/write,如wm8993:static struct snd_soc_codec_driver soc_codec_dev_wm8993 = { .probe = wm8993_probe, .remove = wm89

2020-08-27 20:57:48 801

原创 i2c-tools使用及调试

i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以在对应的设备指定寄存器设置值或者获取值等功能。一、下载i2c-tools,交叉编译 (或者直接在openwrt里写个Makefile加个包,省事)1、从开源网站http://dl.lm-sensors.org/i2c-tools/releases/下载i2c-tools,a. 解压后:b. 修改makefile文件。c. 然后保存退出。直接make,进行编译。编译完成后在tools/文件夹下会有如下几个可执行文

2020-08-27 19:39:19 922

转载 MTK: ALSA声卡驱动之四:machine和dai_link的作用和实现

一、模块化管理alsa音频驱动模块化管理,是linux驱动比较典型的代码架构,app调用snd_pcm_open、snd_pcm_writei、snd_pcm_readi等接口到alsa_lib后,也根据一系列的操作(具体详细调用以及设备节点的操作下节会详细解释)后,调用到alsa_soc,这也是alsa驱动架构的核心,一般情况下,这个alsa_soc基本不会变,从而调用到soc_pcm_open、soc_pcm_prepare、soc_pcm_trigger、soc_pcm_ioctl等接口,这里面接

2020-08-25 17:07:13 1585

转载 MTK: ALSA声卡驱动之三:component、dai、codec以及platform之间的关系

一、背景概述上节说到platform_device加载,触发mt76xx_i2s_driver、soc_driver、mt76xx_pcm_driver驱动程序的probe,这里面做了哪些工作,如下图二、snd_soc_component与snd_soc_dai的关系1、mt76xx_i2s_drv_probe的实现在mt76xx_i2s_driver的probe函数里,执行了snd_soc_register_component这个函数,这里面即初始化struct snd_soc_dai *

2020-08-25 17:03:48 1738

转载 MTK:ALSA声卡驱动之二:音频设备与驱动的衔接、注册

1、背景概述本方案基本MT7628平台,wm8960为codecs,i2s总线播放,相关代码随后上传,结合代码进行分析会更清晰2、设备注册与驱动触发综上所述,soc_mtk_i2s_dev、mt76xx_audio_device、soc_mtk_pcm_dev、设备挂载到platform平台上,从而触发mt76xx_i2s_driver、soc_driver、mt76xx_pcm_driver驱动程序的probe,注册挂载相应的dai结构体,codec_wm8960则是挂载在i2c总线上,触发wm8

2020-08-25 16:58:54 1469

转载 MTK: ALSA声卡驱动之一:ALSA架构概述

一、概述1、硬件由上可见,播放音频时,通常CPU通过总线传送给CODEC音频PCM数据,然后CODEC进行DA转换、放大、增益等一系列处理,最后传送给speaker,录音流程反之。2、软件架构用户空间的alsa库对应用程序提供统一的API接口,这样可以隐藏了驱动层的实现细节,简化了应用程序的实现难度。内核空间中,alsa soc其实是对alsa驱动的封装统一,为了兼容不同平台的驱动,同时风格更统一,下面会进一步讨论。3、音频驱动架构音频驱动里有三个很重要的部分,cpu_dai、codec_

2020-08-25 16:56:29 1689

转载 一些笔记:关于mt7628 openwrt 音频调试

没有做过比这版更烂的开发,坑还在,开发还在继续,记一下笔记吧,或许找到一些灵感。先用 mtk-openwrt-sdk-20160324-8f8e4f1e.tar.bz2 这版官方SDK(从官方网站上看这是最新的一版openwrt SDK,2016年的,是的,你没看错),然后i2c都巨艰难的调试出来,因为makefile里dev-i2c.o都被屏蔽了,坑。再接着发现虽说kernel 是 linux-3.10.14,但驱动写法居然是2.6,连dts设备树都没有。换开源的lede-17.01,有设备树,熟悉的

2020-08-20 12:20:38 2157

原创 openwrt:menuconfig添加默认配置选项

转:https://blog.csdn.net/weiniliuchao/article/details/50295527做openwrt 项目的时候,会将代码上库,当其他人下载的时候,为了简单,我们要想办法只执行一个命令就将所有有关项目的配置自动加载。而不需要每编译一次就要重新make menuconfig 重新配置一遍。如果只是单纯的linux内核,直接修改make def_menuconfig就OK了。但是openwrt 没有这些机制。所以我们就需要想办法做一个我们的默认配置出来。下面,介

2020-08-13 10:27:52 1173

原创 ttyS、ttySAC、tty、ttyn区分

1、ttyS串行端口终端(/dev/ttySn)   串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为 那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数

2020-08-07 16:39:00 581

原创 uboot环境变量大全 |如何制作rootfs

1.uboot中的环境变量bootdelay:执行自动启动的等候秒数baudrate:串口控制台的波特率netmask: 以太网接口的掩码ethaddr: 以太网卡的网卡物理地址bootfile: 缺省的下载文件bootargs:传递给内核的启动参数bootcmd:自动启动时执行的命令serverip: 服务器端的ip地址ipaddr: 本地ip 地址stdin: 标准输入设备stdout: 标准输出设备stderr: 标准出错设备  以上是一些基

2020-08-07 16:30:56 338

原创 shell脚本debug(-n / -x /-c)

我们在前面介绍的调试手段是通过修改shell脚本的源代码,从其输出相关的调试信息来定位错误的,那有没有不修改源代码来调试shell脚本的方法呢?有的,那就是使用shell的执行选项,下面将介绍一些常用选项的用法:-n 只读取shell脚本,但不实际执行-x 进入跟踪方式,显示所执行的每一条命令-c “string” 从strings中读取命令“-n"可用于测试shell脚本是否存在语法错误,但不会实际执行命令。在shell脚本编写完成之后,实际执行之前,首先使用”-n"选项来测试脚本是否存在语法错误

2020-08-07 11:52:21 485

原创 openwrt脚本里面的config_get/config_set

来看下shell脚本里面定义的如下函数# config_get <variable> <section> <option> [<default>]# config_get <section> <option>config_get() { case "$3" in "") eval echo "\${CONFIG_${1}_${2}:-\${4}}";; *) eval export ${N

2020-08-07 11:46:54 3146

原创 openwrt下wifi配置详细细节

以Atheros71xx为例,修改路径为:trunk/kernel/mac80211/files/lib/wifi/mac80211.sh代码的尾部即为/etc/config/wireless文件的内容。可修改为出厂时即启动无线,无线的SSID为指定值等等 cat <<EOFconfig wifi-device radio$devidx option type mac80211 option channel ${channel} option hwmode 11${mo

2020-08-07 11:39:18 2829

转载 printf的归宿-数据打印到哪儿了

转自:微信公众号:Linux阅码场近日在一次测试Linux内核路由查找算法的过程中,发现一个printf语句竟然能将性能降低2/3。当然,使用“竟然”一词并不意味着这个问题是第一次发现,我的想法是,把它记录下来,让没有经验的同学对printf知其所以然,同时导出我对“性能攸关”的这类算法中记录日志的一个观点。声明我不会把大段的源代码贴在文章中,而只是希望能通过阐述原理把我的意思表达清楚。诚然,作为程序员没有代码好像一切都会很虚,不过同样的,也是因为代码,总是会把人逼进死胡同,代码只是一种实现,理解了

2020-08-05 17:22:31 196

原创 driver:INPUT输入子系统

一、什么是input输入子系统?1、Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型、不同原理、不同的输入信息的输入设备的呢?其实就是通过input输入子系统这套软件体系来完成的。从整体上来说,input输入子系统分为3层:上层(输入事件驱动层)、中层(输入核心层)、下层(输入设备驱动层),如下图所示:联系之前学过的驱动框架做对比,input输入子系统其实就是input输入设备的驱动框架,与之前的学过的驱动框

2020-08-05 16:36:01 578

原创 【MTK】iwpriv命令详解

文章转自:https://blog.csdn.net/vickytong1018/article/details/70394550?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-

2020-08-05 14:46:30 4071

原创 time--shell保留字输出无法重定向解决

time是一个bash的保留字[root@dy dic]# time sleep 5 >out.txtreal 0m5.001suser 0m0.002ssys 0m0.001s屏幕仍然输出,且out.txt文件为空,重定向失败。使用time sleep 5 2>out.txt命令测试仍然无效。因为time是shell的关键字,shell做了特殊处理,它会把time命令后面的命令行作为一个整体来进行处理,在重定向时,实际上是针对后 面的命令来的,time命令

2020-08-05 12:20:34 252

原创 bash 内建命令、关键、保留字的区别

参考:https://unix.stackexchange.com/questions/267761/differences-between-keyword-reserved-word-and-builtin内建命令指的就是包含在Bash工具包中的命令, 从字面意思上看就是 built in. 这主要是考虑到执行效率的问题,内建命令将比外部命令执行的更快:一部分原因是因为外部命令通常都需要fork出一个单独的进程来执行.一部分原因是特定的内建命令需要直接访问shell的内核部分.当一个命令或者是

2020-08-05 12:10:17 557

原创 Shell重定向(输入输出重定向)

转:https://blog.csdn.net/lz6363/article/details/95813668?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-4-95813668.nonecaseLinux Shell 重定向分为两种,一种输入重定向,一种是输出重定向;从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思。那么,什么是输入输出方向呢?标准的输入输出

2020-08-05 11:42:24 256

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除