Thanks for all of the input. I will consider the following options.
But for one...
Brendan wrote:
I have reached the stage where I think I want to run the marathon at the Olympics. Of course just because I think I want to do this doesn't mean I've done any preparation or any training, and if I actually tried running the marathon I'd probably end up in hospital before I reach half way.
Yeah, yeah, I know. But can we chill with the sarcasm? You've been doing this for years (decades?) I imagine, and you are a expert on the subject. I may be an expert on another subject that you are not, but that doesn't mean I have to rub my experience in everyone's face. That being said, I (being a hypothetical expert) might be annoyed if someone tries to pretend like they're an expert, or make broad assumptions on topics they don't begin to understand, but I don't think I am doing such. Or if I am, then I do want correction on my wrongs, but I do so humbly without intention of being superior or running marathons without training or such.
And for the next statement...
Brendan wrote:
Start with something simpler like the ancient floppy disk controller, then (using the skills/knowledge you gained from that) try something a little harder like (parallel) ATA controller, then (using the skills/knowledge you gained from that) try something a little harder like a SATA/AHCI controller, then... [maybe you could even begin to fathom writing a USB driver]
#####PREPARE FOR A SET OF OBTUSE GENERALIZATIONS#####I basically (in my limited understanding) see writing a device driver as voo-doo.
If I were to summarize the process:
-You have a device.
-You have hardware controller(s) for that device, which are basically chips on the motherboard.
-These hardware controller(s) interface with the motherboard (and then with the processor, since the motherboard is sort of the bridge that holds everything together).
-This interface is given by one or more ports on the motherboard (perhaps another interface?), and you would need to know seemingly random port numbers to be able to connect to the
controller(s) (our first bit of voo-doo).
-When you connect with the interface, you have to interpret a bunch of voo-doo that the controller spits out.
-You also have to send a bunch of voo-doo commands to the controller which correlate with instructions or processes that the controller executes according to the command issued (and
commands produce outputs, more voo-doo).
-And there is, of course, the context of your problem, which may need algorithms to convert stuff or something else.
In my view, writing a floppy disk driver is not
easier than something else (like USB), it's just much less tedious (and contains a simpler form of voo-doo).
The voo-doo for writing a floppy disk driver is completely different and unrelated to that for USB, or SATA for that matter.
Remember that I am just in this to learn, that's all (perhaps...). Please correct me on my mistakes, being the more experienced ones.
And about the USB specifications, I did find them and downloaded a giant zip file with at least perhaps thirty different specifications. Could I at least have a pointer as to which one to read?
Thank you for your input.