79835674

Date: 2025-12-02 09:29:28
Score: 1
Natty:
Report link

🛑 The Low Speed USB Bottleneck

You've correctly identified the main factors limiting LS bandwidth:

Your calculation is spot-on: $100 \text{ packets/sec} \times 8 \text{ bytes/packet} = 800 \text{ bytes/sec}$. You need $\approx 10 \text{ kbytes/sec}$.


🛠️ Potential Workarounds and Feasibility

Given that you control both ends and compatibility is not an issue, here's an assessment of your options:

1. Increasing the Interrupt Poll Rate (High Risk/High Reward)

2. Increasing the Packet Size (Impossible/Lost Cause)

3. Using a Custom Class (Low/Medium Utility)


⚙️ Recommended Strategy: Modifying the Host Controller Driver

The most promising path is to modify the Host Controller Driver (HCD) on the iMX RT1060 to force a $1 \text{ms}$ polling rate for the LS interrupt endpoint.

How to approach it:

  1. Understand the HCD: Identify the specific Host Controller hardware (likely a Synopsys or similar core within the iMX RT1060) and locate the relevant driver code (e.g., Linux's $\text{OHCI/EHCI/xHCI}$ or the bare-metal equivalent provided by NXP).

  2. Inspect the Schedule: The HCD maintains a Frame List or Schedule for every $1 \text{ms}$ frame. It determines which transfers happen when. LS and FS transfers are scheduled in the same $1 \text{ms}$ frame, but LS transfers must respect the $10 \text{ms}$ rule.

  3. Bypass the Check: You need to find where the driver enforces the minimum $10 \text{ms}$ interval for LS interrupt transfers and override that check to allow scheduling in every $1 \text{ms}$ frame slot.

  4. Packet Chaining: On the Device side (LPC55S69), ensure your firmware is ready to service the endpoint immediately with new data. Since you're polling faster than the spec, you'll need to chain multiple 8-byte packets together as quickly as possible. When the host requests a packet, the device should quickly respond with the next 8-byte chunk of data.

Crucial Warning: Forcing a $1 \text{ms}$ poll rate on an LS device increases the Bus Utilization significantly, potentially violating the $90\%$ max utilization rule and possibly causing timing issues or errors. You must thoroughly test for NAKs, CRC errors, and unexpected disconnects.


✅ Conclusion: Is it a Lost Cause?

No, it is not a lost cause.

Recommendation: Invest the time in modifying the Host Controller Driver on the iMX RT1060. This is the only change that directly addresses the major bandwidth bottleneck (the polling rate) and offers the most significant payoff.

Reasons:
  • Long answer (-1):
  • No code block (0.5):
  • Contains question mark (0.5):
  • Low reputation (1):
Posted by: Sikto Saha