usb-host

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地址,端口地址,类型寄存器值,

   

你可能感兴趣的:(usb-host)