Linux设备驱动
文章平均质量分 91
习_霜
这个作者很懒,什么都没留下…
展开
-
Linux字符设备与块设备的区别与比较
Linux中I/O设备分为两类:块设备和字符设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。(1) 字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字符来读写数据。举例来说,调制解调器是典型的字符设备。(2) 块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘是典型的块设备,应用程序可以寻址磁盘上转载 2013-05-05 20:38:43 · 747 阅读 · 0 评论 -
linux字符驱动之poll机制按键驱动
转自:http://blog.csdn.net/lwj103862095/article/details/17536069在上一节中,我们讲解了如何自动创建设备节点,实现一个中断方式的按键驱动。虽然中断式的驱动,效率是蛮高的,但是大家有没有发现,应用程序的死循环里的读函数是一直在读的;在实际的应用场所里,有没有那么一种情况,偶尔有数据、偶尔没有数据,答案当然是有的。我们理想当然的就会想转载 2016-02-22 11:57:04 · 378 阅读 · 0 评论 -
实例解析linux内核I2C体系结构(1)
转自:http://blog.chinaunix.net/uid-21977330-id-3755767.html作者:刘洪涛,华清远见嵌入式学院讲师。一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二转载 2016-03-19 12:57:45 · 535 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(一)
转自:http://www.cnblogs.com/hanyan225/archive/2010/10/20/1857040.html异步通知:很简单,一旦设备准备好,就主动通知应用程序,这种情况下应用程序就不需要查询设备状态,这是不是特像硬件上常提的“中断的概念”。上边比较准确的说法其实应该叫做“信号驱动的异步I/O”,信号是在软件层次上对中断机制的一种模拟。阻塞I/转载 2016-02-22 15:33:10 · 783 阅读 · 0 评论 -
linux字符驱动之异步通知按键驱动
转自:http://blog.csdn.net/lwj103862095/article/details/17538349在上一节里,我们在中断的基础上添加poll机制来实现有数据的时候就去读,没数据的时候,自己规定一个时间,如果还没有数据,就表示超时时间。在此以前,我们都是让应用程序主动去读,那有没有一种情况,当驱动程序有数据时,主动去告诉应用程序,告诉它,有数据了,你赶紧来读吧。答转载 2016-02-22 16:05:04 · 516 阅读 · 0 评论 -
linux字符驱动之同步互斥阻塞按键驱动
转自:http://www.cnblogs.com/liulipeng/p/3335533.html与http://blog.csdn.net/lwj103862095/article/details/17563953其实都是韦东山的教程。上一节里,我们将在上一节的基础上修改驱动,将其修改为有异步通知功能的按键驱动,目标是,按下按键时,驱动主动去通知应用程序。是不是感觉驱动转载 2016-02-23 16:21:01 · 845 阅读 · 0 评论 -
linux字符驱动之定时器去抖动按键驱动
转自:http://blog.csdn.net/lwj103862095/article/details/17589311上一节里,实现同一时刻只能有一个进程使用同一个设备,例如:只能有一个进程,在同一时刻里使用/dev/buttons这个设备。上一节文章链接:http://blog.csdn.net/xishuang_gongzi/article/details/507227转载 2016-02-23 17:20:11 · 510 阅读 · 0 评论 -
linux输入子系统概念介绍
转自:http://blog.csdn.net/lwj103862095/article/details/17733993可以观看韦东山第二期视频--linux输入子系统概念介绍,51cto上本节是免费的。http://edu.51cto.com/course/course_id-1370.html在此文章之前,我们讲解的都是简单的字符驱动,涉及的内容有字符驱动的框架、自动转载 2016-02-24 16:06:33 · 584 阅读 · 0 评论 -
输入子系统架构分析
转自:http://blog.chinaunix.net/uid-20672257-id-3149668.html 内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负转载 2016-02-25 14:29:27 · 402 阅读 · 0 评论 -
linux输入子系统之按键驱动
上一节中,我们讲解了Linux input子系统的框架,到内核源码里详细分析了输入子系统的分离分层的框架等。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17733993这一节,我们来以输入子系统的框架来写一个按键驱动。问:怎么写符合输入子系统框架的驱动程序?答:1. 分配一个input_dev转载 2016-02-25 11:19:13 · 568 阅读 · 0 评论 -
Linux平台总线驱动设备模型
转自:http://blog.csdn.net/lwj103862095/article/details/17957637platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver。Linux 2.6的设备驱动模型中,把I2C、RTC、LCD等都归纳为platform_device。总线将设备和驱动绑定,在系统每注册转载 2016-02-29 11:04:30 · 439 阅读 · 0 评论 -
linux下devicetree中惯用的of函数
转自:http://www.myexception.cn/linux-unix/1910031.htmllinux下devicetree中常用的of函数从device_node中获取信息:int of_property_read_u8_array(const struct device_node *np, const char *propname,u8 *out_value转载 2016-05-25 09:44:18 · 17030 阅读 · 0 评论 -
Android中多点触摸协议
转自:http://blog.csdn.net/tianruxishui/article/details/7173045Android 中多点触摸协议: 参考: http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt 1, 两种多点触摸协议:转载 2016-05-25 10:00:28 · 410 阅读 · 0 评论 -
mipi 调试经验
转自http://blog.csdn.net/g_salamander/article/details/9163455以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式LP(Low-Power) 模式:用于传输控制信号,最高速率 10 MHzHS(Hig转载 2016-07-09 18:45:58 · 553 阅读 · 0 评论 -
Android 5.1高通方案增加GPIO按键
Android的linux kernel本身有GPIO-keys驱动,代码结构和Android 4.x差异较大,在我的MSM8909上,测试表明增加GPIO按键需要如下操作:(转载请注明原文网址 http://blog.csdn.net/tdstds/article/details/50920443)1. 平台相关配置文件msm8909-qrd-skue-项目名.dtsi文件中转载 2016-10-18 16:02:24 · 1811 阅读 · 0 评论 -
i2c设备驱动probe函数中platform_data
i2c设备驱动一般在probe函数的开头都会先获取platform_data数据。1、在没有使用dts的kernel 驱动中,要么直接赋值:client->dev.platform_data = pdata; 要么使用接口设置:platform_device_add_data一般使用如下,例如:struct ad799x_platform_data *pdata = cli原创 2016-10-19 10:42:07 · 4936 阅读 · 3 评论 -
浅析debugfs文件系统调试阶段gpio使用范例
转自:http://dongyulong.blog.51cto.com/1451604/346731浅析debugfs文件系统调试阶段gpio使用范例=========================================================================================我们对debugfs文件系统的应用之1是:drivers转载 2017-11-07 20:12:37 · 412 阅读 · 0 评论 -
Linux-GPIO
转自:http://www.nljb.net/default/Linux-GPIO/可以使用系统中的GPIOLIB模块在用户空间提供的sysfs接口,实现应用层对GPIO的独立控制。使用 Linux Kernel 提供的 sysfs 來控制 GPIO在要寫程式之前,我們先來使用 Linux Kernel 提供的 sysfs 來控制 GPIO。用户空间gpio的调转载 2017-11-07 20:14:52 · 430 阅读 · 0 评论 -
GPIO及中断API函数
转自:http://blog.sina.com.cn/s/blog_a6559d9201015vx9.html#include // 标准 GPIO_API int gpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port,非空的la转载 2016-02-22 10:55:27 · 620 阅读 · 0 评论 -
linux字符驱动之查询按键
转自:http://blog.csdn.net/lwj103862095/article/details/17484041在上一节中,我们讲解了如何自动创建设备节点,并用“最笨”的方法实现点亮LED。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17472455 这一节里,我们基于上一节的基础上,稍微转载 2016-02-22 09:43:14 · 437 阅读 · 0 评论 -
linux字符驱动之中断按键
转自:http://blog.csdn.net/lwj103862095/article/details/17511867在上一节中,我们讲解了如何自动创建设备节点,实现一个查询方式的按键驱动。测试的时候,大家都看到了,使用查询式的方法,占用CPU的利用率高达99%,那么有没有好的办法来取代这惨不忍睹的方法呢?答案当然是有的。上一节文章链接:http://blog.csdn.n转载 2016-02-20 13:54:32 · 722 阅读 · 0 评论 -
linux内核编译__devinit错误解决办法
转自:http://my.oschina.net/zhuanghaoren/blog/314846我是在调试触摸屏的时候出现错误:__devinit error expected ‘=’ ‘ ’ ‘ ’ ‘asm’ or ‘__attribute__’ before然后查到linux kernel3.8以后,把: __devinit, __devinitdata, __devi转载 2015-05-14 13:30:04 · 2271 阅读 · 0 评论 -
Android getevent/sendevent详解
getevent&sendevent 是android系统下的一个工具,可以模拟多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件。 === getevent ===getevent 监控当前的事件,鼠标事件,按键事件,拖动滑动等 dd device 1: /dev/input/event转载 2015-10-10 15:19:26 · 645 阅读 · 0 评论 -
getevent/sendevent 使用说明
转自:http://blog.csdn.net/g_salamander/article/details/8004064这两天准备写一下input子系统的分析,过程中发现了两个好工具,呵呵,就是本文介绍的主角:getevent用于获取当前系统input设备的一些参数和实时事件的数据;sendevent用于发送input事件,这样在调试的时候遇到有的样机按键坏了或者触摸屏坏了就方便了,工转载 2015-10-10 15:20:45 · 866 阅读 · 0 评论 -
request_irq() | 注册中断服务参考
参考 : ARM Linux 中断机制分析.pdflinux-2.6.26内核中ARM中断实现详解(1)一、中断注册方法在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_handler_t handle转载 2015-10-10 15:22:29 · 1728 阅读 · 0 评论 -
linux Gsensor驱动(bma250为例子)
转自:http://blog.csdn.net/laohuang1122/article/details/87735171 Gsensor 驱动概述 本文以Bma250驱动为例子,详细介绍Gsensor设计的一个模板。 gsensor驱动在系统中的层次如下图所示:Gsensor驱动(bma250为例子)" name="image_operate_58691转载 2015-10-10 15:28:17 · 962 阅读 · 0 评论 -
linux下devicetree中常用的of函数
转自:http://www.myexception.cn/linux-unix/1910031.html1、从device_node中获取信息:int of_property_read_u8_array(const struct device_node *np, const char *propname,u8 *out_values, size_t sz);int of转载 2015-12-13 23:01:04 · 395 阅读 · 0 评论 -
Linux驱动修炼之道-SPI驱动框架源码分析(上)
SPI驱动架构,以前用过,不过没这个详细,跟各位一起分享:来自:http://blog.csdn.net/woshixingaaa/article/details/6574215SPI协议是一种同步的串行数据连接标准,由摩托罗拉公司命名,可工作于全双工模式。相关通讯设备可工作于m/s模式。主设备发起数据帧,允许多个从设备的存在。每个从设备有独立的片选信号转载 2015-12-13 23:03:26 · 360 阅读 · 0 评论 -
Linux驱动修炼之道-SPI驱动框架源码分析(中)
来自:http://blog.csdn.net/woshixingaaa/article/details/6574220这篇来分析spi子系统的建立过程。嵌入式微处理器访问SPI设备有两种方式:使用GPIO模拟SPI接口的工作时序或者使用SPI控制器。使用GPIO模拟SPI接口的工作时序是非常容易实现的,但是会导致大量的时间耗费在模拟SPI接口的时序上,访问效率比较低,容易成为转载 2015-12-13 23:04:53 · 356 阅读 · 0 评论 -
linux驱动修炼之道-SPI驱动框架源码分析(下)
来自:http://blog.csdn.net/woshixingaaa/article/details/6574224这篇文档主要介绍spi数据传输过程。当应用层要向设备传输数据的时候,会通过ioctl向设备驱动发送传输数据的命令。如图,向SPI从设备发送读写命令,实际的读写操作还是调用了主机控制器驱动的数据传输函数。transfer函数用于spi的IO传输。但是,t转载 2015-12-13 23:06:37 · 607 阅读 · 0 评论 -
request_threaded_irq函数
Namerequest_threaded_irq — allocate an interrupt lineSynopsisint fsfuncrequest_threaded_irq (unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn,转载 2015-12-17 13:27:29 · 990 阅读 · 0 评论 -
linux下I2C驱动分析2-(1)
转自:http://blog.chinaunix.net/uid-20626696-id-77697.html 在前一篇文章中我们分析了I2C设备驱动的写法,下面我们结合IMX27内部I2C总线驱动的例子来分析适配器驱动也就是总线驱动的具体写法。 1. 首先我们看看总线驱动的模块加载函数: static struct platform_driver mxci2c_d转载 2016-01-21 15:27:31 · 406 阅读 · 0 评论 -
linux下I2C驱动分析1
转自:http://blog.chinaunix.net/uid-20626696-id-77696.html这几篇文章来分析下linux2.6下I2C驱动的写法,对个人也是一个学习的过程。 在linux系统下,i2c驱动架构分为三个部分:I2C核心、I2C总线驱动、I2C设备驱动,下面首先从设备驱动怎么写开始,主要是分析内核中的代码。本文中分析的内核代码是基于LINUX2转载 2016-01-21 15:29:01 · 373 阅读 · 0 评论 -
(void __user *)arg 中__user的作用
__user宏简单告诉编译器(通过 noderef)不应该解除这个指针的引用(因为在当前地址空间中它是没有意义的)。 (void __user *)arg 指的是arg值是一个用户空间的地址,不能直接进行拷贝等,要使用例如copy_from_user,copy_to_user等函数。默认是内核空间,因为这是驱动,是在内核空间运行的。 直接拷贝不了,因为一个是转载 2016-02-17 15:13:54 · 2579 阅读 · 0 评论 -
linux字符驱动之初见
转自:http://blog.csdn.net/lwj103862095/article/details/17468587学习驱动也有长达一年多的时间了,受益最深的就是看韦东山老师的视频,如今已经几乎将二期三期的视频全部看完,甚至已经将二期视频看过好几遍,为了再次加深印象,我将韦老师的源码自己全部编写一遍。将所有遇到的问题,记录在此。觉得看了韦老师的视频,再看其他视频都是弱爆了。由于是转载 2016-02-19 11:23:00 · 394 阅读 · 0 评论 -
linux字符驱动之自动创建设备节点
转自:http://blog.csdn.net/lwj103862095/article/details/17470573上一节中,我们是手工创建设备节点,大家肯定也会觉得这样做太麻烦了。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17468587问:能不能让系统自动创建设备节点?答:可以,转载 2016-02-19 11:25:26 · 399 阅读 · 0 评论 -
linux字符驱动之点亮LED
转自:http://blog.csdn.net/lwj103862095/article/details/17472455上一节中,我们讲解了如何自动创建设备节点,这一节我们在上一节的基础上,实现点亮LED。上一节文章链接:http://blog.csdn.net/lwj103862095/article/details/17470573驱动里面能够用很多种方法实现LE转载 2016-02-19 11:27:17 · 477 阅读 · 0 评论 -
[经典]Linux内核中ioremap映射的透彻理解
转自:http://blog.csdn.net/do2jiang/article/details/5450839几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处转载 2016-02-19 11:32:44 · 380 阅读 · 0 评论 -
ARM Linux内核驱动异常定位调试--反汇编arm-linux-objdump
转自:http://blog.csdn.net/gqb_driver/article/details/17719625ARM Linux内核驱动异常定位方法分析--反汇编方式最近在搞Atmel 的SAM9x25平台,Linux系统,用于工业设备。这也是我首次参与工业设备的研发。在调试Atmel SAM9x25的Linux串口设备的时候,发现无论是读还是写,都会产生异常。相关的异常信息如下:====...转载 2018-03-15 20:45:54 · 892 阅读 · 0 评论