3 ms·
USB in general seems like a deep, deep rabbit hole. You could devote your entire career to becoming a USB expert. The USB 2.0 spec is like 700 pages long. The 3
by umvi 7y ago
USB in general seems like a deep, deep rabbit hole. You could devote your entire career to becoming a USB expert. The USB 2.0 spec is like 700 pages long. The 3.0 spec is like 500 pages long and requires you to be familiar with the 2.0 spec at the very start.
I started digging into USB for a project and the rabbit hole kept going deeper and deeper; I never fathomed the amount of complexity hidden under the hood of USB until I needed to start talking to a Qualcomm modem on the other side of a USB 3.0 connection (and the modem, even though it is a single device, enumerates 16+ USB 3.0 endpoints, which is a problem for a lot of ARM SoCs, or at least the vendors we tried!).
- yrro 7y agoWhat do they all do!?
- derefr 7y agoI would guess that they're basically directly exposing the modem's ACPI device subtree over USB, the same way they would over PCIe. So you've got one endpoint corresponding to the data TX DMA region; one corresponding to the data RX DMA region; one corresponding to the command IO stream input; one corresponding to a command error channel; one corresponding to each different axis of mode-setting; etc.
- marcosdumay 7y agoWell, this design is better than the alternative. Composing simple devices in a hierarchical address is much better than the old complex devices that had everything explained on the same datasheet, but it had 300 pages and no two devices were alike.
- m463 7y agoThat said, the serial cables that preceeded USB had very simple specs that put the brunt of interconnection complexity on the user. 7 bits even parity? 8 bits no parity? hardware or software flow control? how do I know the modem is connected? lots o' fun!
- Someone 7y ago”had very simple specs” The specs weren’t that simple (why would a serial port connector need 25 wires?). It’s more the implementations that were simple, going down to 5, 3 or even 2 wires (https://en.m.wikipedia.org/wiki/RS-232#3-wire_and_5-wire_RS-232 https://en.m.wikipedia.org/wiki/RS-232#3-wire_and_5-wire_RS-...)
- deleted 7y ago[deleted]
- addicted 7y agoThe number of pages don't tell you anything though. I'd assume there are a bunch of reference designs, probably provided by the USB consortium itself, which should make it unnecessary to know anything about the spec to produce a USB C port.
- Taniwha 7y agoThere are open source designs (that I've successfully copied) that show how the RPI people should have done this correctly, it's not hard - in this case they tried to save a 0.1c resistor The hard bit is fitting all those traces (some potentially high current) around that dinky connector with 24+ ground pins - with many all trying to do the swap thing at the same time
- StreamBright 7y agoThe question is: do we really need these rabbit holes?