(1)HC control and status registers:USB主控制器控制和状态寄存器,主要用于传输过程中控制命令的存放和状态的读取,可读可写的寄存器有2个地址,只读或只写的寄存器只有1个地址。
(2)Isochronous Transfer List (ITL):同步传输列表缓冲区。
(3)Acknowledged Transfer List(ATL):接收传输列表缓冲区。
根据USB协议,数据传输分为4种模式,Control(控制),Bulk(整批),Interrupt(中断)和Isochronous(同步)。其中ITL是为了实现同步传输,ATL则实现其他3种模式的传输。
4 ISP1
161x主控制器编程实现
设计ISP1161x主控制驱动程序主要涉及以下2个重要内容,下面详细介绍:
4.1 读/写ATL和ITL缓冲区
ATL和ITL缓冲区的位于ISP1161x内部的FIFO缓冲RAM之中,每个缓冲区包含许多Ptd(Philips Transfer Descriptor),而Ptd用于主控制器硬件发送或接收USB包从USB设备,作为调度USB传输的一部分,HCD在系统内存中购建Ptd。然后HCD将购建好的Ptd移入ATL或者ITL缓冲区,主控制器硬件允许软件去访问每一个缓冲区,就像他们是分离的硬件缓冲区,HCD访问ATL缓冲区通过硬件寄存器HcTransferCounter(22H/A2H)和HcATLBufferPort(41H/C1H),而ITL缓冲区则由HcTransferCounter和HcITLBufferPort(40H/C0H)访问。下面一段示例代码取自于本项目,其功能是向ATL缓冲区写数据,hci→hp→atl_len表示,ATL则在内存中还没有发送的数据的长度,hci→hp→tl表示缓冲区的地址。