UKUUG home


(the UK's Unix & Open Systems User Group)






Book Discounts

Other Discounts

Mailing lists






Programming Embedded Systems

Michael Barr and Anthony Massa
Published by O'Reilly Media
301 pages
£ 35.50
Published: 20th December 2006
reviewed by Paul Waring
   in the March 2007 issue (pdf), (html)

As a software developer who has occasionally worked with small systems, a book which promises to get me started writing embedded software sounds like it will be just up my street. Even better, the subtitle of the book suggests that all the development will be done with GNU tools, which is a good invitation for someone who just wants to dip their toes in the water without forking out thousands of pounds for expensive development kits.

The book begins with a good introduction, which explains exactly what an embedded system is and gives some examples of existing projects. Of particular interest is the explanation of why C is the language of choice for embedded systems - although I felt that a little more time could have been spent on this area. In particular I would have liked to have seen a digression on languages other than C -- the authors mention that ``the Ada language has many features that would simplify software development if used instead of C or C++'', but give no hint as to what these features might be.

The explanation of hardware schematics was also useful, although I still struggled to fully understand some of the diagrams that were presented, so perhaps a little more time could have been spent on explaining them. Having said that, the book is really aimed at software developers and does suggest finding a hardware guru who you can ask about more complex issues.

The main chunk of the book manages to cover every major topic related to embedded systems that I could think of, including chapters dedicated to memory, peripherals and interrupts. Plenty of information on operating systems is also included, although most of the issues will already be familiar to most people with a background in computing.

The final chapter on optimisation techniques was particularly helpful, as this is a topic which is rarely covered in other programming texts because the trade off between optimisation and code readability/reuse rarely makes it worthwhile. However, in an embedded environment with significantly fewer resources it is obviously an important topic and it is good to see that it has not been overlooked.

The chapter that I was most impressed with overall though was the coverage of memory, which was particularly detailed. Not only were the main types of memory discussed and explained but there was also a significant amount of space dedicated to discussing testing and troubleshooting all common problems with memory. In addition to this, there was plenty of information about the problems of endian issues when working at this level, which is an issue that most software developers will not have experienced before.

Overall, this book is detailed and quite easy to get to grips with, provided of course that you are already comfortable with programming in C. However, I would recommend refreshing your knowledge of electronics before reading the book if, like me, you haven't looked at hardware from a low level for some time. As the somewhat shallow introduction to hardware is the only area where I feel the books falls down, I would award it 9/10.

Back to reviews list

Tel: 01763 273 475
Fax: 01763 273 255
Web: Webmaster
Queries: Ask Here
Join UKUUG Today!

UKUUG Secretariat
More information

Page last modified 02 Apr 2007
Copyright © 1995-2011 UKUUG Ltd.