基于OHCI的USB主机 —— 总体构架来源: 发布时间:星期一, 2009年11月30日 浏览:0次 评论:0
写在前面话:这篇文章原来发表在我51CTO技术博客里最近把CSDN这边空间恢复了于是把那边文章搬过来
在我们系统中USB主机就是用来对U盘进行读写操作因此在设计和构架上就完全围绕这个目而进行整个系统所涉及到内容比较多按照嵌入式系统开发般原则采用层次化体系结构将系统按照功能划分为若干层次每层完成相应功能 根据系统业务需要系统总体构架如下: 9 业务应用层 8 文件操作API层 7 文件系统层 6 U盘操作命令接口层 5 UFI命令层 4 USB设备管理层 3 OHCI软件Software接口层 2 寄存器读写接口层 1 硬件层 这是个分层结构每层完成自己功能层和层的间都是通过接口完成基本上上层应用都只依赖于下层对于个别层功能实现需要依赖其下2层这是考虑实现方便 下面对每层功能进行介绍说明: 1、 硬件 这是系统最底层直接完成USB协议处理硬件部分 2、 寄存器读写接口 AM9200支持标准OHCI接口提供了访问OHCI寄存器指针(pUhp )和数据交换区(HCCA)本层对该指针和数据交换区访问进行封装对外屏蔽了寄存器读写细节以后如果移植到非OHCI系统上则可以保持在接口不变对该层进行重新编码即可 3、 OHCI软件Software接口 根据OHCI标准数据传输都是通过端点描述符(ED)和传输描述符(TD)这两种数据结构来完成在进行传输的前需要对ED和TD进行相应设置才可以保证数据传输正确性本层对ED和TD操作进行了封装提供基于OHCI数据传输接口 有关ED和TD详细介绍请参考OHCI规范标准Open Host Controller Interface Specication for USB 4、 USB设备管理 根据USB标准USB设备都需要提供设备描述符、配置描述符、接口描述符和端点描述符等信息本层代码提供了取得这些描述符命令 另外本层还将这些取得描述符命令组合起来完成了USB设备枚举和检测 5、 UFI命令 根 据Universal Serial Bus Mass Storage Class Bulk-Only Transport和Universal Serial Bus Mass Storage Class UFI Command Specication规范标准完成BulkOnly协议UFI命令提供扇区读写命令给上层 6、 U盘操作命令接口 方面封装UFI命令层提供以扇区为单位磁盘读写命令譬如diskRead、diskWrite等另方面UFI命令完成U盘枚举和检测确定逻辑0扇区编号为构建文件系统奠定基础 7、 文件系统 完成文件系统化得到相关参数提供目录查找、簇操作等接口给上层 8、 文件操作库 仿照C语言标准文件库提供套便于上层业务应用所使用API库包括文件打开、关闭、读写和定位等 9、 业务应用 这就是业务逻辑层了也就是根据接收计费信息相应文件操作库完成话单保存功能 采用这样层次结构系统具有良好可维护性和扩展性只要CPU支持OHCI标准则本系统就可以不用修改直接使用如果CPU不支持OHCI标准则需要将OHCI层代码进行修改保持上层接口不变就可以完成系统移植了 如果需要扩展支持更多USB设备则保持OHCI层基本不变或适当扩展(目前OHCI层代码只支持控制和批量传输不支持同步和中断传输)添加新驱动以及上层应用就可以了 在这篇文章里我对我们系统进行总体上介绍说明这是为了避免上来就阐述各种技术细节导致叶障目不见泰山在本系列文章中所有代码都是按照这个构架原则来编写记住这个构架对于理解代码会有很大帮助 本文出自 “rainman ” 博客请务必保留此出处http://lancelot.blog.51cto.com/393579/228153 0
相关文章读者评论发表评论 |