基于层次模型的USB2.0接口芯片IP核固件的设计(2)
3 USB大容量存储设备固件的设计与实现
本IP核固件采用的是Windows OS支持的Bulk-Only传输协议及SCSI命令集。
3.1 固件总流程
该固件涉及到对4个主要中断的处理,即 Com mand端点0的In 中断和Out中断、Bulk-In端点中断和Bulk-Out端点中断。其中端点0主要用于设备枚举过程中主机与设备的交互,Bulk端点则用于枚举成功后主机与设备的交互。
3.2 设备枚举层流程
USB设备的枚举流程。设备从接入 USB电缆开始,依次经过Attached、Powered、Default和Addressed几个状态,最终进入Configured态成为可用设备。
枚举过程中所需的各种描述符表可由用户设置后存放在指定存储单元。
3.3 Bulk-Only传输控制层流程
设备枚举成功后Bulk端点开始工作。设备端 Bulk-Only工作流程如下:
1.主机通过Bulk-Out端点发出命令包CBW;
2.设备接收CBW,解析其中包含的SCSI命令;
3.设备执行SCSI命令,如需要,通过Bulk端点完成Data交换;
4.设备根据SCSI命令执行情况通过Bulk-In端点返回命令状态包CSW给主机;
5.设备等待主机的下一个CBW。
(1)命令接收态:本次命令处理完(已返回 CSW),设备等待下一次主机命令。在该状态下,设备将等待Bulk-Out中断,试图从Bulk-Out端点接收一个有效的CBW。
(2)状态发送态:本次命令已执行完毕,等待主机索要CSW。在该状态下,设备将等待Bulk-In中断,试图从Bulk-In端点发送一个有效的CSW 给主机。
(3)数据接收态:设备通过解析主机命令得知主机将发送数据,于是设备等待接收数据。在该状态下,设备将等待Bulk-Out中断,试图从Bulk-Out端点接收一个或一批数据。数据接收完后设备将根据具体情况确定命令执行结果状态。
(4)数据发送态:设备通过解析主机命令得知主机将索要数据,于是设备准备发送数据。在该状态下,设备将等待Bulk-In中断,试图从Bulk- In端点发送一个或一批数据。数据发送完设备将根据具体情况确定命令执行结果状态。
(5)异常状态:当发生某些不可预知的错误时,设备进入异常态,并将根据不同错误类型采取不同措施试图从错误中恢复。
3.4 SCSI命令解析(层)流程
对某种特定的大容量存储设备来说,一些无意义的SCSI命令可以不必处理(实际上主机也不会使用这些命令)。设备在接收到有效的SCSI命令后,将根据命令的不同要求为数据的发送或接收做好准备,并切换到下一个有效的工作状态,如图5 所示。
3.5 对存储介质的读写操作及优化
设备固件在正确分析主机送来的SCSI命令后,可能会对存储介质进行读、写、擦除等操作。为进一步提高存储介质的读写速度,本固件方案还对存储介质操作进行了有效的优化:
(1)大批量数据读写时采用了DMA方式;
(2)对写操作需时较长的存储介质(如 FLASH)采用了中间缓冲,以减少写操作次数或将写操作移至后台进行;
(3)对存储介质上的磁盘碎片定期进行优化整理。
合理地组合应用这些方法可以有效地改进介质访问的效率。
4结论
上述大容量存储设备的IP核固件已成功实现,其硬件基础是具有自主版权的、含MCU51核的USB设备接口IP核,固件采用Keil51C语言和51汇编语言混合完成。该固件采用分层设计,可以较容易地根据具体应用环境替换其中某些层次的代码模块,具有较强的移植性和实用性。为保证IP核固件具有一定的"健壮性",实现过程中还需要注意仔细设计其中的错误检测和错误恢复机制,包括如何合理安排众多的中断源、如何充分考虑协议中规定的操作时间限制、如何处理Watch Dog溢出等等。
本文讨论的USB2.0设备固件方案不仅有效改进和提高了USB设备的设计开发水平,还可广泛应用于USB2.0设备接口的实际应用设计,具有良好的理论和应用价值。
- “扫一扫”关注融合网微信号
免责声明:我方仅为合法的第三方企业注册用户所发布的内容提供存储空间,融合网不对其发布的内容提供任何形式的保证:不保证内容满足您的要求,不保证融合网的服务不会中断。因网络状况、通讯线路、第三方网站或管理部门的要求等任何原因而导致您不能正常使用融合网,融合网不承担任何法律责任。
第三方企业注册用户在融合网发布的内容(包含但不限于融合网目前各产品功能里的内容)仅表明其第三方企业注册用户的立场和观点,并不代表融合网的立场或观点。相关各方及作者发布此信息的目的在于传播、分享更多信息,并不代表本网站的观点和立场,更与本站立场无关。相关各方及作者在我方平台上发表、发布的所有资料、言论等仅代表其作者个人观点,与本网站立场无关,不对您构成任何投资、交易等方面的建议。用户应基于自己的独立判断,自行决定并承担相应风险。
根据相关协议内容,第三方企业注册用户已知悉自身作为内容的发布者,需自行对所发表内容(如,字体、图片、文章内容等)负责,因所发表内容(如,字体、图片、文章内容等)等所引发的一切纠纷均由该内容的发布者(即,第三方企业注册用户)承担全部法律及连带责任。融合网不承担任何法律及连带责任。
第三方企业注册用户在融合网相关栏目上所发布的涉嫌侵犯他人知识产权或其他合法权益的内容(如,字体、图片、文章内容等),经相关版权方、权利方等提供初步证据,融合网有权先行予以删除,并保留移交司法机关查处的权利。参照相应司法机关的查处结果,融合网对于第三方企业用户所发布内容的处置具有最终决定权。
个人或单位如认为第三方企业注册用户在融合网上发布的内容(如,字体、图片、文章内容等)存在侵犯自身合法权益的,应准备好具有法律效应的证明材料,及时与融合网取得联系,以便融合网及时协调第三方企业注册用户并迅速做出相应处理工作。
融合网联系方式:(一)、电话:(010)57722280;(二)、电子邮箱:2029555353@qq.com dwrh@dwrh.net
对免责声明的解释、修改及更新权均属于融合网所有。