
Linux驱动
文章平均质量分 80
Arrow
在技术上具有Arrow一样的钉子精神
展开
-
Linux SDIO-WiFi 协议栈
Linux SDIO-WiFi 协议栈1. 简介2. BCMDHD2.1 WiFi模组1. 简介2. BCMDHDBCMDHD:Broadcom Dongle Host DriverSIP:System In Package2.1 WiFi模组原创 2024-04-21 11:35:38 · 1016 阅读 · 0 评论 -
I2C接口及驱动
1. 简介I2C总结的基本的特征:电路简单,只需要两根线,时钟线SCL和数据线SDAI2C为总线型结构,主设备依靠从设备地址进行寻址I2C总线上的设备可以为一主多从或者多主多从,多主多从模式下,需要提供仲裁和冲突检测机制I2C主设备提供时钟,SDA可以双向传输数据I2C标准的传输速率可以达到100Kbit/s,快速模式下可以达到400Kbit/s,高速模式下可以到达3.4Mbit/s。一般最为常用的传输速率<=100Kbit/s2. 硬件2.1 硬件电路I2C硬件电路特原创 2022-04-02 17:37:54 · 1294 阅读 · 0 评论 -
SPI接口及驱动
1. 简介SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构。支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first)。SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。2. 接口2.1 总线结构2.2 硬件接口SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。M原创 2022-04-02 11:40:07 · 10722 阅读 · 0 评论 -
SDIO接口及驱动
1. 简介1.1 SDIO接口应用场景SDIO 通过 SD 的 I/O 管脚来连接外部的外围 device 并传输数据。这些外围设备,我们称为 SDIO 设备,常见的有:Wi-Fi card(无线网络卡)CMOS sensor card(照相模块)GPS cardGSM/GPRS modem cardBluetooth cardRadio/TV card2. 硬件接口2.1 SDIO 总线SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是d原创 2022-04-02 10:08:20 · 2222 阅读 · 0 评论 -
Linux DTS (Device Tree Source)设备树源码
Linux DTS 设备树源码1. 简介1. 简介DTS 是为 Linux 提供一种硬件信息的描述方法,以此代替源码中的 硬件编码 (hard code)。DTS 即 Device Tree Source 设备树源码, Device Tree 是一种描述硬件的数据结构,起源于 OpenFirmware (OF). 在 Linux 2.6 中, ARM 架构的板级硬件细节过多的被硬编码在 arch/arm/plat-xxx 和 arch/arm/mach-xxx (比如板上的 platform 设备,r原创 2022-03-30 08:41:16 · 7273 阅读 · 0 评论 -
platform设备驱动全透析
1.platform总线、设备与驱动 在Linux 3.x 的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等转载 2012-12-21 16:37:44 · 2938 阅读 · 0 评论 -
嵌入式Linux如何查看硬件设备
查看CPU信息:cat /proc/cpuinfo查看内存信息:cat /proc/meminfo查看USB设备:cat /proc/bus/usb/devices查看键盘和鼠标:cat /proc/bus/input/devices查看各分区使用情况:df查看体系结构:busybox uname -a查看中断信息:cat /proc/interrupts原创 2012-12-19 08:43:31 · 6909 阅读 · 0 评论 -
usb_modeswitch 中文README
README For USB_ModeSwitch (zh_cn)最新详细信息以及更新(外加友好的论坛)请访问http://www.draisberghof.de/usb_modeswitch这是什么?=========USB_ModeSwitch 是一个(惊人的)很小的控制"flip flop"(多重设备)USB装置的模式转换工具现在一些新的USB 设备(特别是一些高转载 2012-12-10 08:49:09 · 3822 阅读 · 0 评论 -
linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
1.kobject, ktype, kset 1) kobject: 代表sysfs中的目录。 2) ktype: 代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。 3) kset: 包含了subsystem概念,kset本身也是一个kobject,所转载 2012-12-05 14:45:20 · 4738 阅读 · 0 评论 -
Android (Linux) Suspend流程
1. Linux Suspend简介 Linux Suspend主要有以下三步: 1) 冻结用户态进程和内核态任务 2) 调用注册的设备的suspend的回调函数,顺序是按照注册顺序 3) 休眠核心设备和使CPU进入休眠态。 冻结进程(suspend_freeze_processes)是内核把进程列表中所有的进程的状态都设置为停止,并且保存所有进程的上原创 2013-04-23 08:48:13 · 9447 阅读 · 1 评论 -
中断处理“下半部”机制
1. 中断处理的tasklet (小任务)机制中断服务程序一般都是在中断请求关闭的条件下执行的,以避免嵌套而使中断控制复杂化。但是,中断是一个随机事件,它随时会到来,如果关中断的时间太长,CPU就不能及时响应其他的中断请求,从而造成中断的丢失。因此,Linux内核的目标就是尽可能快的处理完中断请求,尽其所能把更多的处理向后推迟。例如,假设一个数据块已经达到了网线,当中断控制器接受到这个原创 2013-07-10 09:00:47 · 19081 阅读 · 3 评论 -
IEEE802.11协议基础知识
1. 无线接入过程 STA (工作站)启动初始化、开始正式使用、AP 传送数据幀之前,要经过三个阶段才能接入: (1) 扫描(SCAN) (2) 认证(Authentication) (3) 关联(Association) 1.1 扫描(SCAN) 1) 若无线站点 STA 设成 Ad-hoc (无AP)模式:STA原创 2013-07-12 10:07:25 · 25994 阅读 · 3 评论 -
Linux Netlink
1. Netlink简介 Netlink 是一种特殊的 socket,它是一种在内核与用户间进行双向数据传输的一种方式,用户态应用使用标准的 socket API 就可以使用 Netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 Netlink。 系统已定义的Netlink种类如下:类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前原创 2013-08-07 10:16:19 · 9444 阅读 · 0 评论 -
Linux如何查看与/dev/input目录下的event对应的设备
1. /dev/input目录 /dev/input目录下的事件都是在驱动中调用input_register_device(struct input_dev *dev)产生的。如我的盒子的/dev/input目录的内容如下:crw-rw---- root input 13, 64 1970-01-01 08:00 event0crw-rw---- root原创 2013-08-30 11:03:28 · 43887 阅读 · 4 评论 -
Android4.2 G-Sensor工作流程
1. 简介 在了解Sensor工作流程以前,一直以为其事件是通过Event Hub来进行输送的,可是研究完Android4.0代码之后,才发现自己错了。 其主要框架如下图所示: 2.功能模块2.1 SensorManager.java与下层接口功能:1) 在SensorManager函数中 (1) 调用native sensors_module_原创 2013-06-07 10:11:40 · 20762 阅读 · 2 评论 -
用户态应用程序直接与USB设备通信(不需要USB设备Driver)
1. Kernel态 devio.c: 实现用户态与USB设备通信的接口 它实现usbfs/x/y, 即/dev/bus/usb/x/y,x为bus number,y为device number 它允许用户态应用程序直接与USB设备通信(不需要USB设备Driver参与)2. User 态 /system/core/libusb原创 2013-10-29 17:41:41 · 3491 阅读 · 0 评论 -
如何编写Linux设备驱动程序
一、Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它完成以下的功能: 1. 对设备初始化和释放。 2. 把数原创 2012-11-14 17:11:14 · 3651 阅读 · 1 评论 -
CPU frequency and voltage scaling code in the Linux(TM) kernel
1. 基本介绍 1) 调整CPU运行频率是一个节能的好方法,CPU运行频率越低,CPU功耗越小。 2) 下面的我现在正在使用的CPU为例进行说明。触发CPU频率调整的有两个源: 1)根据CPU负荷进行调整(代码位于:kernel/drivers/cpufreq,下面以cpufreq_interactive.c为例,当/sys/drivers/system/cpu/c原创 2012-10-23 09:02:42 · 6693 阅读 · 1 评论 -
Linux 网络驱动详解
原文地址:http://blog.youkuaiyun.com/chenjin_zhong/article/details/63243341.概述Linux系统多用于服务器上,Linux非常牢固的支持网络。在Linux,网络分为两个层,分别是网络堆栈协议支持层,以及接收和发送网络协议的设备驱动程序层。网络堆栈是硬件中独立出来的部分,主要用来支持TCP/IP等多种协议,而网络设备驱动层是连接网络堆栈协议转载 2011-11-25 15:14:41 · 10360 阅读 · 0 评论 -
USB基本问题及答案
转自:http://www.zdh1909.com/html/usb/10903.html 问题一:USB的传输线结构是如何的呢? 答案一:一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(注意哦,与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500MA(可以在编程中设置的,至于硬件的转载 2011-11-28 11:52:08 · 3393 阅读 · 0 评论 -
USB设备无私布奉献的一生
USB从出生到死亡,其中会经历些什么,他对外界要求多吗? 对其中充满好奇心! Usb的设备是非常复杂的,它由许多不同的逻辑单元组成,这些逻辑单元之间的关系可以简单地描述如下:l 设备(usb_device)通常具有一个或者更多的配置(usb_host_config)l 配置通常具有一个或者更多的接口(usb_interface)l 接口通常具有一个或者更多的设置(usb_host原创 2011-11-29 11:32:15 · 2428 阅读 · 1 评论 -
Linux usb_device usb_bus usb_driver的三角关系-USB Bus
二、USB Bus每一条USB总线对应一个struct usb_bus结构体变量. struct bus_type usb_bus_type = { .name = "usb", .match = usb_device_match, .uevent = usb_uevent, .pm = &usb_bus_pm_ops,};struct bus_type表示原创 2011-11-29 20:00:06 · 3562 阅读 · 0 评论 -
urb数据结构
一、 transfer_flags/* * urb->transfer_flags: * * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb(). */#define URB_SHORT_NOT_OK 0x0001 /* report short reads as errors */#defin原创 2011-11-29 21:39:16 · 7447 阅读 · 1 评论 -
Linux-USB子系统
usbfs为咱们提供了在用户空间直接访问usb硬件设备的接口,但是世界上没有免费的午餐,它需要内核的大力支持, usbfs_driver 就是用来完成这个光荣任务的。 /dev: 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,访问这些外部设备与访问一个文件或一个目录没有区别。这包括终端设备(tty*)、软盘(fd*)、硬盘(hd*)、RAM(ram*)和原创 2011-11-28 19:30:49 · 2851 阅读 · 0 评论 -
Linux USB驱动工作流程
1. USB主机在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。Linu原创 2011-11-25 20:36:58 · 20141 阅读 · 0 评论 -
Linux USB驱动详解
原文地址:http://blog.youkuaiyun.com/chenjin_zhong/article/details/63293161.Linux usb设备驱动框架USB是通用串行总线的总称,Linux内核几乎支持所有的usb设备,包括键盘,鼠标,打印机,modem,扫描仪。Linux的usb驱动分为主机驱动与gadget驱动。前者是设备连接到计算机上,通过主机驱动扫描usb设备,控制所连接的转载 2011-11-25 15:09:50 · 25487 阅读 · 3 评论 -
Linux usb_device usb_bus usb_driver的三角关系-USB Device
一、USB Device 1. struct device: The Basic Device Structure, generic device interface(所有设备的抽象) -struct bus_type *bus; /* type of bus device is on */ -struct device_driver *driver;原创 2011-11-29 12:35:31 · 6021 阅读 · 0 评论 -
Touch Device Driver Requirements
转自:http://source.android.com/tech/input/touch-devices.htmlTouch Device Driver RequirementsTouch device drivers should only register axes and key codes for the axes and buttons that they actual转载 2012-02-08 20:58:48 · 2400 阅读 · 0 评论 -
Linux 多点触控协议
简介 为了使用功能强大的多点触控设备,一种方案是上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息。使用说明 任何一个手指的触控数据都是打包成 ABS event 包按顺序发送,只有 ABS_MT event包能作为多点触控数据被识别,调用 input_mt_sync()函数可以产生一个SYN_MT_转载 2012-02-08 16:55:22 · 2383 阅读 · 0 评论 -
Linux 音频设备驱动架构及应用编程
最早出现在Linux上的音频编程接口是OSS(Open Sound System),它由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口。OSS出现的历史相对较长,这些内核模块中的一部分(OSS/Free)是与Linux内核源码共同免费发布的,另外一些则以二进制的形式由4Front Technologies公司提供。由于得到了商业公司的鼎力支持,OSS已经成为在Linux下进行原创 2012-06-06 14:35:40 · 12179 阅读 · 0 评论 -
输入设备配置文件(.idc文件)
1. 何为idc? idc(Input Device Configuration)为输入设备配置文件,它包含设备具体的配置属性,这些属性影响输入设备的行为。对于touch screen设备,总是需要一个idc文件来定义其行为。 Android基于输入设备驱动汇报的事件类型和属性来检测和配置大部分输入设备的能力。然而有些分类是模棱两可的,如:多点触摸屏(multi-t原创 2012-07-03 09:06:21 · 18499 阅读 · 5 评论 -
Adroid 触摸屏设备
1. 触摸屏设备分类1.1 多点触摸满足以下两个条件为多点触摸设备:1)输入设备驱动报告了ABS_MT_POSITION_X 和ABS_MT_POSITION_Y存在2)输入设备没有任何手柄按钮1.2 单点触摸满足以下两个条件为单点触摸设备:1)输入设备不被归类为多点触摸设备2)输入设备报告存在ABS_X和ABS_Y绝对轴,以及存在BTN_TOUCH按键码1.3翻译 2012-02-13 13:34:18 · 19256 阅读 · 1 评论 -
MTD(memory technology device内存技术设备)
MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设转载 2012-08-14 16:38:06 · 6757 阅读 · 0 评论 -
Linux USB驱动相关细节知识
1. 在usb_fill_bulk_urb,usb_fill_int_urb,usb_fill_control_urb都需要指定回调函数,当此URB请求完成时,usb core回调用此函数。注意:urb 回调函数是在中断上下文运行, 因此它不应做任何内存分配, 持有任何信号量, 或任何可导致进程休眠的事情. 如果从回调中提交 urb 并需要分配新内存块, 需使用 GFP_ATOMIC 标志来告原创 2011-11-25 16:19:20 · 4866 阅读 · 0 评论