linux驱动学习
文章平均质量分 66
wujiangguizhen
这个作者很懒,什么都没留下…
展开
-
bus,device,driver三者关系
bus,device,driver三者关系bus:总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。一块网卡在嵌入式开发中,直接通过内存总线转载 2013-08-20 23:25:54 · 1046 阅读 · 0 评论 -
WLAN驱动分析文档
目录(?)[+]目 录1引言 31.1目的 31.2项目背景 31.3参考资料 32预备知识 32.1WLAN技术 32.2802.11协议简述 32.2.1概述 32.2.2802.11工作方式 42.2.3802.11物理层 42.2.4802.11b的增转载 2014-07-03 09:24:14 · 1116 阅读 · 0 评论 -
Android Wi-Fi工作原理
目录(?)[+]第一部分 Android概述在介绍Wi-Fi之前,先简要介绍一下Android系统,主要分析一下Android的按层实现的原理。Android层次结构是整个Android体系中所有应用实现的基础框架,而Android源代码结构则与Wi-Fi的实现细节有关。1.1基础知识Android是一款当前最为流行的手机操作系统,它本身的开放性加上Google公司转载 2014-07-03 09:29:04 · 1181 阅读 · 0 评论 -
linux device driver之sdio驱动编程
先谈谈如何写linux驱动:- 在驱动模块初始化函数中调用register_chrdev(),将驱动向系统注册为一个字符设备,伪装成一个文件,上层的应用可以通过访问这个文件(字符设备),来操作驱动模块。- 驱动模块注册为字符设备后,还需要用户在命令行中敲mknod命令来创建一个对应的字符文件,上层应用就是用open, close, read, write该文件这样的方式来访问驱动模块。转载 2014-07-03 09:32:46 · 2384 阅读 · 0 评论 -
USB枚举过程(Enumeration)
USB架构中,hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt INEndpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(RootHub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见下图(最顶端为主机的RootHub): USB总线拓扑结构(USB Bus Topology)一旦获转载 2014-07-03 09:38:24 · 4476 阅读 · 0 评论 -
usb枚举过程分析之hub_events
当守护程序第一次运行或usb port上状态发生变化,守护进程被唤醒都会运行hub_events函数,这个函数在usb系统中处理核心位置,usb的枚举过程就是由它完成,usb枚举过程流程图如图1所示;图1 usb枚举流程图 由于hub_events函数比较长这里分几个部分进行讲解:[html] view plaincopystatic v转载 2014-07-03 09:42:27 · 4096 阅读 · 1 评论 -
usb枚举过程分析之守护进程及其唤醒
目录(?)[+] usb热插拔,即usb设备可以实现即插即用,像U盘一样,插到电脑里就可以用,不用时可以直接拔除,这个动作不会影响USB设备使用性能。 在linx 系统中,usb热插拔由两部分方面共同实现,即内核空间和用户空间,内核由一个守护进程实现,用户空间由udev 程序实现。在内核空间里,有一个专门用于监控usb hub的状态的守护进程,守护进程通转载 2014-07-03 09:44:17 · 1581 阅读 · 0 评论 -
基于s3c6410 otg controller的gadget driver及usb枚举分析
目录(?)[+]一.简介 一个完整的USB系统由两部分构成,即usb主机(usb host)和usb设备(usb device)。usb主机通常是指我们的pc机、具有host controller的嵌入式设备;像u盘、usb鼠标、键盘属于usb设备,具有otg controller的usb设备,它即可工作在host模式又可以工作在device模式,模式之间通过HNP协议转载 2014-07-03 09:49:16 · 2202 阅读 · 0 评论 -
linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent
目录(?)[+]1.kobject, ktype, kset原文地址:kobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个ko转载 2014-07-03 09:52:38 · 899 阅读 · 0 评论 -
Linux vi编辑器的使用说明
摘要: 一、vi的工作模式 vi有两种工作模式: 编辑模式:用来输入和编辑文件的模式,屏幕上会显示用户的键入,按键不是被解释为命令执行,而是作为文本写到用户的文件中。 指令模式:用来编辑、存盘和退出文件的模 ...一、vi的工作模式 vi有两种工作模式: 编辑模式:用来输入和编辑文件的模式,屏幕上会显示用户的键入,按键不是被解释为命令执行,而是作为文本写到转载 2014-06-19 16:32:19 · 746 阅读 · 0 评论 -
SDIO架构初解2
谨以此文纪念过往的岁月以SDIO为例其会采用mmc_attach_sdio来实现驱动和设备的匹配,其本质还是根据sdio_bus的匹配规则来实现匹配。在mmc_attach_sdio中首先是mmc匹配一个bus,即采用何种bus来进行mmc bus来处理host。在这里需要理解一点就是在SDIO中,对于SD卡存储器mmc为实体设备,而对于非SD卡存储器,如SDIO接口的设备,则mmc则表征为b转载 2014-07-03 09:21:09 · 781 阅读 · 0 评论 -
Linux下检测网卡与网线的连接状态
在机顶盒的网络连接中,其中有一项就是检测网卡与网线是否连接,当没有连接网线时,通过浏览器打开错误页面提示网线未连接。那么如何检测网卡与网线是否连接。一、使用ioctl向socket发送SIOCETHTOOL命令字[cpp] view plaincopy"font-size:18px;">#include #include #include #inclu转载 2014-07-03 00:57:28 · 4366 阅读 · 0 评论 -
解决类似 BUG: soft lockup - CPU#2 stuck for 67s! 问题的思路
编写内核程序,出现soft lockup错误是再常见不过了,类似BUG: soft lockup - CPU#2 stuck for 67s!。刚开始调试内核时,出现这样的错误,往往两眼一抹黑,不知道该如何下手了。但其实,这样的问题解决多了,会发现原因基本就两种情况,死锁和死循环。所以,在出现soft lockup错误时,不用慌张,只要分析相关代码是不是存在死循环,比如 for循环的退出条转载 2014-07-03 00:54:48 · 36608 阅读 · 1 评论 -
linux下设备device_register和驱动driver_register先后注册的影响和关系
转载自http://blog.csdn.net/gzzaigcnforever/article/details/7727395开始我的博文之前,最近一天来的感受,我只想说一下,Linux的世界,玩在表面是轻松的,但是玩在内部那就是找死。佩服那些写源码的人。真的佩服。 这段世界大概半个月了,开始linux驱动的真正开发,也是从基层开始看的。相比以为linux下的驱动就是点灯之类的L转载 2013-08-20 23:36:54 · 983 阅读 · 0 评论 -
volatile(在寄存器操作的时候要注意,具体的例子可以参考uboot里面代码)
volatilevolatile就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。目录作用volatile的作用: 作为指令关键字,确转载 2013-08-24 00:58:37 · 3815 阅读 · 0 评论 -
如何解决adb shell error:device not found
设置-》应用程序-》开发-》usb 调试有没打开?adb kill-serveradb start-server or adb shelladb remount原创 2013-09-02 13:52:43 · 4949 阅读 · 0 评论 -
reboot系统调用
http://www.eoeandroid.com/thread-73096-1-1.html原创 2013-09-02 13:39:45 · 1046 阅读 · 0 评论 -
"Starting kernel ..." Lock Up (基于freescale)
"Starting kernel ..." Lock Up 更新boot.img,system.img,recovery.img之后,系统跑到Starting kernel ...,然后一直没有输出。 刚开始一直找不到原因,后来发现需要要跑到kernel目录下面,进行make disclean。 然后再编译make bootimage,这样编译出来的boot.img就原创 2013-09-04 14:12:36 · 874 阅读 · 0 评论 -
经典的语录
为者常成,行者常至原创 2013-09-24 19:45:17 · 635 阅读 · 0 评论 -
Debug Android and Linux suspend and resume
Debug Android and Linux suspend and resumeAdded by raymond wang, last edited by raymond wang on Mar 08, 2013 (view change)积攒了一些关于调试Android和Linux下面的suspend 和 resume的经原创 2013-09-26 10:58:57 · 1215 阅读 · 0 评论 -
Android 嵌入式 linux 去掉启动时闪烁的光标 和制作启动LOGO
Android 嵌入式 linux 去掉启动时闪烁的光标 和制作启动LOGO一.去除embedded linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c 文件 将static void fb_flashcursor(void *private) 和 static void fbcon_cursor(struct v转载 2013-09-27 20:07:17 · 880 阅读 · 0 评论 -
assert()函数用法总结
assert()函数用法总结 assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abor转载 2013-10-24 17:28:08 · 695 阅读 · 0 评论 -
驱动与设备的匹配
xxu0123456789的专栏目录视图摘要视图订阅有奖征资源,博文分享有内涵 5月推荐博文汇总 大数据读书汇--获奖名单公布驱动与设备的匹配分类: Linux 驱动学习 2012-08-20 14:00 184人阅读 评论(0)收藏 举报nullea转载 2014-06-11 01:38:46 · 712 阅读 · 0 评论 -
设备与驱动的匹配
看了许久,今天终于是了解了驱动及设备的注册及彼此的绑定过程,详细内容请见下文,如有不对地方请指正,多谢了!一、 先看一下这个int __init devices_init(void) { devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL); if (!devices转载 2014-06-11 01:44:21 · 830 阅读 · 0 评论