Linux Driver
文章平均质量分 88
Linux学习之路
这个作者很懒,什么都没留下…
展开
-
一款特殊的LCD屏幕驱动调试
一款特殊的LCD屏幕驱动调试问题分析这款LCD屏幕的有效显示区域为 480 * 1280, 但是它的timing时序却是600 * 1280。时序要求600 * 1280意味着主控需要通过物理接口输出600 * 1280的图像,然而LCD的背板芯片会剪裁掉左右两侧各60像素,得到480 * 1280的显示区域。那么我们的LCD屏幕参数该如何配置?Framebuffer的参数该如何配置?Framebuffer 配置成 600 * 1280,请应用层同学自行解决,画UI的时候画600*1280的。原创 2021-06-04 14:22:36 · 874 阅读 · 0 评论 -
USB驱动——鼠标驱动程序(中断传输)
本文以 usbmouse.c 为例,简单分析usb鼠标驱动程序。static int __init usb_mouse_init(void){ int retval = usb_register(&usb_mouse_driver); if (retval == 0) printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"原创 2016-07-20 17:46:19 · 3770 阅读 · 0 评论 -
USB驱动——键盘驱动(控制传输)
本文以 usbkbd.c 为例,分析 usb 键盘驱动程序。static int __init usb_kbd_init(void){ int result = usb_register(&usb_kbd_driver); if (result == 0) printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" DRIV原创 2016-07-21 12:25:56 · 5620 阅读 · 2 评论 -
UVC 摄像头驱动(一)硬件描述
虚拟摄像头驱动vivi内核中使用 video_device 结构来描述一个 video 设备,以虚拟摄像头驱动 vivi 为例,整体框架无非是:分配一个 video_device设置 video_device 的众多的 ioctl 等注册 video_register_device对于一个虚拟摄像头驱动来说,上层应用程序无论是来查询视频格式,还是设置格式,我们都是伪造的,视频缓冲区的数据也更原创 2016-11-12 23:12:53 · 9786 阅读 · 2 评论 -
USB驱动——描述符、URB、管道
大家常说,一个设备通常有多个配置,配置通常有多个接口,接口通常有多个端点。接口代表逻辑上的设备,比如声卡分为 录音和播放。访问设备时,访问的是某个接口(逻辑设备)。除了端点0之外,每个端点只支持一个传输方向,一种性质的传输传输数据时,读写某个端点,端点是数据通道。 本文首先分析设备、配置、接口、设置、端点之间的关系,然后根据 2440-ochi 驱动程序,分析一个设备注册到内核时,它的这原创 2016-07-19 11:44:03 · 8427 阅读 · 0 评论 -
V4L2(三)编写虚拟摄像头驱动
内核版本:linux-3.5 开发板:tiny4412概述前面简单分析了内核中虚拟摄像头驱动 vivi 的框架与实现,本文参考 vivi 来写一个虚拟摄像头驱动,查询、设置视频格式相对简单,难点在于 vb2_buf 的处理过程。数据采集流程分析 在我的程序中,大概的数据采集流程如上图所示,启动视频采集之后,创建了一个内核线程,内核线程每30ms 唤醒一次,每一次唤醒都会尝试用 queue_原创 2016-11-12 15:04:24 · 5012 阅读 · 1 评论 -
设备树学习文章分享
分享一下学习设备树过程中看过的文章,写的都非常好,是难得的设备树学习资料。另外,有个内核开发者讲的设备树也非常好,视频有1小时20多分钟,只不过他语速太快了,接受不了,但是ppt还是不错的,可以谷歌一下Device Tree for Dummies * Device tree 背景介绍 * Device Tree Usage翻译 * 设备树解析过程 * 基于tiny4412的Linu原创 2016-12-23 20:41:22 · 2867 阅读 · 0 评论 -
Linux Platform devices 平台设备驱动
platform平台设备驱动是基于设备总线驱动模型的,它只不过是将 device 进一步封装成为 platform_device,将 device_driver 进一步封装成为 platform_device_driver,前面已经分析过设备总线驱动模型,关于device 与 device_driver 的注册过程以及它们在sysfs文件系统中的层次关系就不在分析,本文重点分析platform平台原创 2016-06-08 01:31:18 · 27341 阅读 · 6 评论 -
设备树学习之(十三)电容触摸屏驱动
开发板:tiny4412SDK + S702 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 busybox版本:busybox 1.25友善之臂提供的资料中,触摸屏驱动采用的是一线触控,但是保留了i2c接口,驱动芯片为FT5406,本文主要实现 i2c 接口的原创 2017-02-16 18:05:51 · 6967 阅读 · 1 评论 -
Android led_class driver
Linux的led class驱动echo 255 > /sys/class/leds/led1/brightnesscat /sys/class/leds/led1/brightnesscat /sys/class/leds/led1/max_brightness闪烁echo timer > /sys/class/leds/led1/trigger原创 2017-06-11 21:13:10 · 1432 阅读 · 0 评论 -
电阻屏校正 tslib 五点校正算法
#include struct calibration { int x[5]; int y[5]; int xfb[5]; int yfb[5]; int a[5];};struct calibration cal;int perform_calibration(struct calibration *cal) { int j; float n原创 2017-07-22 12:51:19 · 5394 阅读 · 1 评论 -
USB主机控制器驱动——OHCI分析
首先,整个驱动框架的开始,是基于 platform 平台总线的。struct platform_device s3c_device_usb = { .name = "s3c2410-ohci", .id = -1, .num_resources = ARRAY_SIZE(s3c_usb_resource), .resource = s3c_usb_resource,原创 2016-07-18 22:34:05 · 9730 阅读 · 1 评论 -
V4L2(二)虚拟摄像头驱动vivi深入分析
前面一篇文章中,简单分析了 V4L2 大框架,本文借助内核中的虚拟摄像头驱动 vivi 来分析一个完整的摄像头驱动程序。vivi 相对于后面要分析的 usb 摄像头驱动程序,它没有真正的硬件相关层的操作,也就是说抛开了复杂的 usb 层的相关知识,便于理解 V4L2 驱动框架,侧重于驱动和应用的交互。 前面我们提到,V4L2 的核心是 v4l2-dev.c 它向上提供统一的文件操作接口 v4原创 2016-11-06 23:14:10 · 8515 阅读 · 2 评论 -
tty初探—uart驱动框架分析(二)uart_add_one_port
在前面的一篇文章中,我们分析了一个 uart_driver 的向上注册过程,主要是 tty 的一些东西,知道了 tty 注册了一个字符设备驱动,我们在用户空间 open 时将调用到 uart_port.ops.startup ,在用户空间 write 则调用 uart_port.ops.start_tx ,还知道了如何 read 数据等等。但是,这些都是内核帮我们实现好的,在真正的驱动开发过程中几原创 2016-07-01 19:24:58 · 14416 阅读 · 8 评论 -
i2c驱动程序全面分析,从adapter驱动程序到设备驱动程序
开发板:mini2440内核版本:linux2.6.32.2内容概括: 1、adapter client 简介 2、adapter 驱动框架 2.1 设备侧 2.2 驱动侧 2.2.1 probe 函数 2.2.1.1 注册adapter new_device de原创 2016-06-16 21:47:39 · 20053 阅读 · 2 评论 -
PCI驱动框架简单分析
一、PCI 概念介绍 PCI是CPU和外围设备通信的高速传输总线。PCI规范能够实现32位并行数据传输,工作频率为 33MHz 或 66MHz ,最大吞吐率高达266MB/s,PCI的衍生物包括 CardBus、mini-PCI、PCI-Express、cPCI等。 PCI总线体系结构是一种层次式的体系结构。在这种层次体系结构中,PCI桥设备占据着重要的地位,它将父总线与子总线原创 2016-07-05 14:34:32 · 19609 阅读 · 0 评论 -
I2C协议->裸机程序->adapter驱动程序分析
开发板:mini2440内核 :linux2.6.32.2参考 :韦东山毕业班I2C视频教程1、i2c协议简要分析 i2c中线是一种由 PHILIPS 公司开发的串行总线,用于连接微控制器及其外围设备,它具有以下特点。 1、只有两条总线线路:一条串行数据线SDA,一条串行是中线SCL。 2、每个连接到总线的器件都可以使用软件根据原创 2016-06-19 20:24:24 · 6959 阅读 · 0 评论 -
spi驱动框架全面分析,从master驱动到设备驱动
内核版本:linux2.6.32.2 硬件资源:s3c2440参考: 韦东山SPI视频教程内容概括: 1、I2C 驱动框架回顾 2、SPI 框架简单介绍 3、master 驱动框架 3.1 驱动侧 3.2 设备侧 4、SPI 设备驱动框架 4.1 设备层4.2 驱动层 5、设备原创 2016-06-22 19:24:40 · 18772 阅读 · 2 评论 -
Linux驱动之输入子系统框架
好记性不如烂笔头,整理一下笔记~ Linux驱动之输入子系统框架输入子系统将该类驱动划分为3部分1、核心层 input.c2、设备层 Gpio_keys.c ...3、事件处理层 Evdev.c事件处理层为纯软件的东西,设备层涉及底层硬件,它们通过核心层建立联系,对外提供open write等接口。1、我们首先来看,核心层 input.c如何向外界提原创 2016-05-26 17:06:04 · 11061 阅读 · 0 评论 -
输入子系统 input_match_device 匹配过程剖析
在刚开始学习驱动程序的时候,分析过输入子系统 dev handler 它们之间的关系,现在回过头来复习时,发现当初并没有总结 dev 和 handler 具体的匹配过程,它们是一对一的关系,还是可以多对多? 为什么会想到这个问题呢,是因为曾经在 2440 平台上做按键输入子系统驱动实验时发现按键上报的数据可以从tty1 中 cat 到,也可以从 inputn 中 cat 到。原创 2016-09-20 21:33:20 · 3244 阅读 · 1 评论 -
浅析字符设备驱动程序__register_chrdev_region
在 2.4 的内核我们使用 register_chrdev(0, "hello", &hello_fops) 来进行字符设备设备节点的分配,这种方式每一个主设备号只能存放一种设备,它们使用相同的 file_operation 结构体,也就是说内核最多支持 256 个字符设备驱动程序。 在 2.6 的内核之后,新增了一个 register_chrdev_region 函数,它支持将同一个主设备号下的次设备号进行分段,每一段供给一个字符设备驱动程序使用,使得资源利用率大大提升,同时,2.6 的内核保留了原有原创 2016-09-29 01:15:30 · 20899 阅读 · 3 评论 -
V4L2(一)框架浅析
V4L2 :video for linux version 2 ,是 linux 里一套标准的视频驱动,它支持 uvc 标准的摄像头。本文来分析一下它的核心框架。 整个v4l2的框架分为三层: 在应用层,我们可以在 /dev 目录发现 video0 类似的设备节点,上层的摄像头程序打开设备节点进行数据捕获,显示视频画面。设备节点的名字很统一,video0 video1 vi原创 2016-11-01 21:35:00 · 7815 阅读 · 1 评论 -
块设备驱动程序概念介绍
系统中能够随机访问都顶大小数据片的设备被称作块设备,这些数据片就称作块。最常见的块设备事硬盘。注意,它们都是以安装文件系统的方式使用的——这也是块设备通常的访问方式。 另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就属于字符设备。 这两种设备的根本区别在于它们是否可以被随机访问。内核管理块设备比字符设备复杂的多,有一个专门的子系统来管理块设备和原创 2016-10-06 17:35:34 · 2028 阅读 · 0 评论 -
块设备驱动程序分析
字符设备三部曲: alloc_chrdev_region(&devid, 0, HELLO_CNT, "hello"); cdev_init(&hello_cdev, &hello_fops); cdev_add(&hello_cdev, devid, HELLO_CNT); 块设备: major = register_blkdev(0, "r原创 2016-10-06 17:36:31 · 2483 阅读 · 2 评论 -
tty初探—uart驱动框架分析
本文参考了大量牛人的博客,对大神的分享表示由衷的感谢。主要参考: tty驱动分析 :http://www.wowotech.net/linux_kenrel/183.html Linux TTY驱动--Uart_driver底层:http://blog.csdn.net/sharecode/article/details/9196591 Linux TTY驱原创 2016-06-28 13:23:16 · 27558 阅读 · 11 评论