嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至少需要个把月的时间,不信?那是你没做过。
本人做过2年的嵌入式驱动开发,usb占了一大半的时间。期间走了不少弯路,下面将我的血的经验教训总结下,为要从事和正在从事的战友们做一点点贡献吧:)
首先,扫盲;
要做的是阅读usb Spec(英文的哦,其实很多文章、书籍和资料真有水平的还是原创的好,就像食品往往经过加工就变了味,之前如果没有接触过的话可以先看看中文的,大概先有个印象),这个工作其实是很复杂很枯燥的一部分。看Spec的同时可以到网上大概浏览下usb开发的相关知识,这个阶段就是扫盲,不求精进。至少你得知道usb的四种传输类型吧,你得知道usb从上电开始的几个状态吧,你得知道usb设备都有哪些吧,等等。
第二步,窥全貌;
usb设备是如何工作起来的?其实usb子系统是分层次工作的,他们配合默契,做好自己的份内之事,一切以大局为重。usb驱动可以分为usb设备驱动,usb控制器驱动,hub驱动,总线驱动等等。我建议你还是顺着设备驱动的这根主线往下走吧。
在真正开始分析usb驱动代码这之前,你需要了解linux模块机制,linux驱动的platform总线构架,之类。一个模块被加载后,从driver的角度来说,真正将设备驱动起来是从probe开始的。这个你该知道。你得知道为什么usb可以即插即用,做软件的朋友该知道线程这个东西吧,和她有关系的。usb系统里面一个最重要的角色该出场了,urb。一切的一切都要围绕她进行。pipe为她铺路,数据由她承载。usb设备驱动的工作就是准备好这个urb后她的使命就基本完成了,那她把urb给了谁?这就是之前提到的usb控制器驱动,host。
至于host,现在市场上有很多款,如果你老板给你用的是市面上用的最成熟的像EHCI,那么你太幸运了。这个基本不用你写,只要稍加修改,把她注册到总线上即可。如果你很不幸,使用了像musb这样的host,你惨了,有你苦头吃了。呵呵。如果有用的可以联系我,之前研究过,兴许可以帮上什么忙啊。
第三步,精益求精;
这个时候驱动你也调过了,也许这时候已经跑起来了,也许还没跑起来。可能你开始浮躁了,到这个时候咋的也过去个把月了,如果还没出成果难免心急。好,这时候如果是这样,你该做什么呢? 重新看Spec,重新看整个驱动过程,重复之前做过的事情。这次你再看绝对和之前不一样了。这时候你要学会的是,坚持,耐力.................
最后,给大家介绍一下我自认为不错的资料,你可以参考。像复旦一哥们写的linux那点事儿(附件里有,大家嫌麻烦可以到我这里下载Linux那些事儿之我是U盘.pdf),ldd3,最好的资料是源代码。
分享到:
相关推荐
本合集包括了多份关于USB开发的重要资料,如《USB设备驱动开发深度解析-宋宝华.pdf》、《USB中文协议》、《USB结构体系.pdf》、《嵌入式Linux的USB驱动程序开发.pdf》、《linux设备驱动开发详解-usb篇.pdf》以及...
在设备驱动程序开发方面,本书涵盖了字符设备驱动、块设备驱动和网络设备驱动的编写方法,这些都是嵌入式Linux系统中与硬件交互的关键。通过这些章节,读者可以了解到如何控制和管理硬件资源,实现设备与操作系统...
本教程将通过源代码的形式,深入解析嵌入式Linux驱动开发的相关知识。以下是对该教程内容的详细概述: 1. **驱动程序基本概念** - **驱动的作用**:驱动程序是操作系统与硬件之间的桥梁,它负责翻译操作系统的指令...
收集的几个好的USB开发学习的资料,并且包括USB中文协议. USB开发合集 (包括usb 中文协议 USB结构体系.pdf 嵌入式Linux的USB驱动程序开发.pdf linux设备驱动开发详解-usb篇.pdf 快速USB学习.doc)
《嵌入式Linux系统开发技术详解--基于ARM》是一本深度探讨嵌入式系统开发的专业书籍,主要聚焦在使用Linux操作系统在ARM架构上的应用。ARM(Advanced RISC Machines)是广泛应用在嵌入式领域的处理器架构,以其高...
嵌入式Linux设备驱动程序开发 本文主要讲述了嵌入式Linux设备驱动程序的概念、通用模块和具体开发流程,进一步通过实例论述了如何设计和编写模块化的嵌入式Linux设备驱动程序,以及解释驱动程序的关键代码。 一、...
文章中还提到了USB和GPIO驱动程序的开发作为例子,进一步阐述了嵌入式Linux下字符设备驱动程序的开发过程。USB驱动程序需要向Linux内核提供设备文件I/O接口,而GPIO设备驱动程序需要向GPIO子系统提供GPIO设备接口。...
本文主要介绍了基于嵌入式Linux的USB驱动设计,包括USB总线简介、Linux下的USB驱动整体结构、USB主机控制器驱动、USB设备驱动等内容。本文还详细介绍了USB描述符层次结构、Linux下的USB驱动整体结构、USB主机控制器...
【正点原子】I.MX6U嵌入式Linux驱动开发指南是一份详细的教程,针对的是基于I.MX6ULL处理器的嵌入式Linux开发。该文档由广州市星翼电子科技有限公司出版,提供了正点原子ALPHA开发板的使用指导。正点原子团队致力于...
基于嵌入式Linux的USB摄像头驱动开发
这篇教程——“嵌入式Linux驱动开发教程”将深入探讨这个主题,帮助开发者掌握驱动程序的设计和实现。 一、嵌入式Linux简介 嵌入式Linux是指在嵌入式系统中使用的Linux操作系统,它具有轻量级、可裁剪、实时性等...
在嵌入式Linux系统中,设备驱动开发是至关重要的一个环节,它连接着硬件与操作系统,使得硬件资源得以有效利用并提供服务。本篇将详细探讨嵌入式Linux设备驱动开发,结合“嵌入式linux设备驱动开发详解SD.pdf”和...
嵌入式Linux设备驱动开发详解-光盘代码 书籍里面的光盘 实例代码: ----本书部分实例的源代码 工具: ----2410处理器的交叉编译工具 ----vivi ----busybox1.00 技术手册: ----本章实例中用到的器件手册 gcc...
### 嵌入式Linux下的USB驱动开发 #### 一、引言 随着嵌入式技术的发展,USB接口因其易用性、高速度等特点,在嵌入式系统中得到了广泛的应用。在嵌入式Linux系统中,开发USB驱动是实现与外部设备交互的重要手段之一...
嵌入式Linux应用程序开发详解-第11章(嵌入式Linux设备驱动开发).pdf 嵌入式Linux应用程序开发详解-第12章(Qt图形编程).pdf 由于包比较大,采用.tar.bz2类型的压缩.压缩包绝对没有问题,我自己曾经下来解压.由于没有...
### 嵌入式Linux设备驱动开发知识点解析 #### 一、嵌入式Linux设备驱动概述 嵌入式Linux设备驱动开发是嵌入式系统开发中的核心内容之一,尤其是在定制化的硬件平台上,设备驱动的编写尤为重要。设备驱动作为操作...
本文将详细介绍一款基于台湾凌越TP6800视频主控芯片的USB摄像头,在嵌入式Linux环境下开发驱动程序的过程,以及一般USB设备驱动程序开发的基本流程和方法。 #### 嵌入式Linux环境及其特点 嵌入式Linux开发平台凭借...
《嵌入式Linux设备驱动程序开发指南》是针对嵌入式Linux系统中设备驱动程序开发的一本专业书籍,由西班牙作者Alberto Liberal de los Ríos撰写,专注于讲解如何为使用设备树的嵌入式Linux系统开发驱动。本书特别...
### 嵌入式Linux的USB驱动添加及应用 #### 引言 随着开源软件的兴起,嵌入式Linux凭借其强大的灵活性与可定制性,成为嵌入式系统的热门选择。对于嵌入式Linux而言,驱动程序的添加是实现特定硬件功能的关键步骤之...