本资料为《MUSB编程指南》的翻译版本,提供详细的MUSB(主机模式下的USB)开发指导和参考信息,适用于从事嵌入式系统与硬件驱动开发的技术人员。
MUSB 中文翻译及英文文档指出可以通过会话请求协议(SRP)来发起USB流量,并且双角色设备同时支持SRP和主机协商协议(HNP),这意味着它们可以根据需要担任主机或外设的角色。此外,MUSBMHDRC还支持拆分事务,这使得它能够兼容使用USB 2.0集线器的全速或低速设备。该核心还包括在不使用时关闭便携式设备的功能。
除了端点0之外,MUSBMHDRC是用户可配置的,并且可以最多支持15个‘传输’端点和/或最多15个‘接收’端点。(对于IN事务和OUT事务使用这些端点取决于MUSBMHDRC是用作外设还是主机。当作为外设时,IN事务通过TX端口处理,而OUT事务则由Rx端口处理;相反地,在充当主机角色的情况下,IN事务将通过Rx端口进行,并且OUT事务通过Tx端口执行。)这些额外的端点可以在软件中单独配置以支持批量传输、同步传输或控制传输(同时也允许它们用于中断传输)。此外,还可以动态分配给不同目标设备函数的端点——这最大限度地提高了同时支持设备的数量。每个端点都需要一个FIFO与之关联。
MUSBMHDRC提供了一个RAM接口,用以连接到所有端点FIFOs使用的同步单口RAM块(此RAM块需要用户自行添加)。对于端点0而言,其FIFO必须至少64字节深,并且缓冲1个数据包。根据其他端点的配置需求,该RAM接口大小可以从8字节至8192字节之间调整,并可以缓存一个或两个数据包。另外可以选择为每个端点单独分配FIFOs;或者对于相同编号但分别用于发送和接收的数据流(例如,在它们永远不会同时活动的情况下),也可以将TX端口与Rx端口配置使用相同的FIFO以减少所需的RAM块大小。
MUSBMHDRC提供了一个32位同步CPU接口,设计为连接到AMBA AHB总线。此接口支持在广泛的总线速度下运行,并且也能够处理AHB总线上多层操作。通过添加合适的包装器/桥接器,它也可以轻松地与其他标准总线相连。
MUSBMHDRC还提供对端点FIFOs的DMA访问功能。该设备提供了UTMI+ 3级兼容接口以连接到适当的USB高速收发器,并包含了一个可选ULPI链路封装(详细描述见文档)用于与符合ULPI规范的物理层相连。另外,它也支持使用旧版USB 1.1标准与核心全速PHY进行通信,但仅限于全速和低速事务。
MUSBMHDRC处理所有发送接收USB数据包所需的编码、解码、检查及重新请求,并且只有当端点的数据成功传输后才会中断CPU。在充当主机时,它还维护一个帧计数器并自动调度SOF(开始周期)信号、同步操作以及批量和中断传输。此外,MUSBMHDRC支持用于点对点通信的会话请求协议及主机协商协议,并且这些细节可以在USB 2.0规范中的“On-the-go”补充文档中找到。
该设备提供了一系列测试模式——主要是根据高速运行描述于USB 2.0规范内的四种测试模式。此外,它还提供了选项以强制进入全速、高速或主机操作模式,这在调试硬件物理层问题时可能非常有用。
为了配置核心的需要,有图形用户界面脚本可供使用,具体使用的脚本取决于所选择的CPU接口类型。请注意,在撰写本段落档期间,内核仅作为Verilog代码提供。阅读此规范的同时还应参考USB操作规范以获取电源需求、电压水平及连接器等细节信息。