Linux驱动
文章平均质量分 71
Linux老A
嵌入式打杂专家
展开
-
ALSA之platform注册过程
一 概述二 cpu的snd_soc_dai driver驱动的注册三 snd_soc_platform_driver的注册一 概述ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,AS...原创 2019-10-11 21:13:28 · 585 阅读 · 0 评论 -
电平触发设备休眠唤醒--输入子系统+内核线程
场景:KEY_A 作为按键,高电平时,设备正常工作,低电平时,设备休眠。KEY_B 作为显示灯,设备工作时为高电平,即亮灯。设备休眠时为低电平,即灭灯。环境为 Android7.1#include <linux/ioctl.h>#include <linux/mm.h>#include <asm/uaccess.h>#include <lin...原创 2019-04-25 17:53:55 · 518 阅读 · 0 评论 -
中断脉冲触发设备休眠唤醒--输入子系统+中断机制+队列
场景 : 使用GPIO_A 作为中断脚检测电平,下降沿触发中断。中断中实现休眠唤醒设备;相关adb 命令:getevent 查看输入设备getevent -l /dev/input/event_n 查看输入设备n上报状态input keyevent 26 :adb休眠命令input keyevent KEYCODE_POWER :adb休眠休眠命令#include <linu...原创 2019-03-22 18:39:32 · 901 阅读 · 0 评论 -
input输入子系统及调试实例简述
一 引入输入子系统的目的二 输入子系统框架三 输入子系统之核心层简述四 输入子系统之事件处理层简述五 输入子系统之驱动层简述一 引入输入子系统的目的个人理解是为了 将输入设备的功能直接提供给用户空间,如果按照普通字符设备的方式编写输入设备,那么我们自己的驱动会生成我们自己命名的设备节点,只有我们自己知道设备节点名称,也就是只有我们自己可以打开这个设备节点,此时这种驱动程序只能自己使用...原创 2019-02-27 10:06:10 · 921 阅读 · 0 评论 -
关于I2C通信BUG小积累之通信频率
I2C的协议网上有很多讲解的非常好,可以参考其他人的总结复习一下协议内容 如:https://blog.csdn.net/lingfeng5/article/details/73361833 。前些日子遇到了一个i2c通讯的问题,耗了不少精力和时间才解决,特地记录一下:场景: RK3288 Android7.1 主板 和 一个普通的i2c外设小板。当外设小板中的信息更新时,会给3288主板发送...原创 2019-01-16 14:12:23 · 2753 阅读 · 1 评论 -
I2C驱动之 sysfs系统设备简写
#include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/cdev.h>#include <linux/ioctl.h>#include <linu...原创 2018-12-25 20:35:36 · 433 阅读 · 0 评论 -
list_for_each_entry解析
list_for_each_entry解析: #define list_for_each_entry(pos, head, member) \ for (pos = list_entry((head)->next, typeof(*pos), member) ; &pos->member != (head) ; pos = list_entry(pos->member...原创 2018-01-29 14:57:08 · 1312 阅读 · 0 评论 -
sysfs属性组创建例程
#include &amp;lt;linux/init.h&amp;gt;#include &amp;lt;linux/module.h&amp;gt;#include &amp;lt;linux/kobject.h&amp;gt;#include &amp;lt;linux/sysfs.h&amp;gt;#include &amp;lt;linux原创 2018-11-13 15:35:28 · 375 阅读 · 0 评论 -
Linux文件系统 devfs/udev/sysfs简述
因为字符设备和块设备都很好的体现了“一切都是文件”的设计思想,所以了解掌握Linux文件系统,设备文件系统就显得很重要了。于是从重新简单的整理了一下 Linux文件系统 devfs/udev/sysfs 等三个系统的特点与联系。devfs文件系统按照时间顺序,devfs(设备文件系统)是由Linux2.4内核引入的,当时被许多工程师基于了高度的评价,devfs的出现使得设备驱动程序能够自主的管...原创 2018-11-16 13:17:24 · 1746 阅读 · 2 评论 -
msm8909之LCD移植简述
高通平台LCD驱动移植简述一:背光配置二:LK部分配置三:Kernel部分配置一:背光配置 : 分为boot 和 kernel 两部分高通LCD背光: 有三种模式: PWM mode :PMIC输出PWM控制背光芯片 DCS mode :通过MIPI配置LCM IC寄存器输出PWM WLED mode :GPIO I2C等控制背光芯片1.1 :b...原创 2018-04-28 16:30:43 · 3479 阅读 · 2 评论 -
Linux摄像头UVC驱动第一篇--UVC驱动简析
目录:一 USB摄像头驱动整体框架二 UVC驱动简析2.1 USB摄像头硬件结构简析2.2 分析UVC驱动调用过程一 USB摄像头驱动整体框架1.构造一个usb_driver2.设置 probe: 2.1. 分配video_device:video_device_alloc 2.2. 设置 .fops ...原创 2019-05-07 11:27:59 · 3597 阅读 · 0 评论 -
Linux摄像头UVC驱动第二篇--描述符分析
目录:回顾步骤 一 :实现USB驱动框架步骤二:添加描述符-打印设备描述符即Device描述符步骤三:添加描述符-打印配置描述符即Configuration描述符步骤四:添加描述符-打印接口联合描述符即IAD/IF描述符步骤五 :添加描述符-打印接口描述符步骤六 :添加描述符-打印UVC设备自定义描述符回顾USB设备驱动内容,一个USB设备,包含如下一系列描述符USB设备标准...原创 2019-05-08 00:01:10 · 1768 阅读 · 0 评论 -
从 UVC lib库 看UVC驱动调用的整体流程
这几天简单的研究了一下某个 UVC lib库,该库直接调用底层UVC驱动,通过JNI 响应APP的操控。内容如下:目录:一 说明二 UVC 初始化概述三 UVC 预览概述四 UVC 拍照概述五 UVC 录像概述六 代码分析一 说明研究 UVC lib库 是为了更好的理解前面学习的UVC驱动,通过研究 UVC lib库,更清楚的了解了 UVC 驱动的操作流程与注意事项。上下层各...原创 2019-09-20 16:37:20 · 2377 阅读 · 0 评论 -
ALSA之Codec注册过程
一 提纲二 概述三 代码分析一 提纲codec 分步骤综述1 定义并且注册 平台驱动 (设备树匹配) struct platform_driver mtk_codec_6331_driver {}2 定义 struct snd_soc_codec_driver soc_mtk_codec{}3 定义 struct snd_soc_dai_driver mtk_63...原创 2019-09-03 20:51:52 · 911 阅读 · 0 评论 -
Camera启动过程简述(MTK)
粗略的梳理了一下MTK平台的camera的启动流程。仅作为个人笔记,排版比较乱,读者请见谅。部分代码如下:c2390mipi_Sensor.c : 设备驱动层kd_camera_hw.c : 负责上电kd_sensorlist.c : 核心层整理开机 camera相关的log可以知道开机过程中主要的的一些操作:1调用 CAMERA_HW_i2C_init()2注册平台设备 g_...原创 2019-08-22 21:39:50 · 3426 阅读 · 0 评论 -
中断线程化简述
在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, tasklet, workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsyste...原创 2019-08-21 16:39:24 · 732 阅读 · 0 评论 -
hrtimer简单使用
hrtimer 是高分辨率kernel定时器。下面是定时器结合工作队列的使用示例static struct work_struct mc3xxx_work;//工作static struct workqueue_struct *mc3xxx_workqueue = NULL;//工作队列static struct hrtimer mc3xxx_bootcheck_kthread_timer...原创 2019-08-21 16:29:15 · 390 阅读 · 0 评论 -
Linux摄像头UVC驱动第六篇--启动传输之分配设置提交URB
本章主要实现 URB 的分配设置以及提交,还有就是实现 mmap() 和 poll()工作:步骤一:分配设置URBmyuvc_queue.urb_buffer[i] = usb_buffer_alloc()说明: 分配usb_buffers 用于USB传输的Buffermyuvc_queue.urb[i] = usb_alloc_urb(npackets, GFP_KERNEL...原创 2019-06-16 23:45:41 · 1883 阅读 · 0 评论 -
Linux摄像头UVC驱动第五篇--启动传输之设置摄像头参数
本章主要实现 myuvc_vidioc_streamon()即启动传输 中的摄像头参数设置向USB摄像头设置参数: 比如使用哪个format, 使用这个format下的哪个frame(分辨率),参考UVC驱动,实现向USB摄像头设置参数的功能,分为如下三部分:步骤一:myuvc_try_streaming_params() ; 测试参数说明:测试参数,代码中只是测试设置了某几个参数,并...原创 2019-06-09 18:12:04 · 7960 阅读 · 1 评论 -
MTK Camera 上电流程简析
一:硬件二:Camera image sensor驱动模块驱动加载三:上电分析一 硬件二 Camera image sensor驱动模块驱动加载//HAl层命令通道static long CAMERA_HW_Ioctl( struct file *a_pstFile, unsigned int a_u4Command, unsigned long a_u4Param){ ...原创 2019-06-13 18:44:40 · 5463 阅读 · 4 评论 -
Linux摄像头UVC驱动第四篇--填充数据传输驱动简单ioctl()
本文代码参考 drivers/media/video/uvc !!!主要工作如下:工作1 填充 .vidioc_querycap cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 工作2 填充 .vidioc_enum_fmt_vid_cap,枚举支持那些格式。 由前面 VS打印的 自定义描述符可知...原创 2019-05-08 03:38:36 · 1654 阅读 · 0 评论 -
Linux摄像头UVC驱动第三篇--实现数据传输驱动总框架
结合USB设备驱动框架,参考前面写的 myvivi.c 首先构建如下UVC驱动框架。需要回顾之前实现的虚拟摄像头驱动 myvivi.c的实现过程。大致思路是:A1 APP 首先会 Open 驱动 A2 第二步 查询摄像头性能,确认该设备是一个视频设备A3 第三步 枚举支持哪种格式A4 第四步 返回当前所使用的格式,了解该视频设备所使用的是哪一种格式A5 第五步 尝试该设备是否支持APP...原创 2019-05-08 01:14:36 · 1992 阅读 · 1 评论 -
msm8909 Android6.0杂记
高通msm8909 Android6.0 笔记(未完)一 : 添加新板二 :DDR配置三 : EMMC && SD card 配置四: GPIO/I2C/SPI/SDIO/UART 配置五 : Lights :背光、摄像机灯光配置六 : 触摸屏配置七 : 虚拟按键配置八 : Connectivity : Bluetooth、Wi-Fi、GNSS配置九: 传感器(...原创 2018-04-28 19:32:49 · 3842 阅读 · 1 评论 -
msm8909矩阵按键驱动笔记
此文章仅作本人自己笔记使用,文章结束部分有本人调试过程,可以借鉴,由于没有仔细排版,所以可阅读性不高,读者见谅!一般按键驱动有两种,一个是矩阵键盘驱动,一个是GPIO接口键盘驱动矩阵键盘路径 : kernel/driers/input/keyboard/matrix_keypad.c :一般用于多按键的情况 (手机)GPIO接口键盘路径 :kernel/driers/inpu...原创 2018-05-04 16:01:46 · 2246 阅读 · 0 评论 -
msm8909 打开debug串口操作
device/qcom/msm8909/BoardConfig.mkBOARD_KERNEL_CMDLINE := console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x3F ehci-hcd.park=3 androidboot...原创 2018-05-05 17:24:35 · 3060 阅读 · 0 评论 -
阻塞操作Demo
Linux设备驱动之阻塞操作原创 2018-01-25 12:04:39 · 340 阅读 · 0 评论 -
设备驱动之阻塞
设备驱动阻塞操作原创 2018-01-25 11:47:41 · 400 阅读 · 0 评论 -
互斥体字符设备Demo
并发控制 互斥体原创 2017-12-26 15:33:15 · 242 阅读 · 0 评论 -
Linux 设备驱动并发控制简述
并发控制 自旋锁 互斥体原创 2017-12-26 15:28:20 · 442 阅读 · 1 评论 -
设备模型数据结构简述
设备驱动模型主要由 :Kset、Kobject、Ktype 三部分组成;设备驱动主要由 :总线、设备驱动、设备 三部分构成;原创 2017-12-15 18:32:55 · 663 阅读 · 0 评论 -
tty系统open流程分析
tty系统open流程分析原创 2017-12-23 15:51:37 · 1026 阅读 · 0 评论 -
tty设备驱动注册简述
tty设备驱动注册简述原创 2017-12-23 14:49:12 · 891 阅读 · 0 评论 -
tty系统框架简述
tty系统框架分析原创 2017-12-23 14:18:41 · 1569 阅读 · 0 评论 -
I2C设备驱动之字符设备简写
最近有机会需要写一个 挂载在I2C总线的I2C设备驱动,外设芯片是MCP23017 IO扩展芯片,测试是否可以通信成功,以下是部分代码以及调试的一些注意项:#include &amp;lt;linux/kernel.h&amp;gt;#include &amp;lt;linux/init.h&amp;gt;#include &amp;lt;linux/module.h&amp;gt;#includ原创 2018-11-05 10:28:21 · 913 阅读 · 0 评论 -
ALSA-ASOC音频驱动框架简述
ALSA-ASOC音频驱动框架简述目录:一:ALSA概述1.1 ALSA概述1.2 ALSA文件框架1.3 从proc文件系统开始入手分析ALSA二:ALSA子设备PCM概述2.1 PCM概述2.2 PCM代码分析三:ALSA子设备control概述四:Asoc框架概述4.4 ASOC-ALSA 之Machine框架分析 4....原创 2018-06-06 20:36:56 · 5682 阅读 · 2 评论 -
高通-LCD驱动框架简述
LCD驱动框架简述目录一 LCD硬件结构框架二 不同的硬件结构LCD的驱动框架简述三 RGB接口LCD驱动简述(以户外手机(Android5.1)为例)3.1 硬件线路框架3.2 软件驱动框架3.2.1 第一层:核心层3.2.2 第二层:FB驱动层3.2.3 第三层:具体LCD驱动///////////////////////////...原创 2018-05-20 20:19:49 · 6565 阅读 · 2 评论