| Electronics > Projects, Designs, and Technical Stuff |
| Evolution of usb connector? |
| << < (12/18) > >> |
| tooki:
Yeah. Gosh, it’s almost as though I addressed this in my rather detailed posts... |
| westfw:
Quote from: james_s on Yesterday at 10:13:14 pm A serial port is still simpler though ... No drivers, no handshaking --- End quote --- Hmm. So you never used a serial mouse or more than two uarts on a PC, eh? Drivers required. Separate drivers for deep FIFO UARTs. Interrupt conflicts, and separate drivers for different vendors that handle them differently. Inherent performance issues because it's fundamentally a byte-at-time protocol not well suited toward being handled by DMA/etc. No "msg" or packet modes, leading to added overhead and protocols (drivers) for anything that isn't a single-byte protocol. Thousands of interrupts per second, per port, usually on legacy buses that do horrible things to modern high speed CPUs. Don't confuse "the driver for the limited case that I wanted to use is built-in" with "complex drivers aren't required." I've written async drivers for fancy (and dumb) uarts that support character traffic, SLIP, PPP, and "other" things, and it's really not that much easier than a higher-level IO device. Especially if you want 10+ to 1500ish ports per box... you can put a scope on it and see the bits, decode them by hand if you like. --- End quote --- Granted... And those little LED breakouts that I mentioned previously were pretty useful for passive devices... Not that we didn't spend tens of thousands of dollars on rs232 "protocol analyzers" anyway... Remember, the original USB 1.0/1.1 spec was intended only for low-speed devices like input devices (keyboards, mice, joysticks, etc), basic printers, and random gadgets. It was not intended as a high-speed bus for high-bandwidth or latency-sensitive applications. --- End quote --- Even USB 1.0 had "full speed" mode and isochronous transfers. 11Mbps was just "pretty fast" for those days... By bloat in USB, I'm talking about adding a new data speed (needs negotiated!) every version ("full speed", "high speed", "super speed", etc...), power delivery negotiation of various sorts, etc. All needing to be backward compatible. Nice for users, not so nice as clean engineering. Not that you can really separate the "engineering niceness" from the "user usability" (perhaps USB was one of the first IO protocols to recognize that need...) --- Quote ---[You can bit-bang RS232] --- End quote --- No you can't. You can bit-bang the uart part, and you still need external drivers to get rs232 (theoretically, anyway.) I can go to sparkfun, or aliexpress, and the cost of a uart-to-rs232 adapter (including official connector) and a uart-to-usb adapter (with official connector) are about the same. And you can still bit-bang the uart side from your "simple" micro. (Hmm. I wonder why there aren't any GP micros that have a full bridge for fixed USB protocols (HID or UART.) Seems like it would be quite popular with the "doing all the USB stuff is too complicated" crowd...) |
| james_s:
--- Quote from: westfw on December 22, 2018, 03:26:22 am ---Hmm. So you never used a serial mouse or more than two uarts on a PC, eh? Drivers required. Separate drivers for deep FIFO UARTs. Interrupt conflicts, and separate drivers for different vendors that handle them differently. No you can't. You can bit-bang the uart part, and you still need external drivers to get rs232 (theoretically, anyway.) I can go to sparkfun, or aliexpress, and the cost of a uart-to-rs232 adapter (including official connector) and a uart-to-usb adapter (with official connector) are about the same. And you can still bit-bang the uart side from your "simple" micro. (Hmm. I wonder why there aren't any GP micros that have a full bridge for fixed USB protocols (HID or UART.) Seems like it would be quite popular with the "doing all the USB stuff is too complicated" crowd...) --- End quote --- *sigh* Maybe some day I'll learn to remind myself before posting how insanely pedantic some people are here, everything has to be spelled out explicitly right down to the letter, can't infer anything. I'm not even sure if this is because people honestly can't figure it out, or whether they enjoy being deliberately obtuse but it's not something I've encountered in any other kind of forum. Who is talking about mice? Yes for a serial mouse you need a driver, just like for a USB mouse you need a driver, normally it's built into the PC but it's still there. No I don't think I ever used more than two serial ports on a PC back before the days of USB serial, although as I recall it was not too terribly difficult to use up to four. Have you written a mouse driver for both serial and USB at a low level? I'd be seriously shocked if the USB mouse driver is less than 10x the amount of code and that's being very conservative. I have a serial port on my Apple II, I have a serial port on most of my FPGA retro computing platforms. There are serial UARTs built into the 8 bit AVRs I use, the last hardware job I had our products all had serial debug ports built in. It's stil the defacto standard even today because it's dead simple, no fuss, 3 wires, it can connect to anything and just works. And yes I know that RS232 technically specifies the hardware and voltage levels but colloquially it is a term that is often used to describe any "traditional" serial communications, even if the actual levels are simply TTL. You knew what I was talking about didn't you? If I just called it "serial" I suppose someone would ask if I meant USB, or SAS, DSI, or some other nonsense rather than figuring it out from the context. I never thought I'd encounter someone claiming that USB is simpler than plain old serial though. I mean 2 wires and a ground, no handshaking needed, you don't even need to go both ways, if one direction is ok you only need two wires. It's been around since what, the 1960s? It can be built in hardware using jellybean TTL ICs. Try building a USB interface out of TTL ICs and then tell me how much simpler it is. Decap a USB IC and compare the transistor count to an old fashioned UART, I'm betting the difference is greater than an order of magnitude. |
| Siwastaja:
--- Quote from: westfw on December 22, 2018, 03:26:22 am --- Quote from: james_s on Yesterday at 10:13:14 pm A serial port is still simpler though ... No drivers, no handshaking --- End quote --- Hmm. So you never used a serial mouse or more than two uarts on a PC, eh? Drivers required. Separate drivers for deep FIFO UARTs. Interrupt conflicts, and separate drivers for different vendors that handle them differently. Inherent performance issues because it's fundamentally a byte-at-time protocol not well suited toward being handled by DMA/etc. No "msg" or packet modes, leading to added overhead and protocols (drivers) for anything that isn't a single-byte protocol. Thousands of interrupts per second, per port, usually on legacy buses that do horrible things to modern high speed CPUs. --- End quote --- It's almost like if we replace a slowly evolved bunch of incompatible things, designed for small niche market of computing back then, with a clean-sheet design that's designed grounds-up exactly to support keyboards, mice, etc., with massive design budget due to it being designed for markets orders of magnitudes bigger, it tends to work for those specific purposes it's designed for; even if it's internally more complex. If it didn't, it wouldn't fly. It's almost if the software has evolved to implement complex automatic operations of probing devices, and installing drivers automatically; despite the lower level being much more complex. It's almost if this has something to do with computers becoming mass market consumer devices, and having excess CPU and RAM to write more complex software. Yet, a funny anecdote: when I needed to install Windows on my machine which has no issues whatsoever running Linux, my mouse didn't work with Windows 7 installer. Third mouse I tried worked, so I was able to install Windows, and download and install a driver manually, to make a freaking USB mouse work on Windows 7. |
| IDEngineer:
My bottom line: USB has grown so far past its original intentions that there is also a need for a much simpler serial interface to fill the role for which USB was originally intended. For example, SPI or I2C could provide a modest performance, easy-to-implement serial comm standard that would cover perhaps 75% of the connections now using USB. I2C accommodates addressing multiple devices on shared serial data lines, and SPI can support data rates of 1MHz (easily) and up to 10MHz (with good cabling). Both of these can be implemented by bit-banging at the lowest level, and are incorporated as on-chip peripherals in a huge number of MCU's for midrange cost and performance. Let USB3+ handle the high data rates, and use a standardized connector for an SPI or I2C lower speed "bus", and you've got the vast majority of usage cases covered with R&D and production costs that scale with required performance. |
| Navigation |
| Message Index |
| Next page |
| Previous page |