12-S3C2440驱动学习(九)嵌入式linux-USB驱动程序(未完待续)

发布者:风暴使者最新更新时间:2022-04-21 来源: eefocus关键字:S3C2440  驱动学习  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

1、学习思路


一个USB设备插入到系统中时,会被系统识别出USB设备,并通过系统上的USB总线驱动程序通过约定好的规范询问USB设备的信息(描述符),如设备名称。USB总线驱动程序负责:识别USB设备,给USB设备找到对应的驱动程序(自己开发)。USB设备通过约定好的规范,把描述符发送给USB总线驱动程序。


问1. 既然还没有"驱动程序",为何能知道是"android phone"


答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone",提示你安装的是"设备驱动程序"。


问2. USB设备种类非常多,为什么一接入电脑,就能识别出来?


答2. PC和USB设备都得遵守一些规范。


     比如:USB设备接入电脑后,PC机会发出"你是什么"?


          USB设备就必须回答"我是xxx",并且回答的语言必须是中文


    USB总线驱动程序会发出某些命令想获取设备信息(描述符),


    USB设备必须返回"描述符"给PC


问3. PC机上接有非常多的USB设备,怎么分辨它们?


    USB接口只有4条线: 5V,GND,D-,D+


答3. 每一个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号


     接在USB总线上的每一个USB设备都有自己的编号(地址)


    PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址)


问4. USB设备刚接入PC时,还没有编号;那么PC怎么把"分配的编号"告诉它?


答4. 新接入的USB设备的默认编号是0,在未分配新编号前,PC使用0编号和它通信。


问5. 为什么一接入USB设备,PC机就能发现它?


答5. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平


    USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,就会把PC USB口的D-或D+拉高,从硬件的角度通知PC有新设备接入


其他概念:


1. USB是主从结构的


   所有的USB传输,都是从USB主机这方发起;USB设备没有"主动"通知USB主机的能力。


   例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来读数据,只能被动地等得PC机来读。


2. USB的传输类型:


a. 控制传输:可靠,时间有保证,比如:USB设备的识别过程

b. 批量传输: 可靠, 时间没有保证, 比如:U盘

c. 中断传输:可靠,实时,比如:USB鼠标

d. 实时传输:不可靠,实时,比如:USB摄像头

3. USB传输的对象:端点(endpoint)


   我们说"读U盘"、"写U盘",可以细化为:把数据写到U盘的端点1,从U盘的端点2里读出数据


   除了端点0外,每一个端点只支持一个方向的数据传输


   端点0用于控制传输,既能输出也能输入


4. 每一个端点都有传输类型,传输方向


5. 术语里、程序里说的输入(IN)、输出(OUT) "都是" 基于USB主机的立场说的。


   比如鼠标的数据是从鼠标传到PC机, 对应的端点称为"输入端点"


6. USB总线驱动程序的作用


a. 识别USB设备

b. 查找并安装对应的设备驱动程序

c. 提供USB读写函数

关键字:S3C2440  驱动学习  驱动程序 引用地址:12-S3C2440驱动学习(九)嵌入式linux-USB驱动程序(未完待续)

上一篇:11-S3C2440驱动学习(八)嵌入式linux-块设备驱动程序
下一篇:04-S3C2440u-boot学习之u-boot分析(2)之Makefile结构分析

推荐阅读最新更新时间:2024-11-11 11:42

基于PCI总线的数字卫星解调卡驱动程序开发
  引言   PCI总线(即外围部件互连总线)是Intel公司提出的计算机接口总线。它的时钟频率为33MHz,有32位数据总线,可支持突发传输模式,数据传输峰值速率高达132 MB/s。   此外,PCI总线还可扩展为64位数据总线,扩展后的数据传输峰值速率高达264 MB/s,并支持即插即用功能而且独立于处理器。由于PCI总线具有诸多优点,它已经成为PC机的标准总线。因此,PCI接口设备的驱动程序开发就显得尤为重要。   数字卫星解调卡主要用于接收卫星发来的调制信号的数字解调。设计中的桥接芯片可采用PLX公司的PCI9054。本文主要介绍数字卫星解调卡的WDM驱动程序开发方法。   1 PCI9054接口芯片   
[嵌入式]
S3C2440 DMA 驱动示例
将 DMA 抽象为一个字符设备,在初始化函数中调用 void *dma_alloc_writecombine(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp) 函数来分配两段物理地址连续的空间,一段作为源空间,一段作为目的空间。 然后将物理地址进行 ioremap 供驱动使用,最后调用 register_chrdev 来注册这个字符设备。 DMA 的 regs: #define DMA0_BASE_ADDR 0x4B000000 #define DMA1_BASE_ADDR 0x4B000040 #define DMA2_
[单片机]
ARM9嵌入式处理器S3C2440实现了远程图像光线监控系统
  对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象 这些对象有可能分布在郊区、深山,荒原或者其他无人值守的场合;另外,希望能够获取比较清晰的监控图像,但对图像传输的实时性要求并不高 很明显,用传统的PC机加图像采集卡的方式很难满足这样的需求。   在嵌入式领域,ARM9系列微处理器在高性能和低功耗方面提供了最佳的性能,因此选用ARM9嵌入式处理器S3C2440设计实现了一个远程图像光线监控系统通过这个系统,可以远在千里之外控制一个摄像机进行图像采集并回传。如果这个摄像机有一个485接口的云台,还可以通过互联网远程控制摄像机的取景角度、镜头拉伸、聚焦等功能 除了获取图像数据.系统还提供了多路开关控制和数据
[单片机]
ARM9<font color='red'>嵌入式</font>处理器<font color='red'>S3C2440</font>实现了远程图像光线监控系统
DS1302读写驱动程序
/************************** 文件所用资源 1.端口:P0.4,P0.5,P0.6 2.调用delay_ms函数 **************************/ /*********************** 1302引脚定义 ***********************/ sbit T_RST = P0^4; sbit T_DAT = P0^5; sbit T_CLK = P0^6; /******************************** 1302子程序区 ********************************/ /***************************
[单片机]
单总线驱动程序(DS18B20)
sbit DQ=P3^7; //DS18B20数据传输线接单片机的相应的引脚 void delaymm(uint z) { uint x,y; for(x=z;x 0;x--) for(y=110;y 0;y--); } //向DS18B20读一字节数据 ,从低位开始读 ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i 0;i--) { DQ=1; delay(1); DQ=0;
[单片机]
S3C2440地址空间的分配及启动过程
一、S3C2440地址空间的分配 1. s3c2440A 的存储器控制器有以下特性: l 大小端(通过软件选择) l 地址空间:每个bank有128M 的字节(总共1G字节/8个banks) l 可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位) l 共8个存储器banks l 6 个是ROM,SRAM 等类型存储器bank l 2 个是可以作为ROM、SRAM、SDRAM 等存储器bank l 7 个固定的存储器bank起始地址 l 最后一个bank 的起始地址可调整 l 最后两个bank 大小可编程 l 所有存储器bank的访问周期可编程 l 总线访问周期可通过插入外部
[单片机]
<font color='red'>S3C2440</font>地址空间的分配及启动过程
Linux驱动:s3c2410/s3c2440 ts驱动分析
前言 前面结合“平台总线-设备-驱动”模型分析了ts(触摸)驱动的加载过程,现在进入驱动程序分析下其具体的实现。涉及到输入子系统、s3c2440的ADC转换和触摸控制器。 涉及的寄存器 image.png 调用probe函数 根据上一篇的分析,驱动层通过platform_driver_register注册后,会调用到该驱动层的probe函数。 s3c2410ts_probe函数分析 1. 硬件寄存器设置 获取设备参数 struct s3c2410_ts_mach_info *info; info = ( struct s3c2410_ts_mach_info *)pdev- dev.platform_data;
[单片机]
linux-2.6.24.3下移植SD/MMC到S3C2440上的全历程
1.起首下载2.6.24.3内核源码。其他内核不包管可以。移植部门就不讲了,假如不会参考我的其他文章。我仅仅测试了这个。 2.去http://svnweb.openmoko.org/*chec ... _mci.patch?rev=4096 下载SD/MMC patch,其他晚期版本不可,我就栽倒了这其中间。 3.把 s3c_mci.patch copy到linux-2.6.24.3下。执行patch -p1 s3c_mci.patch 呵呵,早年不会用patch,此次也用上了。 4.make menuconfig,选择MMC/SD ,选择言语CP437,ISO 8859-1,最好也同时选择SCSI相关的工具吧,连USB也一块支撑
[单片机]

推荐帖子

C5000™ BoosterPack限时降价
从3月27日起,C5000™BoosterPack限时30天降价。活动链接:http://www.ti.com/ww/en/embedded/c5000_audio_capacitive_touch_boosterpack/index.shtml?DCMP=dsp-c5-capaud-120327&HQS=dsp-c5-capaud-b-lpC5000™BoosterPack限时降价话说想要但是没有信用卡啊,楼主能帮我买一个吗,感激不尽啊!
wstt 微控制器 MCU
关于驱动的一点问题
写驱动是C合适?还是C++更好些?性能上有什么差别吗?关于驱动的一点问题Linux下的驱动程序基本都是c写的不管哪个平台下,驱动都是汇编+C为主,少量加入C++的类特性。WINDOWS下学驱动有3种选择1.DDK(C语言)2.DS(C++)3.WINDRIVER难度递解..谢谢各位
keiyi 嵌入式系统
IPC-6013E-EN_2021 Qualification and Performance Specification or FlexibleRigi...
IPC-6013E-EN_2021QualificationandPerformanceSpecificationorFlexibleRigi...一看大小就是个目录,发出来拉仇恨吗?无用
李强980702 下载中心专版
汽车VCU知识问答第三站:赏析国内外VCU性能指标及设计思路
汽车VCU知识问答第一站:了解VCU系统框图和功能清单汽车VCU知识问答第二站:了解VCU开发流程和任务分解、岗位需求前2站,我们初步了解VCU是什么、它的功能、以及如何实现这些功能,这一站我们赏析一些实现了的VCU。本站您需要挑战的题目共3道,每答对一道,可获得10芯积分奖励,全部答对可获得30芯积分。如果您不了解这些问题,推荐您浏览分享:国内外电动汽车整车控制器(VCU)性能指标及设计思路。1、丰田公司整车控制器的原理图如下图所示,此VCU接收的信
nmg 汽车电子
博客大赛要开始啦!
各位论坛上的朋友们:看着eeworld论坛上的工程师圈子不断扩大,不断提升,我们心里甚是欢喜~借此,我们也想趁着热乎气儿,举办一次规模庞大,专业性强的博客大赛,希望大家多多参与哦。现在这个活动正在前期的筹办过程中,大家有什么好的想法,好的建议,可以在此跟帖,或者将自己的观点发到wangtingting@eeworld.com.cn中去,大家多多献计献策啊,也可以从现在开始就打造自己的小小空间,为本次的大赛做足准备工作。博客的地址如下:http://home.eewor
亲善大使 单片机
Protel布线设计注意事项
Protel布线设计Protel布线设计注意事项thanksalot!Re:Protel布线设计注意事项notatallRe:Protel布线设计注意事项
lorant PCB设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved