This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320DM8168:通过集线器提供 USB 音频支持

Guru**** 2620175 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/662710/tms320dm8168-usb-audio-support-through-a-hub

器件型号:TMS320DM8168

尊敬的 Tis:

我使用的是 dm8168定制板、PSP 为4.01.00.02。

我想支持 USB 扬声器。 直接将 USB 扬声器与 dm8168 MUSB 主机连接时、一切都可以正常工作。

但在 MUSB 和扬声器之间连接集线器时、我无法从扬声器接收音频数据。(MUSB <-> USB 2.0集线器<-> USB 扬声器)

在搜索论坛后...有许多类似的问题:

https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/p/424838/1517884

e2e.ti.com/.../328660

https://e2e.ti.com/support/arm/sitara_arm/f/791/p/441882/1618927

强制 USB2.0集线器以全速模式运行可解决此问题...但我们的产品需要使用 USB 高速模式。

此问题是否由2.0集线器引起? 我尝试过两个集线器、但结果相同...

以下是有关此问题的详细说明:

USB 连接:dm8168 mUSB <--> USB 2.0集线器--> USB 扬声器

2. USB 扬声器:Sennheiser SP20

   MIC:速率= 16000、通道= 1、格式= S16_LE

   扬声器:速率= 48000、通道= 2、格式= S16_LE

3.使用 alsa 实用程序来捕获和回放音频数据

   # arecord -D HW:S20、0 -r 16000 -f S16_LE /root/sp20_16k_mono.wav <=正常工作!!

   # aplay -D HW:S20、0 -f CD /root/48k.wav <=正常工作!!

   # arecord -D HW:S20、0 -r 16000 -f S16_LE /root/sp20_16k_mono.wav | aplay -D HW:S20、0 -f CD /root/48k.wav <=无法录制音频数据、但 aplay 正常!

强制 USB2.0集线器以全速模式运行并将免提电话直接连接到 MUSB 可以解决此问题。

5.测试了两个集线器和三个免提电话。 结果是相同的。

6.我已经尝试了采用 DMA 模式和 PIO 模式的 MUSB

有人可以就这个问题给我一些建议吗?

谢谢!

BR、

Steven

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Steven、

    此 PSP4.01.00.02非常旧、未能使用某些 USB 补丁。 请尝试使用最新 PSP 4.04.00.02中提供的所有 USB 相关补丁来修补内核、并查看是否有任何改进。

    arago-project.org/.../



    另请检查您的 DM816x 器件是 PG1.x 还是 PG2.x、因为 PG1.x 不支持 USB 集线器。 TI816x 器件的 PG 1.0版本仅支持 Mentor USB IP 内核中的点配置、因此不支持集线器。 因此、只能将一个器件连接到 USB 的每个端口。



    另请查看以下 wiki 页面:

    processors.wiki.ti.com/.../TI81XX_PSP_04.04.00.02_Release_Notes
    processors.wiki.ti.com/.../TI81XX_PSP_04.04.00.02_Feature_Performance_Guide
    processors.wiki.ti.com/.../TI81XX_PSP_User_Guide

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢您的快速回复。

    我已经在 git://arago-project.org/git/projects/linux-omap3.git ti81xx-master 分支中尝试了最新的内核

    但结果是相同的。

    此外、我检查我的 DM816x 芯片是否为 PG2.1 (来自内核消息:OMAP 芯片是否为 TI8168 2.1)

    USB 集线器功能在某些用途(例如通过集线器使用 USB 鼠标和 USB 存储)下在我们的定制板上正常工作

    我认为我们的 DM816x 定制板上提供了 USB 集线器功能。

    请注意、USB 音频功能仅在同步捕捉和回放时工作失败、强制 USB 2.0集线器在全速模式下工作可解决此问题。

    当 USB 设备以全速模式工作时、DM816X MUSB 和 USB 2.0集线器似乎存在一些错误或兼容性。

    正如我提到的、这个问题与以下问题类似:

    e2e.ti.com/.../328660

    但不幸的是,这不是答案。

    您能给我一些关于此问题的建议吗? 还是必须停止以通过 DM816x 定制板中的集线器支持 USB 音频功能?

    非常感谢。

    BR、

    Steven

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Steven、

    我可以为您提供几个提示:

    1.尝试在 DM816x TI EVM 上重现此问题。 如果无法在 EVM 上重现问题、则可能是定制板的硬件故障

    2.尝试在内核中启用调试消息,并在运行全双工音频用例(arecord | aplay)时检查是否有更详细的控制台输出。 共享日志。 另请查看以下有关 USB 调试的 wiki 页面。

    processors.wiki.ti.com/.../USB_Debug_Techniques
    processors.wiki.ti.com/.../Usbgeneralpage

    3.尝试提高 USB 端口的性能。 USB 数据流量启动器具有针对 L3互连的可编程压力控制和针对 EMIF 的优先级控制。 调整这些参数后、您可以启用 USB 启动器以获取它所需的延迟和带宽。

    此致、
    帕维尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢你的帮助。

    1.尝试在 DM816x TI EVM 上重现此问题。 如果无法在 EVM 上重现问题、则可能是定制板的硬件故障

    在 EVM 上测试"arecord | aplay"后、结果相同。

    2.尝试在内核中启用调试消息,并在运行全双工音频用例(arecord | aplay)时检查是否有更详细的控制台输出。 共享日志。 另请查看以下有关 USB 调试的 wiki 页面。

    启用调试消息后、当我运行全双工音频用例时、似乎没有 DMA Rx。 因此没有音频数据可供记录。

    此外,alsa 记录日志显示 snd_pcm_wait()总是超时,因为没有音频数据。

    # arecord -D HW:S20、0 -r 16000 -f S16_LE /root/sp20_16k_mono.wav | aplay -D HW:S20、0 -f CD /root/48k.wav

    [0.000000]   cppi41dma_Interrupt 809:CPPI 4.1 IRQ:TX 0、Rx 0
    [0.000000]   cppi41dma_Interrupt 819:CPPI 4.1 IRQ:TX 200、Rx 0
    [0.000000]   USB_process_TX_queue 1544:等待 TxF-EmptyIntr EP10
    [0.000000]   ti81xx_interrupt 930:usbintr (4000000) epintr (0)
    [0.000000]   ti81xx_interrupt 934:ISR:TxFifoIntr 200
    [0.000000]   cppi41_handle_txfifo_intr 1389:txc:givback EP10
    [0.000000]   musb_host_TX 1293:out/TX10 end、CSR 3400、dma
    [0.000000]   cppi41_NEW_TX_SEGMENT 553:TX DMA9、加速、maxpkt192、1个 PD、addr 0xd784e300、 Len 192
    [0.000000]   cppi41_NEW_TX_SEGMENT 607:TX PD ffc7ff40:buf d784e300、len 000000c0、pktinfo 14000086
    [0.000000]   cppi41_NEW_TX_SEGMENT 615:TXS (ffc7ff40 192)启用 txFintr
    [0.000000]   Txfifoempty_intr_enable 596:启用 TxF intr EP10 coremask 40001f7

    仅运行 arecord 时。 DMA Rx 中断。

    # arecord -D HW:S20、0 -r 16000 -f S16_LE /root/sp20_16k_mono.wav

    [0.000000]   cppi41dma_Interrupt 809:CPPI 4.1 IRQ:TX 0、Rx 0
    [0.000000]   cppi41dma_Interrupt 819:CPPI 4.1 IRQ:TX 0、Rx 800
    [0.000000]   USB_process_Rx_BD 1583:Rx 完成:DMA 通道(11) ep12 len 32
    [0.000000]   USB_process_Rx_BD 1607:CURR_PD=ffc7ff40、len=32、origlen=32、rxch (alen/len)=32/32
    [0.000000]   musb_host_rx 1592:<= HW 12 rxcsr 2000、话术实际值0 (+DMA 32)
    [0.000000]   musb_host_Rx 1758:EP 12 dma off、rxcsr 2000、rxcount 0
    [0.000000]   musb_Adv_schedule 495:... 接下来的 ep12 RX 模板 d9662cc0
    [0.000000]   musb_start_hurb 277:qh d979d4c0模板 d9662cc0 dev3 ep3in-iso、hw_EP 12、ffc150e0/32
    [0.000000]   musb_ep_program 778:<- hw12模板 d9662cc0 spd2 dev3 ep3in h_addr02 h_port01字节32
    [0.000000]   cppi41_next _Rx_Segment 787:Rx DMA11、透明、maxpkt32、addr 0xd97e60e0、rec'd 0/32
    [0.000000]   musb_EP_program 975:RXCSR12:= 2020
    [0.000000]   musb_giveback 350:完整的 d9794180 snd_complete_话 术+0x0/0xa8 (0)、dev3 ep3in、32/32

    3.尝试提高 USB 端口的性能。 USB 数据流量启动器具有针对 L3互连的可编程压力控制和针对 EMIF 的优先级控制。 调整这些参数后、您可以启用 USB 启动器以获取它所需的延迟和带宽。

    我不知道对 USB 数据流量进行微调。 为什么全速 USB 2.0集线器工作正常、高速故障?

    毕竟、我尝试将 MUSB 驱动程序迁移到内核版本 v3.2。  但运气不好...结果是一样的。

    在谷歌搜索后、我认为 SMSC/Microchip 的答案可能是 useful....please、请参阅 e2e.ti.com/.../328660

    USB2.0主机控制器的物理层、很可能具有 EHCI 和 UHCI (EHCI 处理高速 USB 协议、UHCI 处理 FS/LS)。 我认为音频设备是全速设备、因此:


    1) 1)正常情况下、主机必须使用将路由到 USB2512Bi 集线器内的 TT (事务转换器)的特殊分离事务处理 FS 器件。  这些事务将在音频设备的下游生成 FS 数据包
    2) 2)发生故障时、主机无法生成拆分事务。  因此、主机现在可能会使用高速(HS)数据包 ...no HS 连接到下游。 因此、不会发生响应、超时或意外事件。

    当音频直接连接到主机时、它会直接透明地与 UHCI 控制器进行通信、绕过作为全速器件的 EHCI。  在另一种情况下、当 USB2512Bi (一个 HS 集线器)时、主机将通过 EHCI 控制器连接集线器、并且必须通过拆分事务与连接在集线器下行端口的 FS 器件进行通信。 这就是为什么当您将集线器配置为全速集线器时(不需要 TT)、音频设备工作正常。

    我认为这是(TI)主机驱动程序堆栈问题的一个例子。

    任何帮助都将不胜感激!

    谢谢

    BR、

    Steven

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Steven、

    2.当中间没有 USB 集线器时、DM816x 板可以在全双工音频(arecord | aplay)高速下正常工作。 因此、这个轮毂似乎是一种瓶颈。 您可以使用示波器探索 DM816x USB 引脚、在使用集线器和不使用集线器时、并检查差异、这可能会为您提供一些其他信息。

    3. USB 端口性能可通过以下寄存器进行调整:

    INIT_PRESSURE _1[7:6] USB_QMGR、[5:4] USB_DMA


    有关 DM816x 软件的任何详细软件支持、错误修复或增强功能、请联系下面推荐的任何精选合作伙伴:

    e2e.ti.com/.../426680