linux驱动
文章平均质量分 76
emtribe
这个作者很懒,什么都没留下…
展开
-
linux 下开机自动加载驱动模块
呼呼,好久不见前一段时间开发了一个linux下的PCI数据采集板卡的驱动,在驱动调试时,一直使用insmod 动态的加载驱动模块(ko文件).现在驱动基本开发结束,要提交给客户,使用insmod加载时,对客户来说不太好,比较麻烦,所以不能采用这种方法。由于刚开始做驱动,还不知道如何在linux启动时自动加载自己的驱动模块,就对自动加载模块这方面深入了一下。最终通过与COT(一个转载 2013-12-26 23:02:56 · 1557 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
目录(?)[-]ARM Device Tree起源Device Tree组成和结构DTS device tree sourceDTC device tree compilerDevice Tree Blob dtbBindingBootloaderDevice Tree引发的BSP和驱动变更常用OF API总结宋宝华 Barry Song 1.转载 2013-03-27 15:11:03 · 674 阅读 · 0 评论 -
platform设备驱动全透析
1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI等的设备而言,这自然不是问题,但转载 2013-03-27 16:14:01 · 412 阅读 · 0 评论 -
《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
目录(?)[-]本章导读Linux字符设备驱动结构cdev结构体分配和释放设备号file_operations结构体Linux字符设备驱动的组成globalmem虚拟设备实例描述globalmem设备驱动头文件宏及设备结构体加载与卸载设备驱动读写函数seek函数ioctl函数使用文件私有数据globalmem驱动在用户空间的验证总结第六章 字符设备驱转载 2013-03-27 15:47:26 · 605 阅读 · 0 评论 -
MID 驱动之二: G-sensor
G-sensor驱动和TP驱动基本是一样的,因为他们都是通过i2c来传输命令和数据,另外都将数据解析后,上报到输入子系统中。整个驱动的流程和TP驱动是一样的,我还是讲整个驱动流程分析一下。驱动入口函数:late_initcall(BMA250_init);进入BMA250_init()函数,开头非常明显定义了三个重要变量struct i2c_board_info info;stru转载 2013-04-09 10:22:13 · 719 阅读 · 0 评论 -
MID 驱动分析之一: TP
决定自己去分析下我工作中会经常涉及到的几个驱动,暂定的有TP(义隆2127),G-SENSOR(bma150),CAMERA(GC0308),CODEC(es8328)这几个驱动吧,因为现在的LCD不需要驱动,而USB-wifi方面,并没有去公开源代码,采用的是直接加载KO文件,所以在USB设备驱动方面,只能更多的参考usb-Skeleton.c这个标准文件。第一节我们分析的是TP的驱动,TP转载 2013-04-09 10:17:11 · 761 阅读 · 0 评论 -
I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
1、在arch/arm/mach-xxx/ 自己的平台文件里添加i2c信息,美其名曰:i2c_board_info例如:static struct i2c_board_info __initdata xxxi2c_board_info[] = { { I2C_BOARD_INFO("abcd1", 0x20), /* 字符串要与后面的匹配,0x20是从设备地址转载 2013-03-21 16:35:38 · 2293 阅读 · 0 评论 -
i2c_driver的注册及probe探测函数调用
在 linux I2C 驱动之----i2c_client 的注册中介绍了i2c_client的注册,现在再来说说i2c_driver的注册过程。 每一个驱动程序都有 module_init(xxxx_init) 这个语句,它代表系统启动的时候会自动执行 xxxx 这个函数,也就是说驱动的人口函数是由module_init来定义的。当然还有module_exit(XXXX),它代表转载 2013-03-21 14:40:14 · 5675 阅读 · 0 评论 -
Linux设备驱动之——input子系统
什么是INPUT Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。linux中input系统主设备号是13次设备号:0-31 j转载 2013-03-21 11:40:09 · 645 阅读 · 0 评论 -
Linux设备驱动之——I2C总线
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。2、I2C总线驱动转载 2013-03-19 17:35:46 · 1357 阅读 · 1 评论 -
Linux芯片级移植与底层驱动(基于3.7.4内核)
Linux Kernel开发2013-01-26 18:401165人阅读评论(0)收藏举报目录(?)[-]SoC Linux底层驱动的组成和现状用于操作系统节拍的timer驱动中断控制器驱动SMP多核启动以及CPU热插拔驱动DEBUG_LL和EARLY_PRINTKGPIO驱动pinctrl驱动clock驱动dmaengine驱动总结宋宝华 BarrySong转载 2013-03-27 15:27:12 · 1136 阅读 · 0 评论 -
linux的初始化函数(late_initcall和module_init)
在init.h 中有如下定义#define pure_initcall(fn) __define_initcall("0",fn,1)#define core_initcall(fn) __define_initcall("1",fn,1)#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)#转载 2013-04-22 11:05:33 · 1768 阅读 · 0 评论 -
MODULE_DEVICE_TABLE
1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pci转载 2013-04-22 14:32:23 · 1004 阅读 · 0 评论 -
autoconf.h
在执行make menuconfig保存配置后会把所有的配置信息保存到源码顶层目录下的.config文件中,然后会根据.config中的内容在include/generated目录下更新autoconf.h文件的内容。autoconf.h中就是C语言用到的所有的在配置过程中产生的宏。autoconf.h文件是自动包含的,不需要C代码文件中显示包含,在内核源码的根目录下的Makefile中实现了自动原创 2014-01-03 17:34:14 · 3198 阅读 · 0 评论 -
USB学习笔记3:端点与传输模式
端点——端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。每个USB 外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具体端点(FIFO)发送数据。每个端点的地址为0 到15,一个端点地址对应一个方向。所以,端点2-IN 与端点2-OUT 完全不同。 每个器件有一个默认的双向控制端点0,因此不存在端点0转载 2013-12-10 23:47:36 · 2285 阅读 · 0 评论 -
Linux下面写i2c设备的驱动-如何枚举产生i2c_client
i2c--2.6.34文档:如何枚举产生i2c_client============================================作者:yuanluluhttp://blog.csdn.net/yuanlulu版权没有,但是转载请保留此段声明============================================转载 2013-12-10 09:49:29 · 826 阅读 · 0 评论 -
linux设备模型之i2c子系统
转载请注明出处:http://www.cnblogs.com/gdt-a20=============================== I2c子系统将i2c控制器(i2c寄存器所在的那块电路)抽象出来,用adapter(适配器)这个结构来描述,可以说一个适配器就代表一条i2c总线,而挂接在i2c总线上的设备是用client这个结构体来表述,另外i2c_bus上的设备链表挂接的转载 2013-12-10 09:45:59 · 861 阅读 · 0 评论 -
设备驱动之一 - linux读写信号量semaphore .
读写信号量(rw_semaphore) 读写信号量对访问者进行了细分,或者为读者,或者为写者,读者在保持读写信号量期间只能对该读写信号量保护的共享资源进行读访问,如果一个任务除了需要读,可能还需要写,那么它必须被归类为写者,它在对共享资源访问之前必须先获得写者身份,写者在发现自己不需要写访问的情况下可以降级为读者。读写信号量同时拥有的读者数不受限制,也就说可以有任意多个读者同时拥有一个读转载 2013-07-06 17:44:06 · 778 阅读 · 0 评论 -
linux电源管理的uevent上报
作为一名嵌入式软件程序猿,很多时候我们都需要知道linux或android等设备的电源使用相关的情况。如是否有充电器连接、是否在充电、是否充满等状态,linux kernel可以通过uevent机制进行上报事件。 源码目录下相关文档: /include/linux/power_supply.h // 公用的一些数据结构等的定义,包括电源的各项属性、状态及读写这些属性的一些接口函原创 2013-05-12 17:25:11 · 3363 阅读 · 0 评论 -
sysfs的uevent及DEVICE_ATTR
sysfs接口函数的建立_DEVICE_ATTR 2012-05-09 11:36:46| 分类:linux文件系统 | 标签:device_attr sysfs接口函数 |字号大中小 订阅说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR,原型是#define DEVICE_ATTR(_name, _mode, _show, _store转载 2013-05-12 17:29:34 · 1085 阅读 · 0 评论 -
使能linux驱动中的dev_dbg .
linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用 printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。 1、打开调试开关:你调试的文件中必然包含了,或者《linux /paltforam_device.h》,后者包含了前者,在包含此头文件之前,使用#define DEBUG 1 来打开调试开关:例如转载 2013-05-12 17:28:00 · 888 阅读 · 0 评论 -
register_chrdev,class_create()
在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_cre转载 2013-05-03 17:57:31 · 2009 阅读 · 0 评论 -
linux 设备驱动
设备驱动最通俗的解释就是“驱使硬件设备行动“。操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并提供统一的操作方式。系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件一样对硬件设备进转载 2013-03-19 17:37:27 · 531 阅读 · 0 评论 -
Linux设备模型之input子系统详解
一:前言 在键盘驱动代码分析的笔记中,接触到了input子系统。键盘驱动,键盘驱动将检测到的所有按键都上报给了input子系统。Input子系统是所有I/O设备驱动的中间层,为上层提供了一个统一的界面。例如,在终端系统中,我们不需要去管有多少个键盘,多少个鼠标。它只要从input子系统中去取对应的事件(按键,鼠标移位等)就可以了。今天就对input子系统做一个详尽的分析。 下面的代码是转载 2013-03-12 16:59:11 · 515 阅读 · 0 评论 -
device number(dev_t)
dev_tdescription: the dev_t type in is used to hold device numbers—both the major and minor parts. header: #include constructor: MKDEV(int major, int minor); method:转载 2013-03-01 16:20:39 · 508 阅读 · 0 评论 -
驱动之hello world
很多人一听到驱动就有种很高深的感觉,为什么装个驱动我的摄像头就有图像了呢,为什么装个操作系统后要装那么多的驱动呢。这里我们一步一步的来了解下linux下的驱动。学过编程语言的第一个接触的必定是一个叫“hello world”的东东。这里我们也来弄一个“hello world”。在真正的写驱动之前我们先了解下linux内核,linux内核采用的是模块化编程,这样可以很容易的添加或删除一个转载 2013-02-27 16:46:05 · 261 阅读 · 0 评论 -
驱动之module_init/module_exit
在前面helloworld的编写里面,我们使用了两个宏分别是module_init和module_exit,这里分析下为什么使用这两个宏。在写模块的时候有两个特殊的函数,分别是init_module和cleanup_module,这两个函数分别在insmod的时候和rmmod的时候调用,并且insmod和rmmod只识别这两个特殊的函数,可是我们前面的例子里面并没有这两个函数。怎么会这样呢,那转载 2013-02-27 16:41:42 · 629 阅读 · 0 评论 -
驱动之设备号
接触过linux的人都知道linux下有七类文件分别是”bcd-lsp”,即b:块设备文件、c:字符设备文件、d:目录、-:普通文件、l:符号链接文件、s:socket文件、p:管道文件。在这些文件里面有连个文件和我们驱动是息息相关的,它们就是字符设备文件和块设备文件。不同于其他文件块设备文件和字符设备文件一般都统一放在/dev目录下。首先我们看看这类文件是如何得到的,在linux下有个命令m转载 2013-02-27 16:39:29 · 344 阅读 · 0 评论 -
一些简单的设备驱动函数
open()函数 功能: 打开设备文件 原型: #include #include #include int open(const char *pathname, int flag);说明: 利用flags指定的属性打开表示pathname上指定字符的转载 2013-02-27 16:37:26 · 265 阅读 · 0 评论 -
I2C设备驱动的编写(二)
前面我们说了如何I2C用户模式驱动,这种驱动基于I2C子系统,但是他对于应用程序开发人员的要求较高,需要应用程序开发人员了解硬件的一些东西,比如时序,地址等等,而多数时候应用程序开发人员是按照操作文件的方法操作设备,所以我们更希望用一些更简单的接口去访问。也就是我们今天的内容——基于I2C子系统的字符驱动。I2C子系统的代码分为三部分如图:Host:主机控制器驱动Device:设备转载 2013-02-27 16:16:28 · 394 阅读 · 0 评论 -
实例解析linux内核I2C体系结构
一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有: ● 思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。第一种方法问题(对应第二种方法的好处)有:转载 2013-02-27 15:57:27 · 373 阅读 · 0 评论 -
Linux的I2C 设备驱动 -- mini2440 上i2c接口触摸屏驱动
本篇记录在友善之臂 mini2440 平台上挂载I2C接口触摸屏的驱动开发过程。内核版本linux-2.6.32.2, 平台是ARM9 S3C2440+I2C接口的触摸屏如上篇Linux的I2C驱动体系结构讲述http://www.lupaworld.com/273398/viewspace-204237.html要挂载新的I2C设备,需要实现3部分:1)转载 2013-02-27 15:41:59 · 673 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员 的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可转载 2013-02-27 15:33:50 · 632 阅读 · 0 评论 -
平台(paltform device)设备的注册
Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性(这些标准接口是安转载 2013-03-04 14:50:26 · 360 阅读 · 0 评论 -
I2C设备驱动的编写(一)
I2C总线是有Philips公司开发的,它是一种比较简单的总线,接线简单:只有两根线数据线(SCL)和时钟线(SDA),控制简单。所以一些封装较小的器件多使用I2C总线,常见的使用I2C总线的设备有EEPROM、rtc及一些传感器。这里我们介绍下基于linux的I2C设备驱动的编写。I2C设备驱动的编写有多种方式:一种是直接操作CPU的I2C控制器,正对于某一个设备写一个字符驱动,这种驱动转载 2013-02-27 17:26:09 · 306 阅读 · 0 评论 -
Linux驱动中的platform
从Linux2.6内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。Linux platform driver 机制和传统的device driver机制(即:通过 driver_regi转载 2013-02-28 15:20:28 · 201 阅读 · 0 评论 -
为Android内核添加新驱动
为Android内核添加新驱动,并提供menuconfig选项为Android的Linux内核2.6.35添加驱动。1. 在drives目录下添加hello目录,内含hello.c Kconfig Makefilehello.c内容: #include #include MODULE_LI转载 2013-02-28 15:21:24 · 282 阅读 · 0 评论 -
Linux Input子系统(1)--概述
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7714188 输入设备总类繁杂,包括按键,键盘,触摸屏,鼠标,摇杆等等,它们本身都是字符设备,不过内核为了能将这些设备的共性抽象出来,简化驱动的开发,建立了一个Input子系统。Input子系统分为三层,从下至上分别是输入设备驱动层,输入转载 2013-03-12 17:11:07 · 425 阅读 · 0 评论 -
Linux Input子系统(2)--设备的注册和打开
水平有限,描述不当之处还请指出,转载请注明出处http://blog.csdn.net/vanbreaker/article/details/7718158 这节结合even handler来分析设备的注册和打开的过程,在设备注册之前,必须先初始化INPUT子系统,由input_init()函数来完成[cpp] view plaincopyprint?转载 2013-03-12 17:09:46 · 537 阅读 · 0 评论 -
如何学习linux设备驱动
Linux系统目前主要维护2.4和2.6两个内核版本,在http://www.kernel.org/ 网站上已经可以下载到最新的2.6内核linux-2.6.38.6,及最新的2.4内核linux-2.4.37.11。稳定版本号基本上是1~3月更新一次,如:2.6.35至2.6.36,升级版本号每1~2周更新一次,如:2.6.35.1至2.6.35.2。 升级后的高版本内核并不完全兼容低版本内核,转载 2013-02-28 15:20:57 · 217 阅读 · 0 评论