views:

221

answers:

6

Hi,

I want to learn C , UNIX and LINUX, and more about embedded systems. Very much interested in them. Are there any online courses or websites which can guide me. And please suggest books to read in learning them.

Thanks for your time.

Ya please lets your answers and comments come in , they are invaluable to me..!!

+7  A: 
  • The C Programming Language by K & R
  • Advanced UNIX Programming
  • UNIX Network Programming
  • Structure and Interpretation of Computer Programs Videos (done in LISP, but invaluable programming course)
  • Understanding the Linux Kernel (a little out of date but good info, don't take as gospel)
  • Linux Device Drivers 3rd Edition (pretty out of date but good info, same as above)
  • Writing Linux Device Drivers (pretty up to date but not as detailed as before)

  • The UNIX Time-Sharing System, this is essentially the original UNIX paper, it may help to understand where all this came from, don't have to understand every detail of this old paper but I think it gives some good background

BobbyShaftoe
Thanks for the link to "The UNIX Time-Sharing System" it's awesome!
zvolkov
+1  A: 

There are many amazing resources online. My favorite is from MIT.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/

Free courses. They can be pretty in depth, and cover many more subjects than just computer science and mathematics.

Coltin
Adding to that, the NPTEL courses:http://nptel.iitm.ac.in/courses.phpThere's an in depth video lecture series on embedded systems
itisravi
A: 

A quick way to learn a bit about all of the above is to buy an MSP430-based development board from Texas Instruments, install mspgcc (the open-source compiler for the MSP430) on a Linux machine, and write a basic C program that blinks an LED on the development board.

Aaron
+1  A: 

Few resources that helped me for C:

Good Luck!

ralphtomio
A: 

Hi Rajiv,

Other than the resources suggested above, you need to understand why you need these languages. Programming language or an OS alone will only take you as far -- for e.g. if you are programming on embedded platforms usually memory is not in abundance. So you need to code for memory optimization. If you are working on real time, you would need to understand interrupt handling well etc. I'd suggest definitely spend time on the architecture (ARM Cortex-M1 etc) for which you are planning to code. Always helps.

For more quirks look into http://en.wikibooks.org/wiki/Embedded_Systems/C_Programming

Orielly's Programming Embedded Systems in C and C++ is a good place to start once you have the basics of C/C++ clear.

Fanatic23
+1  A: 

I'd highly recommend "UNIX for dummies" as a starting point on Unix/Linux.

Gareth Williams