簡體   English   中英

為什么 dwc3 usb controller 沒有報告 xfercomplete 事件? 或者小工具驅動程序錯過了那個事件?

[英]why a dwc3 usb controller didnot report xfercomplete event? Or the gadget driver missed that event?

使用usb的Android手機連接PC,打開rndis,然后在手機和PC之間進行iperf測試。 經過幾個小時的測試,rndis 的端點 ep1out 沒有收到小工具驅動程序在發送傳輸命令后應該收到的 xfercomplete 事件。

我嘗試將事件緩沖區大小從 256 擴大到 4096,也將 grxfifosize 的值從 delault 中放大,但問題仍然存在。

手機有8個cortex-A53核心,但是我們留下1個小核心(cpu0)和1個大核心(cpu7)在線,由於吞吐量原因,通過設置dwc irq的smp_affinity設置dwc中斷不路由到cpu0。 所以dwc3_interrupt在cpu7上運行,dwc3_thread_interrupt也在cpu7上運行。

很奇怪,如果我們將 irq 路由到 cpu0,並且 dwc3_thread_interrupt 在不同的 core(cpu7) 運行,問題就消失了,不明白為什么。

代碼是來自 synopsys 的開源代碼,您可以在 kernel/drivers/usb/dwc3/gadget.c 找到

https://github.com/aosp-mirror/kernel_msm/blob/e8adfc30ff9282a728fd8b666b6418308164c415/drivers/usb/dwc3/gadget.Z4A8A08F09D37B73795364

提前致謝。

終於找到了答案,eventbuffer中的事件數據在中斷和EVENTCOUNT寄存器之后延遲了。 當問題發生時,事件緩沖區中的數據是上一輪的臟數據。 通過多次讀取數據,得到了正確的數據。

因此,它並沒有錯過 xfercomplete,而是延遲了。 不知道為什么會發生延遲,應該是在傳輸完成后產生中斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM