views:

236

answers:

4

Hello,
Does a good library for embedded programming/design/testing and so exist? Something like Safari from O'Reilly?

To be more specific, embedded programming like µC

+1  A: 

Try your local library's databases page. Many public library's offer these databases that have a ton of content you can't get from Google. Full text books, obscure published articles, etc. They are quite cumbersome to use, but do have great info.

Cory Dee
+1  A: 

No, and the area you'll really find that info in is Electrical Engineering.

However, the field of embedded microcontrollers changes daily, so once you've got the basics down online project websites are going to be your most valuable resource.

The basics can be learned online as well, but slowly. If you want to get up and running quickly there's no great substitute for a book and study course.

A lot of people start off with simple basic oriented kits, such as those from Parallax. Once you run into boundaries due to power (ie, basic kits aren't very fast), then you start looking at going into the lower level programming (assembly, C) with more powerful (and complex) microcontrollers, such as the PIC32, ARM, etc.

Adam Davis
A: 

Thanks for the answers. Let me rephrase it: does a good "electrical engineering" library exist?
Something to deal with all aspects of development of embedded software: requirements/design/implementation/test?
Something that seems like O'Reilly's Safari?

Adrian
+1  A: 

I've found that good real-time and embedded software design is more about having a solid concurrency model than anything else. Three books good books on this topic are:

S. Allworth, “Introduction to Real-time Software Design”, 1981.

Ray Buhr, “Use Case Maps for Object-Oriented Systems”, 1999.

Douglas Lea, “Concurrent Programming in Java(TM): Design Principles and Patterns”, 2006.

The information to glean from these and similar texts are the principles to use to build reliable and high performance multi-tasking code. Don't be too concerned that they are explaining ideas in terms of Java or Object-Oriented design.

In terms of learning hardware, the best book I used was

Rodnay Zaks, “From Chips to Systems”, 1980.

This book is hard to find now. The following books also look promising, although I don't personally have copies. I'd suggest that you review them (most of them have an Amazon on-line reader) – and others - and pick the one most relevant to your project.

Tammy Noergaard, “Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers”, 2005.

John Catsoulis, “Designing Embedded Hardware”, 2005.

Hardware evolves constantly over the years, so this is a matter of getting the basic principles and then learning to read the hardware manufacturer's documentation rather than trying to build an extensive library.

For learning about real time operating system design, I find that the Linux kernel provides some excellent examples. The Linux kernel team is very meticulous and performance focused. The books I like on this topic are:

Daniel Bovet, “Understanding the Linux Kernel”, 2005.

Christian Benvenuti, “Understanding Linux Network Internals”, 2005.

These aren't introductory books, however if you have a good grasp of hardware and concurrent software design principles they provide insight into the design of a modern operating system kernel.

billmcc