- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux下USB摄像头驱动设计 姓名:李彦龙 日期:2014.12.27 背景介绍: 研二上学期,我和两个哥们合伙做XC210开发板,在淘宝卖,我负责软件 部分,包括: Linux内核、驱动升级 Bootload升级 Android升级 提供学习用示例代码 客户技术支持 不幸的是,前后持续一年,便夭折了,原因: 产品性能问题,当主频升至1G,系统便反复重启 没有市场,仅卖出去3块,还全是差评 学到的东西: ①掌握ARM 汇编、c、c++、java?语言,掌握 shell 编程、Makefile 编写、jni 等,熟练使用 Linux 系统 ②熟悉ARM 架构 CPU ③掌握驱动开发及移植,如常见串口、Nand、LCD、触摸屏、声卡、PCI、USB、ANSA、regulator 等 ④熟悉linux应用程序开发 ⑤熟悉u‐boot、Linux kernel,了解其框架并可熟练移植 ⑥熟悉androidApp开发、熟悉Android 基本框架(如启动流程、binder 机制等) ⑦熟悉USB 协议,熟悉Linux 的V4L2、电源管理、FIMC等框架,了解openwrt ⑧使用dxp2004画pcb 板 下文重点介绍1080p高清USB摄像头c930e驱动设计 USB系统框架 USB Host Controllers Drivers USB Core Drivers USB Device Drivers VFS block net char …… APP Kernel USB驱动位于不同内核子系统和硬件控制器之间,USB Core提供接口给USB驱动用于存取和控制USB硬件,而不必担心出现在系统中不同的USB硬件控制器 UHCI OHCI EHCI RHUB RHUB RHUB Hardware HUB device1 device2 device3 device4 device5 USB设备逻辑结构 设备通常有一个或多个配置 配置通常有一个或多个接口 接口有零个或多个端点 每个设备都有端点0,用于控制 Device config1 config2 …… …… interface1 interface2 endpoint1 endpoint2 endpoint1 endpoint2 endpoint1 endpoint2 不同配置代表不同功能组合,接口代表一基本功能 例:一USB播放器带有音频、视频功能,还有按钮 旋钮 配置1:音频(接口)+旋钮(接口) 配置2:音频(接口)+视频(接口)+按钮(接口) 配置3:视频(接口)+旋钮(接口) 音频接口、视频接口、旋钮接口、按钮接口均需一 USB驱动程序 主机与设备通信最终作用于端点 例:USB总线类似高速公路 收发数据类似汽车 端点类似高速公路收费口入口与出口 USB描述符 所有USB设备都具有的5种描述符 设备描述符 配置描述符 接口描述符 端点描述符 字符串描述符 一个设备只有一个设备描述符 一个设备有几种配置便有几个配置描述符 一个配置有几个接口便有几个接口描述符 一个接口有几个端点便有几个端点描述符 内核抽象出相应结构体去描述 相应描述符,如接口描述符: struct usb_interface_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bInterfaceNumber; __u8 bAlternateSetting; __u8 bNumEndpoints; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; __u8 iInterface; } __attribute__ ((packed)); USB设备插入Host,USB Core发出Get_Descriptor命令,将所有描述符 读入,分析后得知设备属性 每一子类USB设备(如HID、UVC)又具有dev specific descriptor USB数据传输 USB数据传输方式: 控制传输:传输控制指令 等时传输:数据量大实时,如USB摄像头 中断传输:数据量少但实时,如USB鼠标、键盘 批量传输:准确无误,如U盘、打印机、扫描仪 一次传输由一个或多个事务(Transaction)构成,事务分In事务、Out事务、Setup事务 一个事务由一个或多个包(Packet)构成,包分令牌包setup(命令)、数据包data、握手包ACK、特殊包Special 包由多个域构成,域分同步域SYNC,标识域PID、地址域ADDR、端点域ENDP、帧号域FRAM、数据域DATA、校验域CRC等 U
原创力文档


文档评论(0)