linux驱动
文章平均质量分 79
happyguys12345
这个作者很懒,什么都没留下…
展开
-
android底层驱动学习之DebugFS的用法,以及对file_operations的进一步理解
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。那如何交换数据呢?下面请看:1.首先先看定义:static const struct file_operations __fops =原创 2016-12-09 15:06:31 · 864 阅读 · 0 评论 -
android底层驱动学习之调试驱动DEVICE_ATTR的原理及用法
1.首先来看下DEVICE_ATTR的 定义#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)_name:名称,也就是将在sys fs中生成的文件名称。_mode原创 2016-12-08 15:18:28 · 3712 阅读 · 0 评论 -
android底层驱动学习之如何通过debugfs创建文件的方式来调试内核信息
对于驱动的调试,有时我们得通过调试某些IO口,或者一些I2C总线,那我们是不是要通过一些API来操作,但是在用户空间(shell)又不能直接调用该接口,那我们其实也可以通过建立一个debugfs文件结点方式来做。具体如下:1.举个例子来说明,在调试GPIO驱动的时候,我们可以通过debugfs来调试:首先定义一个file_operations:staticconst str原创 2016-12-08 16:22:24 · 705 阅读 · 0 评论 -
android底层驱动学习之从应用程序如何到底层driver的调用
1.首先来看下struct file_operations 的定义:struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);原创 2016-12-08 18:17:46 · 2031 阅读 · 1 评论 -
Linux I2C 几个结构体间的关系以及对于一个I2C设备的移植,我们需要做些什么工作
在Linux内核源代码中的drivers目录下包含一个i2c目录,而在i2c目录下又包含如下文件和文件夹:• i2c-core.c这个文件实现了I2C核心的功能以及/proc/bus/i2c*接口。• i2c-dev.c实 现了I2C适配器设备文件的功能,每一个I2C适配器都被分配一个设备。通过适配器访问设备时的主设备号都为89,次设备号为0~255。应用程序通过 “i2c-%转载 2016-12-09 09:46:41 · 450 阅读 · 0 评论 -
android底层驱动学习之日志信息、printk的个人理解
无论对于什么开发者来说,日志信息都尤为重要,通过日志我们可以更好的分析问题。那下面就然我们来看下:1.平常最常用的printk,你知道多少?①printk是一个什么函数呢-------该函数可以通过具体的格式如:printk(KERN_INFO "comedi%d\n", minor);KERN_INFO ----就是level,信息的级别了。在kernel/pri原创 2016-12-09 16:07:06 · 2448 阅读 · 0 评论 -
Linux 文件系统:procfs, sysfs, debugfs 用法简介
1 前言内核中有三个常用的伪文件系统:procfs,debugfs和sysfs。procfs — The proc filesystem is a pseudo-filesystem which provides an interface to kernel data structures.sysfs — The filesystem for exporting kerne转载 2016-12-14 11:37:33 · 394 阅读 · 0 评论 -
android底层驱动学习之内核信息的输出以及控制方式
1.对于内核信息全部都是通过printk打印的,下面先讲下printk,klogd,syslogd 关系printk ------------> ________________________________ | /proc/kmsg原创 2016-12-15 14:24:24 · 919 阅读 · 0 评论 -
android底层驱动学习之focaltech触屏实例理解
android底层驱动学习之focaltech触屏实例理解 这个星期接触了具体的驱动实例-----focaltech公司的触控IC。下面总结下我个人对于触屏驱动的理解,分为两个方面:硬件方面和软件驱动方面 硬件方面: 1. 简单介绍下触摸屏的发展随着计算机技术的普及,在20世纪90年代初,出现了一种新的人机交互作用技术--触摸屏技术。利用这原创 2016-12-21 16:00:08 · 5159 阅读 · 0 评论 -
android底层驱动学习之工作队列work_queue相关参数
android底层驱动学习之工作队列work_queue相关参数 今早看了与工作队列有关的相关知识,下面总结下:1. 什么是工作队列:工作队列(work queue)是另外一种将工作推后执行的形式。工作队列可以把工作推后,交由一个内核线程去执行—这个下半部分总是会在进程上下文执行,但由于是内核线程,其不能访问用户空间。最重要特点的就是工作队列允许重新调度甚至是睡眠。原创 2016-12-21 16:01:33 · 838 阅读 · 0 评论 -
android底层驱动学习之内存初步
android底层驱动学习之内存初步 1. 首先先认识下几个分配内存的接口函数:l rbuff = kmalloc(len + 4, GFP_KERNEL)GFP_KERNEL是flag,可以通过该flag来设定分配内存的方式,目前这个GFP_KERNEL就是可以睡眠的,优先级普通;如果是GFP_ATOMIC则优先级高,是原子的,不能睡眠. 通过kfree(rbu原创 2016-12-21 16:01:58 · 881 阅读 · 0 评论 -
android底层驱动学习之debug方法(proc、sysfs、debugfs)
android底层驱动学习之debug方法(proc、sysfs、debugfs) 在调试内核驱动程序时,刚开始接触时,不知如何输出自己想要的信息,所以我们需要建立一些debug方法来获取。 下面先说下自己今天学的几种方法: 1. proc文件系统 a. 首先,proc文件系统是个什么东西呢Linux系统上的/proc目录是一种文件系统,即原创 2016-12-21 16:02:29 · 3180 阅读 · 0 评论 -
四、Linux input 子系统学习之input_register_device 分析
我们之前已经说过,input_register_device 的作用就是注册一个 input_device。 在分析input_register_device 之前,我们先搜索一下,究竟哪里会调用这个函数你呢。可以看到很多文件都调用了,我们看到一个熟悉的文件ft5x.c。可以想象到,是在设 备初始化时候,要向input子系统注册一个input_dev,因为只有这样才能用input子系统里面转载 2016-12-08 10:26:39 · 1101 阅读 · 0 评论 -
三、Linux input 子系统学习之register_input_handler 分析
这一篇,我们来分析input_register_handler 这个非常重要的函数。就像之前说过的一样,这是注册一个驱动。 我们去input目录下看看那些文件调用的这个函数,分别有:evdev.c(evdev驱动)、joydev.c(joydev驱动)、keychord.c(按键驱动)、mousedev.c(鼠标驱动)。 也即是每个文件,对于一种驱动,并在里面进行注册驱动。转载 2016-12-08 10:25:52 · 1889 阅读 · 1 评论 -
workqueue及相关API的介绍
一、workqueue简介workqueue与tasklet类似,都是允许内核代码请求某个函数在将来的时间被调用(抄《ldd3》上的)每个workqueue就是一个内核进程。workqueue与tasklet的区别: 1.tasklet是通过软中断实现的,在软中断上下文中运行,tasklet代码必须是原子的-----这个还不懂? workqueue是通过内核转载 2016-12-07 16:44:04 · 303 阅读 · 0 评论 -
android底层驱动学习之I2C概述及工作原理(一)
1.概述:I²C 是Inter-Integrated Circuit的缩写,发音为"eye-squaredcee" or "eye-two-cee" , 它是一种两线接口。I²C 只是用两条双向的线,一条 Serial Data Line (SDA) ,另一条Serial Clock (SCL)。SCL:上升沿将数据输入到每个EEPROM器件中;下降沿驱动EEPROM器件输出数据。(边沿触发)SD转载 2016-12-12 13:29:40 · 2139 阅读 · 0 评论 -
android底层驱动学习之I2C(二)---以C语言理解IIC
为了加深对I2C总线的理解,用C语言模拟IIC总线,边看源代码边读波形:如下图所示的写操作的时序图: 读时序的理解同理。对于时序不理解的朋友请参考“I2C总线之(二)”完整的程序如下: #include#define uchar unsigned char#define uint unsigned int#define wr转载 2016-12-12 13:34:08 · 1269 阅读 · 0 评论 -
linux中断的上半部和下半部
转载自http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=24690947&id=3491821一、什么是下半部中断是一个很霸道的东西,处理器一旦接收到中断,就会打断正在执行的代码,调用中断处理函数。如果在中断处理函数中没有禁止中断,该中断处理函数执行过程中仍有可能被其他中断打断。出于这样的原因,大家都希望中断转载 2016-12-04 13:47:38 · 330 阅读 · 0 评论 -
android底层驱动学习之 module_init的内核调用顺序
1.一个驱动开始总有一 个init函数,那是怎么样实现的呢?可以看到在每个驱动都有module_init(要init的函数指针即函数名),在我focaltech_core.c是这样的:module_init(fts_ts_init);2.追code可以看到以下流程:#define module_init(x) __initcall(x);#d原创 2016-12-05 11:13:22 · 1699 阅读 · 0 评论 -
嵌入式linux驱动开发流程
嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的。设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,完成以下功能:◇ 驱动程序的注册和注销。◇ 设备的打开和释放。◇ 设备的读写操作。转载 2016-12-05 11:37:48 · 698 阅读 · 0 评论 -
android4.0触摸屏(touchscreen)以及屏幕按键驱动解析
转载自:http://www.aiuxian.com/article/p-1888384.html本人用的触摸屏IC是FocalTech公司的ft5306,是一款i2c的电容屏多点触控芯片。对于它的整体驱动官方已经给了,我们就触摸屏和按键部分的代码做相关说明。说明其中应该注意的地方。对于所有的input设备,报告input事件时候都分这么几部分,首先在probe文件中设转载 2016-12-05 15:16:04 · 2930 阅读 · 0 评论 -
android底层驱动学习之设备树驱动及设备匹配过程
问题一:为什么需要设备树?在目前广泛使用的Linux kernel 2.6.x版本中,对于不同平台、不同硬件,往往存在着大量的不同的、移植性差的板级描述代码,以达到对这些不同平台和不同硬件特殊适配的需求。但是过多的平台、过的的不同硬件导致了这样的代码越来越多,比如arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码, platform设备、resou原创 2016-12-05 17:22:23 · 5281 阅读 · 1 评论 -
linux input输入子系统分析《一》:初识input输入子系统
1 开发环境主 机:ubuntu10.04开发板:mini2440内转载 2016-12-06 14:11:50 · 393 阅读 · 0 评论 -
android底层驱动学习之linux输入子系统的理解
1.什么叫输入子系统? 内核的输入子系统是对分散的,多种不同类别的输入设备(如键盘,鼠标,跟踪球,操纵杆,触摸屏,加速计和手写板)等字符设备进行统一处理的一层抽象,就是在字符设备驱动上抽象出的一层。输入子系统包括两类驱动程序:事件驱动程序和设备驱动程序。事件驱动程序负责和应用程序的接口,而设备驱动程序负责和底层输入设备的通信。鼠标事件生成文件mousedev属于事件驱动程序,而P原创 2016-12-06 16:49:10 · 2744 阅读 · 0 评论 -
android底层驱动学习之log的输出
1.对于printk()函数:用法:printk( KERN_DEBUG "Serial: 21285 driver\n");//红色字体为level那么在linux/kernel文件中:#define KERN_EMERG "" #define KERN_ALERT "" #define KERN_CRIT ""原创 2016-12-13 14:39:09 · 2092 阅读 · 0 评论 -
Linux内核中的GPIO系统之(3):pin controller driver代码分析
一、前言对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括:(1)pin multiplexing。基于ARM core的嵌入式处理器一般会提转载 2016-12-07 14:18:08 · 547 阅读 · 0 评论 -
Linux 文件系统:procfs, sysfs, debugfs 用法简介
1 前言内核中有三个常用的伪文件系统:procfs,debugfs和sysfs。procfs — The proc filesystem is a pseudo-filesystem which provides an interface to kernel data structures.sysfs — The filesystem for exporting kerne转载 2016-12-19 15:44:32 · 469 阅读 · 0 评论