很久以前,大概是前年年底吧,因为公司项目的要求,我做了基于OHCI的USB主机访问U盘的程序,用来把系统中产生的一些数据保存到U盘中。本来做的时候就想把其中的一些经验体会发表的,可是工作实在是太忙,而且也的确有点懒,就一直拖到了现在。
做访问U盘的USB主机,网上有很多现成的例子,从硬件到软件。可是绝大多数都是使用了专用的USB主机芯片,譬如ISP1160。还有现成的详细资料,譬如周立功公司出品的《ARM嵌入式系统软件开发实例》系列教程。但是,凡事都怕这个但是,我们公司项目偏偏不使用USB主机芯片,而是直接利用ARM9200芯片自带的接口直接来完成这个功能。
当时遇到的困难简直是多如牛毛,再加上智商又低,光是刚开始通过控制端点发送命令的程序就调试了有几个星期。总的来说,当时调试程序大量的时间是花在了底层的代码调试,真正到了磁盘操作、文件系统操作、业务功能实现的时候,所花费的时间反而还少了。毕竟上层的业务逻辑写好了以后,我还通过自己编写的一个简单的单元测试程序进行了一些测试。
痛定思痛,我决定还是把调试过程中那些苦恼的日子里总结出来的一些经验分享出来,希望也能为相关的开发人员节省一点时间。毕竟网上基于OHCI的USB主机访问U盘的资料实在是太少了。
我看了看我的那个程序的设计文档,足足有100页,当然这里面也包含了部分的代码,不过好在当时就写下了设计文档,可以让我的这个系列文章轻松不少。

基于OHCI的USB主机 —— 前言相关推荐

  1. 基于OHCI的USB主机 —— 结束语

    从去年11月份开始连载的<基于OHCI的USB主机>系列总算告一段落了,到UFI命令层为止,所有USB主机的底层处理就结束了,再上面就是磁盘读写.文件系统.文件读写和应用系统了.这些上层应 ...

  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. keras 的 example 文件 reuters_mlp.py 解析
  2. 朴素贝叶斯python实现预测_Python实现朴素贝叶斯分类器的方法详解
  3. hashmap原理_想要彻底搞懂HashMap?你得恶补下HashMap原理
  4. 349套HTML5+CSS3各行各业网站模板免费下载
  5. Redis 再牛逼,也得设置密码
  6. RabbitMQ入门教程——发布/订阅
  7. keepalived高可用lvs集群,主/备和主/主模型
  8. [SQL SERVER 2005]数据库差异备份及还原
  9. 解决切换场景时NGUI图集资源未释放的问题
  10. java 怎么获取object的数据_自学java,想将来从事大数据工作,现实吗?怎么学?...
  11. IOS第11天(4:UIDatePicker时间选择,和键盘处理,加载xib文件,代理模式)
  12. python的统计库_python--学习笔记13 统计库
  13. vb杨辉三角代码编写_如何用VB编程输出杨辉三角?
  14. newtonsoft
  15. 博微三维技术篇【八】——智能CAD识别
  16. Window10下修改User文件夹中的 用户文件夹 名称
  17. WPS Office 2021 for Mac(办公软件)
  18. cmd安装pip以及第三方库的最简单的安装方法
  19. 泡泡龙游戏开发系列教程(二)
  20. Image Caption 常用评价指标

热门文章

  1. 【Java注解】注解基础
  2. Vue学习小札——2.6 组件参数校验与非props特性
  3. java多线程之锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
  4. loadrunner中错误为27796的一个解决方法
  5. MegaRAID阵列卡配置RAID阵列 - WebBIOS - CLI
  6. linux svn 开机启动
  7. C++中MessageBox()的详细用法(转载)
  8. 使用SAP C4C rule editor动态控制UI上某个按钮是否显示
  9. 腾讯技术工程 | 腾讯数据平台部总监刘煜宏:这5大产品平台,展示了腾讯大数据的核心能力...
  10. 有经验的JAVA程序员如何提升自己?