linux driver
文章平均质量分 89
aaronychen
性格适中,爱好运动
展开
-
Linux I2C核心、总线与设备驱动
第十五章 Linux I2C核心、总线与设备驱动本章导读I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设备驱动。这3转载 2008-01-29 17:29:00 · 3205 阅读 · 1 评论 -
Qualcomm usb modem驱动小结
Qualcomm usb modem驱动小结前段时间再为我们公司的模块产品sim5210写linux下的驱动, sim5210使用的是qualcomm的6280芯片, 该平台提供了USB功能, 并再USB之上提供了modem, diag, nmea等设备接口, 即再usb之上我们的模块实现了modem功能, diag(诊断)功能, nmea(gps)功能, 由于在linux下有现成的标准CDC原创 2008-04-09 16:51:00 · 16614 阅读 · 6 评论 -
Linux I2C核心、总线与设备驱动
第十五章 Linux I2C核心、总线与设备驱动本章导读I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设转载 2008-05-12 16:56:00 · 5418 阅读 · 1 评论 -
用GPIO模拟SPI协议的实现
用GPIO模拟SPI协议的实现一 SPI协议概括SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的原创 2008-06-20 09:58:00 · 12108 阅读 · 5 评论 -
USB MS驱动总结
USB MS驱动总结Author: aaron 1 概述Usb masstorage设备即USB的存储设备如U盘等, 该种设备严格按照USB规范来设计,制造,因此要写该类设备的驱动必须要对USB规范等相关原理熟悉.USB总线规范定义所有USB设备都必须遵守的规则, 而USB设备又有很多种类如存储设备,网络设备,音频设备等, 每一种这样的设备类都有自己的一个规范,原创 2008-11-19 10:23:00 · 2842 阅读 · 0 评论 -
GPIO-KEY的实现原理及使用方法
本文将以imx6q的板子和相应BSP代码来详细描述在linux下, 使用GPIO当做按键的实现原理及使用方法。Linux 内核下的 drivers/input/keyboard/gpio_keys.c实现了一个体系结构无关的GPIO按键驱动,使用此按键驱动,只需在相应的板级支持包中(imx6q的是board-mx6q-sabresd.c)定义相关的数据即可。驱动的实现非常简单,但是较适合于实现原创 2016-01-22 09:25:36 · 19608 阅读 · 1 评论 -
嵌入式系统下对GPIO的简单操作
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入 Device Drivers —> GPIOSupport —>原创 2016-01-07 14:21:17 · 10229 阅读 · 0 评论 -
应用程序和驱动中使用I2C的流程
应用程序和驱动中使用I2C的流程编写I2C设备驱动有两种方法。一种是利用系统给我们提供的i2c-dev.c来实现一个i2c适配器的设备文件。然后通过在应用层操作i2c适配器来控制i2c设备。另一种是为i2c设备,独立编写一个设备驱动。注意:在后一种情况下,是不需要使用i2c-dev.c的。前一种方法也就是说只要系统实现了I2C适配器的驱动并生成了设备文件, 那么挂在其上面的I2C设备也可以原创 2016-03-04 11:35:19 · 10862 阅读 · 0 评论 -
应用程序和驱动的简易交互方式的实现
应用程序和驱动的简易交互方式的实现原创 2016-03-08 11:16:00 · 5544 阅读 · 0 评论 -
应用程序和驱动中使用SPI设备的流程
应用程序和驱动中使用SPI设备的流程原创 2016-03-15 08:54:18 · 9385 阅读 · 0 评论 -
usb设备的probe全过程
本文将详细讲述2.6.22下的一个USB设备插上linux系统的PC后是如何一步一步调到我们的usb设备驱动的probe函数的, 我们知道我们的USB驱动的probe函数中的一个参数是interface结构, 因此一般来说, 一个USB设备中的任何一个接口都应该有对应的一个驱动程序,当然也有例外(如cdc-acm). 我们知道USB设备都是通过插入上层HUB的一个Port来连入系统并进而被系原创 2008-03-17 15:41:00 · 16225 阅读 · 5 评论 -
串口通讯基础
转贴)串口通讯基础2007-01-15 09:52 作者:深圳远峰 数据通信的基本方式可分为并行通信与串行通信两种: 并行通转载 2008-03-06 16:23:00 · 1952 阅读 · 0 评论 -
Linux 下串口编程入门
Linux 下串口编程入门转载 2008-03-06 16:24:00 · 1044 阅读 · 0 评论 -
终端驱动原理篇
第十四章 Linux终端设备驱动本章导读在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。 14.1节阐述了终端设备的概念及分类,14.2节给出了Linux终端设备驱动的框架结构,重点描述tty_driver结构体及其成员。14.3~14.5节在14.2节的基础上,分别给出了Linux终端设备驱动模块加载/卸载转载 2008-01-29 21:58:00 · 7361 阅读 · 2 评论 -
Linux的I2C驱动架构
最近因为工作需要涉及到了I2C总线。虽然我过去用过I2c,但看了 Linux kernel 后才发现,一个 layer 能被做到这样完善。1. Linux的I2C驱动架构Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其中总线驱动的职责,是为系统中每个I2C总线增加相应的读写方法。但是总线驱动本身并不会进行任何的通讯,它只是存在在那里,等转载 2008-01-29 21:56:00 · 1596 阅读 · 0 评论 -
Linux块设备驱动
第十三章 Linux块设备驱动本章导读块设备是与字符设备并列的概念,这两类设备在Linux中驱动的结构有较大差异,总体而言,块设备驱动比字符设备驱动要复杂得多,在I/O操作上表现出极大的不同,缓冲、I/O调度、请求队列等都是与块设备驱动相关的概念。本章将向您展示Linux块设备驱动的编程方法。13.1节分析块设备I/O操作的特点,对比字符设备与块设备在I/O操作上的差异。13.2节从整体上描述L转载 2008-01-29 21:50:00 · 25383 阅读 · 2 评论 -
module_param(name, type, perm)的理解
module_param(name, type, perm)是一个宏,向当前模块传入参数,对源码分析如下在include/linux/moduleparam.h中#define module_param(name, type, perm) / module_param_named(name, name, type, perm)#define module_par转载 2008-01-31 22:00:00 · 5923 阅读 · 2 评论 -
驱动中如何访问CPU中的寄存器?
如果都是在memory空间的话,CPU内部的寄存器(非CPU核的寄存器)和外设上的寄存器地位是同等的,因此映射方法也是2种:1是静态映射(S3C2410的基本上是这种),2是ioremap,注意映射的单位都至少是page。当然CPU核的寄存器(如X86的CS、DS,ARM的R0,R1等)只能用汇编来访问了在将Linux移植到目标电路板的过程中,通常会建立外设I/O内存物理地址到虚拟地址的静态映转载 2008-01-31 22:11:00 · 5108 阅读 · 0 评论 -
linux下uart驱动的开发流程
一 UART驱动流程,以s3c2410为例初始化1 定义一个uart_driver的变量并初始化好(无需提供tty_driver).2 uart_register_driver()来注册这个驱动,在这函数里它会分配一个tty_driver对象,并初始化tty_operations为uart_ops, 这是serial-core.c提供的统一的UART操作函数3 调用自己定义的一转载 2008-02-19 16:07:00 · 4209 阅读 · 1 评论 -
Driver的prob的调用顺序
Driver的注册 Driver的prob的调用顺序可以从bus_attach_device()看起,1 bus_attach_device()调用device_attach(dev)2 device_attach(): 调用bus_for_each_drv()遍历bus上的每个driver,当找到一个driver则用__device_attach()来判断是否匹配3 __原创 2008-02-20 17:39:00 · 2496 阅读 · 1 评论 -
内核中常用的同步原语使用说明
内核中常用的同步原语使用说明在可以休眠的地方,一般使用mutex或semaphore, 不可以休眠的地方一般用spinlock(自旋锁)mutex/semaphore: 可以在无法进入临界区的时候进入休眠状态, 一般不能用在中断或其他异步上下文中 使用: DEFINE(mutex); mutex_lock() / mutex_unlock()spinlock: 在无法进入原创 2008-02-27 16:16:00 · 2093 阅读 · 0 评论 -
[kernel新手培训实战系列1 ] watchdog driver编写
自己写了一个的简单的 for smdk2410 的watchdog driver (完全依照datasheet ,并没有抄袭s3c2410-wdt.c ) , 可是运行的时候 ,有问题: # ./wdt_tt in wdt_disable readw ok ,tmp=0x0000 COUNTER_VALUE=18300 S3C2410_WTCNT address = c5000008 the va转载 2008-03-03 14:32:00 · 1745 阅读 · 0 评论 -
系统调用
系统调用1什么是系统调用 系统调用,顾名思义, 说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的 调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,转载 2008-03-04 16:04:00 · 988 阅读 · 1 评论 -
class_create(),device_create自动创建设备文件结点
class_create(),device_create自动创建设备文件结点转载 2016-03-15 09:03:16 · 4318 阅读 · 0 评论