1. 端点0中断处理
* 选择端点0
* 读取端点0状态查看接收到的数据长度
* 判断错误状态,如果出错设置urb->status状态并结束urb请求
* 判断端点0状态做出相应动作并更新状态
1)START : 发送setup包,并设置为IN或者OUT状态
2)IN : 读入数据包到urb
3)OUT : 写数据包到FIFO
* 更新MUSB_CSR0状态寄存器
* 如果传输完成则从主机端点链表中删除urb
* 如果主机端点的urb列表空,清空硬件端点队列否则重新启动一个传输
发送包过程:
1)发送SETUP包
2)发送数据包
3)请求一个IN包(ACK)
接收包过程:
1)发送SETUP包
2)读出FIFO数据包
3)发送0字节包(ACK)
硬件端点结构体(musb_hw_ep)
musb指针
fifo地址
寄存器地址
端点号
输入队列
输出队列
musb输入端点结构体
musb输出端点结构体
发送/接收DMA通道
musb队列(musb_qh)
对应的主机端点
对应的usb设备
对应的硬件端点
环头部
队列传输类型(BULK,INT,ISOC)
端点号
设备地址,hub地址,端口地址,类型寄存器值,
* 选择端点0
* 读取端点0状态查看接收到的数据长度
* 判断错误状态,如果出错设置urb->status状态并结束urb请求
* 判断端点0状态做出相应动作并更新状态
1)START : 发送setup包,并设置为IN或者OUT状态
2)IN : 读入数据包到urb
3)OUT : 写数据包到FIFO
* 更新MUSB_CSR0状态寄存器
* 如果传输完成则从主机端点链表中删除urb
* 如果主机端点的urb列表空,清空硬件端点队列否则重新启动一个传输
发送包过程:
1)发送SETUP包
2)发送数据包
3)请求一个IN包(ACK)
接收包过程:
1)发送SETUP包
2)读出FIFO数据包
3)发送0字节包(ACK)
硬件端点结构体(musb_hw_ep)
musb指针
fifo地址
寄存器地址
端点号
输入队列
输出队列
musb输入端点结构体
musb输出端点结构体
发送/接收DMA通道
musb队列(musb_qh)
对应的主机端点
对应的usb设备
对应的硬件端点
环头部
队列传输类型(BULK,INT,ISOC)
端点号
设备地址,hub地址,端口地址,类型寄存器值,