linux设备驱动
文章平均质量分 76
myxmu
不积跬步无以至千里,不积小流无以成江海
展开
-
[sdio] Common Information Area (CIA) 分析及初始化过程
一 , CIA 概述SDIO 卡寄存器存储区中有一固定的公共端口区域,简称为 CIA 。 CIA中的寄存器包括了对 I/O 端口功能, 中断产生以及端口工作信息, 可以通过读写功能 0对 CIA 所定义的寄存器进行相关操作。 CIA 包含了 CCCR (Card Common Control Registers), FBR (Function Basic Registers) 和转载 2017-08-12 14:34:15 · 1915 阅读 · 0 评论 -
ARM体系结构下面内存和i/o映射区别
(1)关于IO与内存空间: 在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、out指令格式为: IN 累加器, {端口号│DX} OUT {端口号│DX},累加器 目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在转载 2014-04-15 23:18:53 · 1061 阅读 · 0 评论 -
Linux驱动虚拟地址和物理地址的映射
一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G。 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间。 每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间地址有自己对应的页表,内核的虚拟空间独立于其转载 2014-03-18 15:38:35 · 1031 阅读 · 0 评论 -
Linux DMA meory简述
1. DMA memory分类2. 2. DMA对memory的操作函数3. 3. DMA的层次结构4. 4. MIPS上的DMA实现5. 5. ARM上的DMA实现 首先,应该先读Documentation/DMA-API.txt和DMA-mapping.txt.转载 2013-12-23 18:23:05 · 2553 阅读 · 0 评论 -
mips一致性DMA映射、流式DMA映射的使用
一、流式DMA:1、一般的使用方法是:dma_buf = (void *)__get_free_pages(GFP_ATOMIC|GFP_DMA, get_order(s->fragsize));desc->snd_buffer = dma_buf;desc->snd_dma = dma_map_single(NULL, desc->snd_buffer, s->frags转载 2014-03-17 20:41:13 · 1359 阅读 · 0 评论 -
SPI总线简介
一.SPI总线简介串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择转载 2014-02-19 15:04:29 · 1156 阅读 · 0 评论 -
I2C总线详细介绍
I2C是一种串行总线的外设接口,它采用同步方式串行接收或发送信息,两个设备在同一个时钟下工作。I2C总线只用两根线:串行数据SDA(Serial Data)、串行时钟SCL(Serial Clock)。由于I2C只有一根数据线,因此其发送信息和接收信息不能同时进行。信息的发送和接收只能分时进行。I2C串行总线工作时传输速率最高可达400K bit/s。I2C总线上的所有器件转载 2014-02-19 15:15:45 · 1114 阅读 · 0 评论 -
WIFI驱动结构介绍
1 WLAN驱动结构介绍1.1 SDIO驱动在drivers/mmc下面是mmc卡,SD卡和SDIO卡驱动部分,其中包括host驱动,card驱动和core部分,由于网络接口卡挂接在SDIO总线上,所以在此之前我们先看一下SDIO的驱动结构。其驱动在drivers/mmc目录下的结构为: |-- mmc| |-- card| |-- core转载 2013-09-19 14:26:12 · 2721 阅读 · 0 评论 -
DMA描述符及映射
1.DMA通道DMA(Direct Memory Access)通道建立在设备和RAM之间,DMAC(DMA Controler)与设备I/O控制器相互作用共同实现数据传送。在PC中,DMA控制器位于主板上负责管理I/O总线的南桥上。典型的PC架构的数据通道示意图如下:DMAC一旦被CPU激活,就可以自行传送数据。在实现DMA传输时,由DMA控制转载 2014-01-03 13:45:31 · 3116 阅读 · 1 评论 -
原子操作(atomic operation)
"原子操作(atomic operation)是不需要synchronized",这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。目录1定义2简介3特性4硬件支持5Lin原创 2013-12-18 17:02:45 · 922 阅读 · 0 评论 -
Linux DMA详解
DMA控制器硬件结构DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。在第一种情况下,调用的步骤可以概括如下(以read为例):(1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据。进转载 2014-01-02 13:20:14 · 1741 阅读 · 0 评论 -
设备树使用手册
This page walks through how to write a device tree for a new machine. It is intended to provide an overview of device tree concepts and how they are used to describe a machine.本文将介绍如何为一个新机器编写设转载 2014-01-01 10:06:06 · 1426 阅读 · 0 评论 -
platform_device和platform_driver的注册过程,及probe函数何时调用的分析
add platform_device之后,需要注意的一个地方是这里,add是通过系统初始化里边调用platform_add_devices把所有放置在板级platform_device数组中的所有platform_device逐次调用platform_device_register添加到系统中去,platform_device_register中会调用platform_device_add(注转载 2013-12-30 15:38:22 · 1333 阅读 · 0 评论 -
ARM Linux 3.x的设备树(Device Tree)
1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/ma转载 2013-12-30 14:18:40 · 809 阅读 · 0 评论 -
Linux如何查看与/dev/input目录下的event对应的设备
目录(?)[+]1. /dev/input目录 /dev/input目录下的事件都是在驱动中调用input_register_device(struct input_dev *dev)产生的。如我的盒子的/dev/input目录的内容如下:[cpp] view plaincopycrw-rw---- root转载 2013-12-16 16:09:23 · 2111 阅读 · 0 评论 -
platform device和driver之间的关系
[c-sharp] view plaincopy内核中的platform driver机制需要将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform device提供的标准接口进行申请并使用。这样可以提高驱动和资源管理的独立性。本文的目的就是希望弄清楚platform device和driver之间的关系。 1.1转载 2013-12-30 16:47:26 · 1270 阅读 · 0 评论 -
内存未对齐导致性能降低及其处理
内存未对齐是指cpu要读取N字节数据,但数据的起始地址不能被N所整除,导致效率降低,甚至异常的出现。例如当cpu读取一个int类型的变量,而变量地址是0x10005的时候就产生未对齐访问。自然对齐: N字节的数据类型需要放在起始地址为被N整除的地址这称为自然对齐。并不是所有体系结构的计算机带都要求自然对齐,有的可以指定对齐方式。但是为了达到好的可移植性编写代码的时候最转载 2014-04-16 22:01:06 · 1742 阅读 · 0 评论 -
Linux芯片级移植与底层驱动(基于3.7.4内核)(GPIO&&pinctrl&&clk)
7. pinctrl驱动许多SoC内部都包含pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。在软件上,Linux内核的pinctrl驱动可以操作pin控制器为我们完成如下工作:§ 枚举并且命名pin控制器可控制的所有引脚;§ 提供引脚复用的能力;§ 提供配置引脚的能力,如驱动能力、上拉下拉、开漏(open drain)等。转载 2014-04-04 17:59:04 · 4373 阅读 · 0 评论 -
linux下MMC/SD/SDIO驱动系列之四 ---- SDIO的识别与操作
从上篇文章的最后,我们知道host在扫描卡的过程中,其识别的顺序为SDIO SD MMC,并且从它的注释可以看出,这个顺序是很重要的。那这篇文章,我们就看看SDIO的识别过程,它对应的函数就是mmc_attach_sdio(host) (函数位于文件drivers/mmc/core/sdio.c) 这个函数大概来说做了如下的工作转载 2017-08-12 14:32:52 · 2805 阅读 · 0 评论 -
SDIO驱动总结
内核:Linux 2.6.35.7硬件:三星的s5pv210平台SDIO驱动包括SDIO 控制器驱动和SDIO卡驱动,属于主从结构类型,相信看过usb驱动的朋友会更容易理解SDIO的驱动框架。本文初略分析了SDIO控制器驱动与SDIO卡驱动的调用过程,待以再对SDIO做进一步分析。1. SDIO 控制器驱动三星的s5pv210平台使用的SDIO控制器涉及到的驱动文件主要.\ d转载 2017-08-12 10:22:52 · 1102 阅读 · 0 评论 -
i2c信号的ACK与NACK
i2c信号的ACK与NACK 我们平时在调试I2C的时候可能很少去关注NACK信号,只知道如果Master发送数据,MSB先发,LSB后发,连续发送一个字节(8个bit),之后Slave会回复一个ACK信号,但是有时I2C slave可能会发出NACK信号,下面让我们来看看NACK信号存在的情况。1、从spec下摘取一段:转载 2017-03-13 16:40:20 · 7597 阅读 · 0 评论 -
Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc转载 2016-05-16 09:41:03 · 624 阅读 · 0 评论 -
linux kernel的中断子系统之(八):softirq
一、前言对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情。在执行bottom half的时候,是开中断的。有多种bottom half的机制,例如:softirq、tasklet、workqueue或是直接创建一个kernel t转载 2016-03-26 14:54:03 · 1001 阅读 · 1 评论 -
802.11的物理层-CS/CCA过程
参考文献[1] 802.11 Wireless Networks: The Definitive Guide, Mattbew S. Gast[2] Overhaul of IEEE 802.11 Modeling and Simulation in NS-2, Qi Chen, Felix Schmidt-Eisenlohr.[3] C++ Source codes of转载 2016-01-12 14:50:35 · 9303 阅读 · 0 评论 -
SD初始化过程以及Cmd解析
1条CMD线,所有的命令和回应都是通过这条线一位一位的传输.不同模式或不同版本下,命令有不同含义.(SD(SD[0],SD[3:0]),SPI))1条时钟线,时钟源是来自APH总线时钟4条数据线,SPI模式下用了两条(一条输出,一条输入),SD的一位模式下一条(输出输入),也可以用完四条(输出输入,DATA[0]将分时复用). SD卡是以块为单位,初始化时有配置,一转载 2016-01-26 19:02:58 · 872 阅读 · 0 评论 -
SDIO驱动的命令从何玩起?
SDIO 卡 SDIO 卡是在 SD 内存卡接口的基础上发展起来的接口, SDIO 接口兼容以前的 SD 内存卡,并且可以连接 SDIO 接口的设备,目前根据 SDIO 协议的 SPEC , SDIO 接口支持的设备总类有蓝牙,网卡,电视卡等。 SDIO 协议是由 SD 卡的协议演化升级而来的,很多地方保留了 SD 卡的读写协议,同时 SDIO 协议又在 S转载 2016-01-26 19:01:24 · 4379 阅读 · 0 评论 -
NFC:跟现金和信用卡说不
智能手机很快就将包含近场通信(NFC)无线技术,这使得智能手机能用作钥匙或信用卡。用户只需在NFC阅读器附近挥动他们的手机或与NFC阅读器轻轻接触,两个设备之间就能实现数据交换进而完成交易。自动配对是另外一种新兴应用。无线技术NFC的最大范围大约是20cm,典型的使用距离是4cm至5cm,这对安全性很有好处。近场通信技术顾名思义就是使用近场,而不是人们更加熟悉的远场。远场由转载 2015-01-12 15:57:12 · 2272 阅读 · 0 评论 -
linux2.6内核compat_ioctl函数
一、内核原型(linux2.6.28-7) long (*compat_ioctl)(struct tty_struct *tty, struct file * file, unsigned int cmd, unsigned long arg); implement ioctl processing for 32转载 2014-12-01 13:29:59 · 5565 阅读 · 1 评论 -
GPIO的上拉下拉功能说明
上拉寄存器是控制对应端口上拉使能的。当对应位为0时,设置对应引脚上拉使能,为1时,禁止对应引脚上拉使能。如果上拉寄存器使能,无论引脚功能寄存器如何设置(输入,输出,数据,中断等),对应引脚输出高电平。可见对应于S3C2410的GPB-BPH口内部有上拉电阻寄存器,当相应的上拉电阻使能时,对应的I/O引脚悬空时,表现出高电平。反之,表现出低电平。上拉是一个电阻接到一个电压,其实就是增强IO的驱动能力转载 2014-08-29 14:46:40 · 48215 阅读 · 3 评论 -
GPIO初始化
PXA3xx_MFP_CFG(desc, pin, af, drv, rdh, lpm, edge)宏定义中rdh参数是用来设置进入或退出low power时GPIO的电平由什么决定,为0时进入low power时由lpm决定,离开时恢复原值,为1时GPIO的值由ASCR[RDH]决定,一般该参数设置为0;lpm参数的作用是当系统由工作模式进入省电模式后,该GPIO的状态,是输出0或1,还转载 2014-08-29 16:08:02 · 7256 阅读 · 2 评论 -
linux input输入子系统分析《四》:input子系统整体流程全面分析
分类: 内核驱动2012-07-31 14:29 3260人阅读 评论(1) 收藏 举报inputlinuxstructlisttablefile目录(?)[+]主要讲述本人在学习Linux内核input子系统的全部过程,如有分析不当,多谢指正。以下方式均可联系,文章欢迎转载,保留联系信息,以便交流。邮箱:eabi010@gmail.co转载 2014-07-23 00:10:36 · 589 阅读 · 0 评论 -
linux input输入子系统分析《三》:S3C2440的触摸屏驱动实例
主要讲述本人在学习Linux内核input子系统的全部过程,如有分析不当,多谢指正。以下方式均可联系,文章欢迎转载,保留联系信息,以便交流。邮箱:eabi010@gmail.com主页:www.ielife.cn(爱嵌论坛——嵌入式技术学习交流)博客:blog.csdn.net/ielife1.1 本节阅读前提本节的说明建立在前两节的基础之上,需要先阅读如转载 2014-07-23 00:09:29 · 929 阅读 · 0 评论 -
SPI DMA 的使用
一是想总结一下SPI总线的特点与注意点,二是总结一下SPI DMA的使用一、SPI信号线说明 通常SPI通过4个引脚与外部器件相连:MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。SCK:串口时钟,作为主设备的输出,从设备的输入NSS:从设备选择。这是一转载 2014-04-09 14:53:54 · 3427 阅读 · 0 评论 -
DMA原理
下面是S3C2440A数据手册上的一段截图,展示了4个DMA通道和每个通道对应的DMA源: 对这些DMA通道和其对应DMA源的管理在文件linux/arch/arm/mach-s3c2440/dma.c中实现。在文件dma.c中定义了一个结构体数组static struct s3c24xx_dma_map __initdata s3c2440_dma_mapp转载 2014-04-09 14:12:46 · 872 阅读 · 0 评论 -
使用GPIO口模拟I2C总线并挂载设备
[c-sharp] view plaincopy前言: 在许多情况下,我们并没有足够的I2C总线,本文主在介绍如何利用Linux内核中的i2c-gpio模块,利用2条GPIO线模拟i2c总线,并挂载设备。 思路: 先通过对i2c-gpio所定义的结构体初始化(包括初始化i2c的2条线,频率,timeout等)并将i2c-gpio模块编译进内核,实现转载 2013-12-10 10:37:48 · 1531 阅读 · 0 评论 -
linux gpio模拟i2c的使用/用GPIO模拟I2C总线-1
在linux中,我们可以自己来使用gpio来模拟i2c,但是万能的linux中其实也已经有了i2c的东东了。 现在看看i2c-gpio.c文件中到底提供了哪些接口[cpp] view plaincopystatic void i2c_gpio_setsda_dir(void *data, int sta转载 2013-12-02 16:00:16 · 1039 阅读 · 0 评论 -
I2C不通的分析思路
[DESCRIPTION]在camera porting的过程中,有很多原因会导致Camera I2C不通此篇FAQ的目的是为camera i2c没通的情况,提供一个大概的思路 [SOLUTION]I2C不通,有两种原因,一种是device端(也就是我们的camera sensor)本身就没有回ACK,另一中就是在master端(也就是我们的baseband端)原创 2013-11-28 16:49:19 · 11242 阅读 · 1 评论 -
sdio_irq_thread对中断的模拟
对于不支持SDIO 中断的host,kerne会采用polling的方式来实现伪中断:不断的唤醒ksdioirqd来检查SDIO的CCCR的中断标志位。(支持SDIO中断的host,则直接在SDIO中断产生的时候由host的驱动来负责通知mmc子系统唤醒ksdioirqd来检查中断).ksdioirqd的关键性代码如下。do { /* * We c转载 2012-10-01 18:28:45 · 6216 阅读 · 1 评论 -
Linux设备模型之tty驱动架构分析 .
一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文件同tty_core交互转载 2012-10-05 15:13:36 · 829 阅读 · 0 评论 -
init.rc到底在做些什么
当我们只是按下电源键开机时,会进入正常启动模式。 Secondary stage bootloader 会从boot 分区开始启动。Boot 分区的格式是固定的,首先是一个头部,然后是 Linux 内核,最后是用作根文件系统的 ramdisk。当 Linux 内核启动完毕后,就开始执行根文件系统中的 init 程序,init 程序会读取启动脚本文件(init.rc 和init.goldfish转载 2012-10-10 20:29:19 · 4929 阅读 · 0 评论