驱动
_kerneler
这个作者很懒,什么都没留下…
展开
-
linux nand flash常用命令
使用命令前用cat /proc/mtd 查看一下mtdchar字符设备;或者用ls -l /dev/mtd#cat /proc/mtddev: size erasesize namemtd0: 00c00000 00020000 “ROOTFS”mtd1: 00200000 00020000 “BOOTLOADER”mtd2: 00200000 00020000 “KERNEL”mtd3: 03200000 00020000 “NAND ROOTFS partition”mtd4:转载 2020-09-15 14:51:31 · 1080 阅读 · 0 评论 -
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 · 800 阅读 · 0 评论 -
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 · 921 阅读 · 0 评论 -
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 · 1583 阅读 · 0 评论 -
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 · 1737 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
driver:INPUT输入子系统
一、什么是input输入子系统?1、Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄或者是一些输入设备像体感输入等等,Linux系统是如何管理如此之多的不同类型、不同原理、不同的输入信息的输入设备的呢?其实就是通过input输入子系统这套软件体系来完成的。从整体上来说,input输入子系统分为3层:上层(输入事件驱动层)、中层(输入核心层)、下层(输入设备驱动层),如下图所示:联系之前学过的驱动框架做对比,input输入子系统其实就是input输入设备的驱动框架,与之前的学过的驱动框原创 2020-08-05 16:36:01 · 578 阅读 · 0 评论 -
Linux设备与驱动的手动解绑与手动绑定
转自宋宝华微信公众号:Linu阅码场众所周知,Linux靠设备与驱动之间的match,来完成设备与驱动的bind,从而触发驱动的probe()成员函数被执行。每个bus都有相应的match方法,完成match的总的入口函数是:static inline int driver_match_device(struct device_driver *drv, struct device *dev){ return转载 2020-07-20 11:36:01 · 1224 阅读 · 0 评论 -
usb wifi(rtl8192eu)驱动移植 | lsusb命令详解
https://blog.csdn.net/pb09013037/article/details/37760405?spm=a2c6h.13066369.0.0.48a11f00QifRwZhttps://www.cnblogs.com/Erdos001/p/4672827.html原创 2020-06-04 20:07:04 · 713 阅读 · 0 评论 -
i2c-driver学习
整体框架:https://blog.csdn.net/wangpengqi/article/details/17711165linux下CPU注册i2c控制器(adapter)过程https://blog.csdn.net/han_dawei/article/details/8673169?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-4原创 2020-06-01 15:59:37 · 197 阅读 · 0 评论 -
BUG /BUG_ON/ panic /dump_stack
文章出处:http://blog.csdn.net/chenglinhust/article/details/8667400在内核代码中,经常会看到一些调试函数,如BUG,BUG_ON等。使用前,先在内核配置中把kernel debug选上:make menuconfig:kernel hacking–>kernel debug作用:一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息原创 2020-05-18 22:42:03 · 183 阅读 · 0 评论 -
dmesg /kmsg 以及方便调试的方法
dmesg命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。#dmesgmore /var/log/dmesg/proc/kmsg这个文件用于检索用printk生成的内核消息。任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。也可以用系统调用syslog检索这些消息。通常使用工具dmesg或守护进程klogd检索这些消息。#cat /原创 2020-05-15 12:06:21 · 2119 阅读 · 0 评论 -
sd卡,驱动学习
Linux SD卡驱动开发(一) —— SD 相关基础概念:https://blog.csdn.net/zqixiao_09/article/details/51039378?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158873591519725211934214%2522%252C%2522scm%2522%253A%25...原创 2020-05-06 11:35:06 · 383 阅读 · 0 评论 -
Linux driver:completion
在Linux下用于防止竞争的机制包括:信号量,completion,自旋锁。**completion,本质上是一个计数器,**主要用于线程之间的同步。当线程调用wait_for_completion(及其类似函数)检测该计数器为0时,被阻塞,否则往下执行。当一个线程完成工作时,调用complete(_all),增加计数器的值,这样可以唤醒阻塞的线程。注意,complete_all会将计数器设置为一个很大的值(UINT_MAX/2),因此确定没有线程被阻塞后,可以调用reinit_completion重置计原创 2020-05-13 19:48:24 · 288 阅读 · 0 评论