根据上面的介绍可以发现,通过USB端口进行数据收发的主要工作就是构建ED和TD列表。其中ED列表控制数据的传输方向,TD列表完成具体的数据打包和传输。
按照OHCI规范,ED和TD列表都是可以在使用过程中对某个节点进行修改,比如增加和删除。但是为了程序处理简便起见,最好采用顺序处理模式,也就是一个命令执行完毕以后,再重新构建新的ED和TD列表,执行下一个命令。
进行控制/批量传输的主要处理流程如下:
1、 创建控制/批量传输的ED列表;
2、 创建ED下的TD列表;
3、 设置命令到相应寄存器开始数据传输;
4、 在中断处理程序中判断数据传输是否结束;
对于控制传输来说,实际上一次控制传输只需要1个ED即可,而批量传输则需要2个ED,分别用于批量出端口和批量入端口。
控制传输的ED下面需要有3个TD,分别是SETUP、DATA、STATUS(对于没有数据的命令,则不需要DATA,因此不需要相应的TD)。
批量写数据命令Out ED下面有2个TD,分别是CBW、DATA,In ED下面有1个ED,是CSW。
批量读数据命令Out ED下面有1个TD,是CBW,In ED下面有2个TD,分别是DATA和CSW。
本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/239944,如需转载请自行联系原作者