从去年11月份开始连载的《基于OHCI的USB主机》系列总算告一段落了,到UFI命令层为止,所有USB主机的底层处理就结束了,再上面就是磁盘读写、文件系统、文件读写和应用系统了。这些上层应用基本上是与USB主机没有什么关系的,我的这个系列既然叫做《基于OHCI的USB主机》,那么到这里结束也是再正常不过的了。
在公司让我搞这个USB主机之前,说实话,我是对USB的底层知识完全是一窍不通,当时的资料也很少,只有周立功的两本书和OHCI的规范,当时每天都是把这些资料看了又看,调试的时候遇到了很多奇奇怪怪的问题,也算是一路磕磕绊绊、跌跌撞撞走来,总算是把这个USB主机给搞定了。虽然过程很艰苦,可是收获也很大,我从对USB主机完全不懂,到熟悉了里面的每一个细节,现在可以自称是专家了,呵呵。
想到USB主机开发过程中的种种艰辛,当年开发完这套程序以后,就想着要把这些发表出来,可是一直忙于工作,直到去年年底才有了时间,能够得以把这系列文章发表出来。在正式发表之前,我还把所有底层代码重构了一下,因为以前一是对底层不够了解,另外出于赶进度的考虑,代码比较混乱,各个层次之间依赖性比较强,对于代码的阅读理解和维护都是存在一定难度。重构后的代码,层次更加清晰,层与层之间主要依靠接口进行关联,而不是依赖全局变量。当然,这样做是要付出一定的性能代价的,对性能要求较高的场合就需要对层次进行必要的简化。
最后,我要感谢51CTO的编辑,你们把这个网站打理的很好,我觉得在这里发表文章很开心。另外,还要感谢这些天来一直和我交流的flyway、chenshaoshi、pmbao5281等网友,你们使我更加加深了对USB主机的理解,希望以后能够继续交流。

转载于:https://blog.51cto.com/lancelot/318402

基于OHCI的USB主机 —— 结束语相关推荐

  1. 基于OHCI的USB主机 —— 前言

    很久以前,大概是前年年底吧,因为公司项目的要求,我做了基于OHCI的USB主机访问U盘的程序,用来把系统中产生的一些数据保存到U盘中.本来做的时候就想把其中的一些经验体会发表的,可是工作实在是太忙,而 ...

  2. 基于OHCI的USB主机 —— 寄存器(初始化)

    硬件初始化的操作比较简单,主要代码从例程<AT91RM9200-BasicUHP>中抄过来,另外增加了中断向量初始化的部分. 在AM9200中,USB的中断是基于AIC中断的,因此要设置对 ...

  3. 基于OHCI的USB主机 —— OHCI(端点)

    OHCI (Open Host Controller Interface),是康柏.微软.国家半导体等公司共同制定的一个USB主机接口规范,它提供一个更抽象的接口来完成USB数据传输工作. 在OHCI ...

  4. 基于OHCI的USB主机 —— UFI命令 USB Mass Storage Class Bulk-Only Transport协议介绍

    USB Mass Storage Class Bulk-Only Transport Microsoft公司至Windows98后,USB主机 都支持Bulk-Only标准,所以现在的大容量存储类设备 ...

  5. 基于OHCI的USB主机 —— OHCI(设计思路)

    在OHCI层,主要完成如下功能: l  通过控制端口读写数据(包含SETUP.DATA.STATUS等3个TD): l  通过控制端口发送设置命令(没有DATA的TD): l  通过批量端口读数据: ...

  6. 基于OHCI的USB主机 —— 寄存器(其它)

    USB端口关电 对USB端口进行关电处理的目的主要有两个,一是安全拔下U盘,防止带电插拔造成数据丢失或错误,另一个是为了再次开电,对U盘内部程序进行复位. /**  * 断开USB端口的供电  */ ...

  7. 基于OHCI的USB主机 —— USB设备常量定义

    USB设备枚举过程中使用到的常量定义如下: /*-------------------------------------------------------------------------  * ...

  8. 基于OHCI的USB主机 —— UFI命令监视代码

    在调用完上面的UFI命令后,ufiCmdRunning.state就被设置为UFI_STATE_BEGIN态,在主循环中调用本函数,用来判断UFI命令是否执行完毕,以及是否执行成功. /**  * U ...

  9. 基于OHCI的USB主机——UFI查询命令(Inquiry)

    查询命令(INQUIRY)请求获取UFI设备参数的信息.他被用作主机上的驱动器访问FUI设备的配置,特别是在接通电源和硬件复位之后使用.命令内容如下表:  位 字节 7 6 5 4 3 2 1 0 0 ...

最新文章

  1. python逻辑表达式3+45and_Python 简明教程 --- 5,Python 表达式与运算符
  2. CommonJS概述及使用
  3. 悬剑武器库之5种工具学习(shiro检测插件、子域名、信息收集、暴力破解等)
  4. centos 卸载_CentOS安装mysql
  5. HDU-1102-Constructing Roads(并查集)
  6. [转]OpenMP 入门指南
  7. 中海达手簿html测量报告,中海达GPS静态测量—内业解算导出报告(HGO静态解算软件教程)...
  8. 高性能mysql第一章——架构
  9. android获取root代码,Android获取ROOT权限的实例代码
  10. 淘宝商品爬虫实战笔记
  11. 高校计算机水平能力联合测试成绩,学校关于开展2017年度专业技术职务任职资格评审工作的通知...
  12. windows下图像标注软件Labelme安装及使用教程
  13. linux转置的命令,转置文件(awk)
  14. Seaborn调色板颜色设置
  15. springboot+dubbo+zookeeper详细搭建
  16. go语言生成指定个数数字验证码
  17. 【报告】当“无线通信”遇到“图神经网络”——简单理解
  18. 物联网操作系统有哪些特点
  19. 99Echarts - 地理坐标/地图(Hexagonal Binning)
  20. 外贸网站建设注意事项!

热门文章

  1. Java项目:角色权限后台脚手架系统(java+Springboot+Maven+myBaits-Plus+Vue+Element-UI+Mysql)
  2. html 多项选择,选项标签中的HTML多字段选择
  3. Swift Code Snippet
  4. Entity Framework 约定
  5. 安装 ssh 的公开密匙到 iPhone 上
  6. Memcached, Redis, MongoDB区别
  7. Pycharm去掉项目所有 # 注释
  8. Thorntail 2.2.0提供从WildFly Swarm自动迁移的特性
  9. 绝对实用 NAT + VLAN +ACL管理企业网络
  10. 17.SpringMVC核心技术-拦截器