![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动学习
别说郁闷
手机开发
展开
-
linux多点触控协议
简介为了使用功能强大的多点触控设备,一种方案是上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。使用说明任何一个手指的触控数据都是打包成 ABS event 包按顺序发送,只有 ABS_MT event包转载 2011-09-14 16:06:43 · 805 阅读 · 0 评论 -
UFI 命令 返回值(UFI Command Specification)
USB枚举代码添加 Mass Storage类规范定义了两个请求:Get_Max_LUN和Mass Storage Reset,所有的Mass Storage类设备都必须支持这两个请求。处理GET MAX LUN命令时,我们返回实际的逻辑单元(LUN:0~15)个数即可,由于我们的Mass Storage驱动仅支持一个存储设备,所以直接返回0即可。其实该命令也可以不应答,这时PC会重试三次转载 2011-12-19 16:55:52 · 3556 阅读 · 0 评论 -
基于OHCI的USB主机 —— 寄存器层(说明)
AM9200支持标准的OHCI规范,在其开发文档中对于USB主机部分的说明干脆就直接说参见OHCI规范。阅读AM9200的例程《AT91RM9200-BasicUHP》代码,发现系统已经提供了访问OHCI寄存器的指针pUhp,使用该指针就可以访问到所有的OHCI寄存器,因此读写寄存器的操作就是对pUhp指针进行操作。按照面向对象的编程思想,将所有寄存器看作是一个对象,对其操作都是通过接口来转载 2011-12-21 10:43:10 · 849 阅读 · 0 评论 -
UTMI及USB 2.0 PHY高速传输特性分析
转载信息来源于网上,再次作为研发信息记录 1. 概述USB2.0利用传输时序的缩短(微帧125us)以及相关的传输技术,将整个传输速度从原来的12Mbps提高到480Mbps,提高了40倍的带宽,为开发高宽带USB接口产品提供条件。USB2.0支持USB1.1的全速(Full Speed)和低速(Low Speed)工作环境,其电气特性在其他文献中有描述[6],这里主要介绍USB2.0转载 2011-12-27 10:35:03 · 1719 阅读 · 0 评论 -
mtd
1.Linux-MTD Subsystem FLASH在嵌入式系统中是必不可少的,它是bootloader、linux内核和文件系统的最佳载体。在Linux内核中引入了MTD子系统为NOR FLASH和NAND FLASH设备提供统一的接口,从而使得FLASH驱动的设计大为简化。在引入MTD后Linux系统中FLASH设备驱动可分为四层,如图: 1. 硬件驱动层FLASH硬转载 2012-01-18 12:02:03 · 6605 阅读 · 0 评论 -
Linux kernel启动参数
ARM体系结构:1.最常用的方式,就是在make config里修改“General Setup”子菜单中的“Default kernel command string” 选项,通过修改这个选项来修改include/linux/autoconf.h文件中的CONFIG_CMDLINE宏2.有的时候为了省去make menuconfig的时间,并且内核命令也是固定的,就可以写死内核arch/转载 2012-02-02 16:05:20 · 965 阅读 · 0 评论 -
android 和linux的休眠唤醒机制
Android在标准linux基础上对休眠唤醒的实现(三)LinuxAndroidJNIOSGo四、android层源码解析在linux之上经过android的软件堆层层封装,最终在上层的java应用程序中使用。休眠唤醒也是从最上层发出的命令,然后一层一层地将参数解析,往最底层传,最后走上标准linux的休眠唤醒之路。这一部分将会初略分析休眠唤醒机制上linux之上所走的路转载 2011-12-29 11:48:48 · 3759 阅读 · 2 评论 -
Linux Kernel and Android 休眠与唤醒
这是在网上看到的,关于linux电源管理说的比较清楚的还真不多。这篇不错,转过来。正好这几天在研究android电源管理机制。简介国际化版本信息对于休眠(suspend)的简单介绍Linux Suspend 的流程相关的文件:准备, 冻结进程让外设进入休眠ResumeAndr转载 2011-12-29 16:39:29 · 676 阅读 · 0 评论 -
高速的总线状态
许多的高速总线状态与低速/高速类似,但有些高速总线的状态的特性也是不同的。当然,这也是为了向下兼容之故。因此,低速与全速的总线状态无法兼容高速的总线。以下,分别叙述相关的重要特性。 1.高速差动1与差动0 当主机与设各传输高速的数据是位于高速差动1与差动0时,则存在这两种总线状态。这如同低速与全速的总线状态一样,高速差动1是当d+是逻辑高电位,以及d-是逻辑低电位。反之,高速差动0是当转载 2011-12-29 16:46:16 · 843 阅读 · 0 评论 -
关于f_mass_storage.c的文章(转载)
原文地址:http://blog.csdn.net/HellDevil/archive/2010/05/18/5604421.aspxhttp://blog.csdn.net/HellDevil/archive/2010/05/06/5561918.aspxhttp://blog.csdn.net/HellDevil/archive/2010/01/19/5213888.aspxhtt转载 2011-12-29 16:57:31 · 4832 阅读 · 0 评论 -
实战Linux Bluetooth编程
文章来源:http://blog.chinaunix.net/u3/104073/showart_2081838.html实战Linux Bluetooth编程(一) 协议栈概述Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API记录下来。这几天又想,这样还不够,不如把Li转载 2012-02-03 16:43:43 · 1358 阅读 · 0 评论 -
有关likely和unlikely
================================Author: taoyuetaoEmail: tao_yuetao@yahoo.com.cnBlog: taoyuetao.cublog.cn ================================在linux中判断语句经常会看到likely和unlikely,例如:if(likely(value)转载 2011-11-22 14:45:40 · 416 阅读 · 0 评论 -
直接存储器存取—基本原理、结构与应用(下)
在上一期中,我们讨论了分别基于寄存器和描述符的DMA模式。在本文中,我们将在系统层面上探讨应用中关于数据移动的各种选项所应做出的某些重要的决策问题,以及某些先进的DMA功能特性如何协助数据在多媒体系统中有效地移动。首先让我们重新回顾一下DMA模式,以便以之说明另外一两条关于何时选择其中一种模式而非另一种模式的指导原则。对于规模相同、连续、单向的数据传输来说,自动缓冲方案是最合理的。DMA配转载 2011-11-21 15:41:26 · 1279 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
如何调整Linux内核启动中的驱动初始化顺序【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处,内核编译转载 2011-08-19 17:34:30 · 580 阅读 · 0 评论 -
spi概念
1、SPI:高速同步串行口 SPI:高速同步串行口。是一种标准的四线同步双向串行总线。 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应转载 2011-08-23 15:21:16 · 874 阅读 · 0 评论 -
spi
这几天碰到了使用SPI接口的flash,才知道flash还可以是串行的,看来以前真是井底之蛙啊,找了一些SPI接口的资料都不全,后来找到一点英文资料,翻译了一下,加上我的个人理解,凑成一篇了,希望对初学者有点帮助。 SPI接口的全称是"Serial Periphera转载 2011-08-23 14:52:11 · 472 阅读 · 0 评论 -
Linux音频编程指南
一、数字音频音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现转载 2011-08-29 19:05:57 · 489 阅读 · 0 评论 -
DMA
DMA原理:DMA 是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于 CPU 的大量 中断 负载。否则,CPU 需要从 来源 把每一片段的资料复制到 暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。 DMA 传输重要地将一个内存区从一个装置复制到另外一个。当 CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器 来实行和完成。转载 2011-11-21 15:13:33 · 8418 阅读 · 1 评论 -
直接存储器存取—基本原理、结构与应用(上)
直接存储器存取(DMA)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输的。值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。一般而言,DMA控制器将包括一条地址转载 2011-11-21 15:32:46 · 5919 阅读 · 0 评论 -
Linux终端设备驱动
文章来源:http://blog.chinaunix.net/u3/94284/showart_1981110.html在Linux系统中,终端设备非常重要,没有终端设备,系统将无法向用户反馈信息,Linux中包含控制台、串口和伪终端3类终端设备。14.1终端设备 在Linux系统中,终端是一种字符型设备,它有多种类型,通常使用tty来转载 2012-02-03 16:40:20 · 1297 阅读 · 0 评论 -
linux终端设备uart驱动分析
文章来源:http://blog.chinaunix.net/u3/94284/showart_1982227.html一:前言接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点.在分析具体的seria转载 2012-02-03 16:44:37 · 763 阅读 · 0 评论 -
Linux USB驱动框架分析
Linux USB驱动框架分析(一) 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。 事实上,Linux的转载 2011-12-29 17:16:37 · 1054 阅读 · 0 评论 -
SD/MMC卡块设备驱动程序
SD/MMC 卡组成的存储系统是许多嵌入设备的主要存储设备,相当于PC机的硬盘,在嵌入设备上的SD/MMC卡控制器通过MMC协议来解析命令控制SD/MMC卡的操作。SD/MMC卡上有一些寄存器来控制卡的状态及读写操作。MMC协议规定的寄存器有:CID寄存器,128位,是卡的鉴别寄存器,存有卡的鉴别信息;RCA寄存器是16位,存有卡的本地系统的相对地址,在初始化时由控制器动态指定。DSR寄存器是16转载 2012-03-29 16:07:55 · 1946 阅读 · 1 评论 -
Linux设备驱动子系统终极弹 - USB
0. 预备理论1. USB Core2. USB Hub3. USB OTG4. USB Host5. USB Gadget6. USB Mass StorageUSB博大精深,不是一两篇博文能够解释清楚的。想要深入研究USB的话,USB协议(外加Host和OTG协议)是必要的知识,另外,国内有本fudan_abc的>也写的很好很详细,唯一美中不足的就是写得太详细了转载 2012-03-29 16:10:11 · 958 阅读 · 0 评论 -
Linux设备驱动子系统第四弹 - USB Gadget
2011-01-15 12:57 1459人阅读 评论(2)收藏 举报1. 前言2. 源码架构3. 枚举过程1. 前言Gadget,小饰品。USB Gadget,就是指所开发的电子设备以USB从设备的模式通过USB连接到主机。比如手机用USB线插入PC后,手机就是USB Gadget。本文以Mavell为例,以Gadget插入主机的全过程为主线,分析USB转载 2012-03-29 16:15:01 · 737 阅读 · 0 评论 -
mmc驱动工作流程
工作流程:mmc驱动主要文件包括drivers/mmc/card/block.cdrivers/mmc/card/queue.cdrivers/mmc/core/core.cdrivers/mmc/core/host.cdrivers/mmc/core/内核启动时,首先执行core/core.c的mmc_init,注册mmc、sd总线,以及一个host class设备。转载 2012-03-31 16:42:00 · 1131 阅读 · 0 评论 -
Mini2440 SD卡驱动程序分析
mini2440驱动分析系列之---------------------------------------Mini2440 SD卡驱动程序分析By JeefJiang July,25th,2009Email:Jeefjiang1983@163.com (本文仅做学习交流用,转载或引用请标明)前几天把mini2440的sd卡驱动程序转载 2012-04-01 10:53:58 · 845 阅读 · 0 评论 -
Linux 进程状态
Linux进程状态:R (TASK_RUNNING),可执行状态。只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进程调度器的任务就是从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。很多操作系统教科书将正在CPU上执转载 2012-04-01 12:26:09 · 419 阅读 · 0 评论 -
Linux内存模型之bootmem分配器
简介:bootmem分配器是系统启动初期的内存分配方式,在耳熟能详的伙伴系统,slab系统建立前内存都是利用bootmem分配器来分配的,伙伴系统框架建立起来后,bootmem会过度到伙伴系统,bootmem大致思想就是收集内存中的可用内存,然后建立bit位图,然后需要的内存从这些空闲内存中分配,分配了就标记占用,当然这种分配方式很低效,但是由于只占用启动阶段很少一部分,所以也大可接受了,好了,废转载 2012-04-12 16:56:31 · 1139 阅读 · 0 评论 -
sd command
SD:1条CMD线,所有的命令和回应都是通过这条线一位一位的传输.不同模式或不同版本下,命令有不同含义.(SD(SD[0],SD[3:0]),SPI))1条时钟线,时钟源是来自APH总线时钟4条数据线,SPI模式下用了两条(一条输出,一条输入),SD的一位模式下一条(输出输入),也可以用完四条(输出输入,DATA[0]将分时复用).SD卡是以块为单位,初始化时有配置,一般为转载 2012-04-12 17:00:30 · 2137 阅读 · 1 评论 -
firmware 加载原理
摘录几篇android研发日志1 http://blog.csdn.net/linweig/archive/2010/06/01/5640697.aspxFirmware 加载原理分析----分析的比较透彻,我在wifimodule调试时遇到的问题几乎跟这个一样,不过我采取了另外一个方法,直接用kernel的read和write了,没有使用request_firmware,有空小结下。转载 2012-09-03 12:23:39 · 730 阅读 · 0 评论 -
sd卡分析
一.SD/MMC卡介绍1.1.什么是MMC卡MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。1.2.什么是SD卡SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展而来,增加了转载 2012-12-21 16:58:33 · 759 阅读 · 0 评论 -
SD卡协议学习点滴(二)
数据传输模式:在SD卡识别模式结束之前,控制器使用的时钟频率均为Fod。在数据传输模式,控制器可能会使用Fpp频率。控制器发送一条SSEND_CSD(CMD9)命令来获取SD卡CSD寄存器(Card Specific Data)里面的描述值,譬如,块长度,卡容量信息等。广播命令SET_DSR(CMD4)为各个已识别的SD卡配置驱动阶段(??)。它会向SD卡的DSR寄存器写入相关的信息。控制器的转载 2012-03-28 15:42:48 · 1880 阅读 · 0 评论 -
SD卡协议学习点滴(一)
首先SD卡有所谓操作模式(operation mode)的概念,每种操作模式又具体对应一种或多种状态,主机通过发送命令可以使SD卡在不同的状态间转换,SD卡则接受命令,并根据自己现在所处状态做出不同的响应。系统上电时刻或者搜寻SD卡时,SD卡控制器应该处于SD卡识别模式;SD卡在刚接入系统时刻也处于这种模式,并且处于此模式下的Idle状态。SD卡识别模式:在这种模式下,控制器会检验SD转载 2012-03-28 15:41:32 · 1145 阅读 · 0 评论 -
低速与全速的USB总线状态
关于低速与全速的总线状态,需要特别加以注意与了解。在低速与全速的设各上,差动“1”是以15 kω的电阻拉至接地端,将d+拉升至超过2.8 v,而d一则是通过1.5 kω电阻拉至3.6 v,将d-降低到0.3v;差动“0”,则是刚好相反。若以同样的提升电阻与下拉电阻的连接,则d-高于2.8 v,而d+低于0.3v。如表所列,usb规范书中将信号的传递状态分为j状态与k状态。但需注意的是这两种状态的定转载 2011-12-29 16:41:36 · 2005 阅读 · 0 评论 -
分析android的usb-gadget
分析android的gadget:gadget部分的UDC和API基本上弄懂了,现在开始研究android上的USB-gadget实现,开始读代码1:首先从init开始。static int __init init(void){ struct android_dev *dev; printk(KERN_INFO "android ini转载 2011-12-29 17:00:57 · 3111 阅读 · 1 评论 -
class_create()
在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_cre转载 2011-12-30 22:26:12 · 523 阅读 · 0 评论 -
dma_alloc_coherent 和 dma_alloc_writecombine
dma_alloc_coherent: 一致性DMA映射dma_alloc_writecombine: 流式DMA映射原来 dma_alloc_coherent 在 arm 平台上会禁止页表项中的 C (Cacheable) 域以及 B (Bufferable)域。而 dma_alloc_writecombine 只禁止 C (Cacheable) 域.#define pgprot转载 2012-02-08 17:04:09 · 808 阅读 · 0 评论 -
Linux串口(serial、uart)驱动程序设计
一、核心数据结构http://www.cublog.cn/u3/109117/article.html串口驱动有3个核心数据结构,它们都定义在1、uart_driveruart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。struct uart_driver {转载 2012-02-10 17:50:26 · 987 阅读 · 0 评论 -
uart dma实现方式分析(转载)
uart dma实现方式分析(转载) 2011-06-08 21:40:42| 分类:linux 编程 | 标签:|字号大中小 订阅在做uart DMA驱动期间,前后加起来也有1个月左右的时间,总的来说比较全面的了解了uart,DMA的工作原理。在调试中,遇到了最大问题就是关于DMA操作这快的不熟悉,导致浪费了很多的时间和精力。对UART,DMA的工作原理转载 2012-02-21 20:41:15 · 1864 阅读 · 0 评论