Originally Posted by CompUser101
The main reason is because I wanted to work in tangeant with it to learn hardware design also. I figured It might help kill sever birds with two stones. You have to consider the hardware to write the drivers correct?! So I could learn both in the process possibly and then do whatever with the knowledge. And I think I would like writing in assembly personally. I'd probably for the heck of it turn it into a high level language and write libraries for it anyway. I've always wanted to do that. Either way I still need a lot of the other knowledge like hardware I think to figure out how to write certain things. I think most of my ideas of programing are a bit old but I'd love to try them one day. So I'd like to start learning as broadly as possible. And as thoroughly.]
To work on the driver stuff I would start trying to do something like kernels or drivers in linux but I dont' think they support it as much either and I'm used to windows. I have xp and 3.1 and an old comp i can do anything to I want. So it may not be a big deal. I would love to write some (when I am capable) and try to get the modems and stuff to work.
Also I keep holding onto older stuff because I get the feeling you don't learn it anymore. And I don't want to get some partial education or anything and never have the capability to work on certain things that I possibly could have. (not necessarily in a job. Just privately. Maybe I could do something with it one day. Directly or indirectly.) And I can never fully stand high level languages. I don't want to use them till I know assembly and learn the languages in more detail. When I know them fully then I'll use them. but it drives me nuts blindly writing things in them. I don't like the learn by feeling my way through if that makes sense.
Also part of hte issues for me is I started learning about 15 years ago. Did the normal thing learning languages lightly. I usually stopped part way since I had nothing to do with them.(probably why I want assembly. There are more direct goals i know to program. and one I want to learn.) When I started learning stuff in general about computers there were a lot of things to read about and a lot of it isn't available anymore. Especially general computer design cpu design graphics design, etc. Hardware and software. And I'm trying to pick back up and get a fully thorough background in at least those things.
I am in a bachelors degree for Computer science so I will be learning it. I'm actually trying to figure if I should do what they call a CSET(computer science and engineering tech) which from what I know is lower end math and more geared towards things like administrating, and CSE computer science engineering which is geared towards higher calculus and more theoretical things as they say. So hopefully I'll learn a lot in it, but I'm worried I won't learn everything I have been wanting to for so long and I want to go over these things regardless. And it would be particularly nice to get to go over them if I can find them before i hit those classes. Then I can incorporate the knowledge in them what I want and hopefully have an easier time taking the class in and using the knowledge. If any of that makes sense.
Edit: I've seen lots of tutorials on assembly saying, lets say, what registers are but I have not gotten the chance to understand them in full on the hardware level to know how to utilize them. Or at the least take a really good stab at it. and start learning. I can never find the base information to work my way up.. So far from what I've seen none of it is that complicated. I know it would be easier if it was studied it in whole. I've known that since the start. But i can't find the info to learn it. There isn't a lot of literal information( I consider it qaulity information) to study using real hardware and problems, designs, and purposes in those designs. I could go on forever about it if I could find the words.
I was going to start using linux also but I was a very hard time finding the basic info to use it. Even syntex and the file system. It was ridiculous.
The funny thing is your first choice was right, I mean...
The vast majority of Linux drivers are open-source (not all, of course), so you can get an idea about how a driver works, and being for Linux doesn't have anything to do per se, in the sense that you can learn how the registers are written/read to/from.
The site FlakMagnet has pointed you out is also a very good source of information, and you should understand the basics of processor register/instruction set before you attempt to code anything further (at least, in my opinion).
About the file system, what's your problem with it? I mean... Linux inherits the most common UNIX principle: 'everything is a file'. A device and a regular file are represented by exactly the same entity, and a regular fopen() does the trick (usually).