Hi: I recently graduated from college with a BS in Computer Science; I'm also looking for a job :-)). During my college years I got interested on embedded programming but took only one course, and didn't really have the time to focus or get into more detail on the subject. Can anyone with considerably experience in the field, give a list of some good embedded programming books.
I can give you no better advice than to buy MY book ;)
Seriously, what is your specific field of interest? There's an awful lot of ground to cover. Are you working towards some specific goal- e.g. complex Linux-based embedded systems, telecommunications systems, tiny process-control systems, video games, ...?
A good low cost way to get your feet wet, so to speak, might be the AVR Butterfly: "AVR Butterfly is an evaluation tool demonstrating the capabilities of the latest AVR Technology. The tool is shipped with preloaded firmware supporting temperature sensing, light measurement, voltage readings and music playback. AVR Butterfly can also be used as a nametag. AVR Butterfly can be reprogrammed from AVR Studio using just a serial cable. This allows the tool to be used as a development kit for the onboard mega169, or even as target hardware for simple applications."
Note that AVR studio can be downloaded free of charge from:
You can modify and download the supplied software to get a feel for working with embedded systems, without spending a whole lotta money.
Descriptions of the Butterfly and the on-board ATmega169 can be found by searching the ATMEL site at:
Not a book, but better in some ways. You might be interested in taking my web-based training course on Real-Time Fundamentals. There are extensive, full colour, layered graphics that walk you through various concepts. The students really enjoy them and you can't get that in a book.
Each learning method has its pros and cons, of course, but you can view the Introduction section for free and download an example of the layered graphics.
Visit the link below if you're interested.
Remove "SpamMeNot-" from address if responding via email.
Would be helpful to know what that course did cover. For a raw "software only" beginner, I like two titles from O'Reilly: "Programming Embedded Systems with C/C++" and "Designing Embedded Hardware". The former covers area where embedded programming are different from regular desktop programming. The latter covers hardware basics that an embedded systems programmer should know.
As someone else mentioned, another important thing to do is to get yourself an evaluation/demo board of a microcontroller and start messing with it. I think Zilog still has their eZ8 eval board for $50. It's a great deal as the board comes with some peripherals on it and also comes with a C compiler. I don't think the eZ8 is all that popular now though. Other popular smaller microcontrollers are 8051 (see Cygnal, Dallas, Phillips, Atmel), AVR (Atmel), PIC (Microchip Technology), 68HC08 (Motorola), 68HC11/12 (Motorola), ARM (Atmel among others). Look at the company websites and price out the eval boards.
I note that the vanity plate "ARM7TDMI" is not yet taken in New York State. When I get the damn paperwork from my leasing company to re-register the car i NYS, I'll be giving that plate serious thought. Will that do? :)
-- Lewin A.R.W. Edwards
Learn how to develop high-end embedded systems on a tight budget!
"The Art of Designing Embedded Systems" by Jack Ganssle
"MicroC/OS-II, The Real-Time Kernel" by Jean Labrosse
The former is a compilation of musings ranging from hardware to software to dealing with designers. The later focuses on uC/OS, but will give you a good understanding of how all embedded RTOS's work, plus it shows overall good code design (however, I wish there were more embedded comments).