I - and, I
suspect, tony - would say that's a good reason to use
something other than USB as an interface. It's a large part of the
reason I am unhappy depending on USB for anything: it is complex enough,
and ill-documented enough (are the specs even available without
substantial payment and an NDA? I've never looked)
The full specification from PHY level to application layer is open. The
only thing you have to pay for is a Vendor ID allocation. Or if you want
to use the "trident" logo, you have to pay for a Trademark License and do
qualification testing.
In practice? Few pieces of equipment actually use the logo; most either
use the text "USB" (which AIUI isn't trademarked), or just leave the port
unlabelled.
USB has reached a point of ubiquity such that you can point to the
rectangular USB socket on a PC, ask any PC user what it is, and they'll
say... "It's a USB port!"
Exactly the same way that a user looking at a 36 pin contronics connector
on a CP/M era machine would say "Thats a printer port". Or a 25-pin
female 'D' connector on a DOS era machine would say "thats an LPT"
port, or a 25-pin male 'D' connector and say "Thats a serial port". Or
a 15-pin 'D' and say "thats a joystick port". Or a 5-pin DIN connector
and say "thats a keyboard port" ...
All of these are gone from modern PCs. Lots of "younger generation"
people already don't know what a LPT port or a serial port is. They
might know that some of their friends "really old" systems use a
"round" keyboard or mouse connector - but they are speaking of
the PS/2 connector (which is also disappearing).
USB will fade - it will fade faster than parallel, serial, keyboard etc.
because it's hard to talk to - as soon as something bigger-better-faster
becomes mainstream, it will drop from "current" systems, and the
support chips will go end-of-life shortly afterward. 5 years later, few
people will know what it was, and 10+ years later it will be completely
unknown (except to people like us :-). It's astounding how quickly "PC"
technology is obsoleted (it's already getting hard to find IDE drives,
PS/2 keyboards and mice - etc. and I still depend on systems that
use these components).
I wouldn't use USB for anything that I wanted to be usable 20 years
in the future - I wouldn't even count on it for 10.
For high-speed communications I use ethernet - much easier to talk
to and lots of support. I think it has a better long-term viability.
Still - it will also fade eventually (I don't think nearly as fast as
USB) - If I really need to know I will be able to talk to it in the "far
future" - I use serial. Hell, I can build level translators with
transistors and bit-bash the serial data if I have to.
> that, once
> now-common chips that implement it are no longer available, USB devices
> will become basically useless.
Absolutely!
The standard is open. You can implement a USB2.0 Full
Speed (not High
Speed 480Mbps -- 12Mbps or 1.1Mbps) host adapter on an FPGA without too
much effort. EHCI, UHCI and OHCI are all documented (EHCI is the I/O
interface for USB2 HAs, UHCI and OHCI cover USB1.1) and standardised.
Sure it's more difficult than RS232 but it can be done.
Yeah, but it's a matter of cost .vs. return. Sure, if if some critical
bit of historical information is stored on an ancient USB device, chances
are some organization would fund the research and development needed
to communicate with it.
But that doesn't mean that anyone who might want to save a bit of
data from an old non-functional system he found in a garage will
find it worthwhile. The development to talk to USB devices from
"bare metal" is substantial.
And if you want RS232 from a Discferret? See that UART
port? :)
Swap the communication code for an RS232 implementation. You can
probably keep HandleEvent() as is. The only reason it hasn't been
implemented is because it'd be so slow as to be unusable. If there's
sufficient demand, I'll implement it.
Why is RS-232 "unusable"?
It may not be fast, but it beats the hell out of not getting the data.
I've imaged many disks from native systems over a serial port.
Sometimes a slow serial port - Might take a few minites, but
the images were recovered. And that is often older systems that
often can't go above 9600 (or if you are lucky 19200).
115k is pretty standard these days -- about 11k/second. To
transfer a meg would take about 1-1/2 minites. Even if you
double that for overhead - I'd wait 3 mins to get an image from
a disk I really wanted.
> not understand it; my view generally is
"costs more, less flexible,
> worse support, what's to like?". Yet people persist in going with the
> commercial products. I've never found it explained in a way I can even
> understand, much less agree with.
Some people buy into the idea of support - sometimes it is real,
sometimes it is an illusion. The idea of having a company "backing
it up" appeals to them ... although I find I get much better support from
individual authors whether or not they charge for their package.
Another factor is that commercial products are motivated by the desire
to make money - I agree that this does NOT mean they will have better
code, but it usually means they are designed to appeal and "perform in
the showroom". Dancing bears and beating drums - many people will
base their decision on what it looks like in a first impression and how
many "features" it has, not how well it was designed or will ultimately
work.
I've been watching this thread, and I'm surprised nobody has mentioned
another very good reason for a casual developer to charge a modest
fee for his product/service instead of giving it away - even it he is not
out to make money....
"Nothing dispells enthusiam like a small admission fee"
Sometimes a small fee is the best way to filter out those who would
happily avail themselves of your time but have no serious interest.
Offer to email <insert something interesting that you have created>
to anyone who asks and you will be flooded with requests. Offer
to email to anyone who sends you $5 and the load will be far more
manageable...
--
dave12 (at) Dave Dunfield
dunfield Firmware development services & tools:
www.dunfield.com
(dot) com Classic computers:
http://www.classiccmp.org/dunfield/