Barr Group TwitterBarr Group Vimeo

With more than three decades of electrical circuitry and embedded software design experience, Nigel has helped a wide variety of clients develop products for the consumer electronics, industrial controls, and telecommunications industries.  End products he has worked on range from portable diesel burners to underwater rebreathers and exploration vehicles.  Industries of expertise include automotive, software, telecommunications, and television. He is a prolific blogger and has published more than a dozen magazine articles about the design of embedded systems.

How to Prevent and Detect Stack Overflow

The safety and security of every embedded system is dependent upon proper operation of the stack (or stacks, if there are multiple). If a stack overflow occurs, a major or minor malfunction is very likely to follow. Despite this, the stack in the majority of embedded systems is sized based on nothing more than a hunch. As well, run-time stack monitoring is too seldom used.

How to Make Embedded Software Smaller and Faster

We've all heard it before - "premature optimization is the root of all evil" - yet many embedded systems have reliability, cost, and performance requirements that demand a development style where we optimize early and often. Performance needs to be designed into a system, from architecture to algorithms to data structures to coding guidelines.

How to Minimize Interrupt Service Routine (ISR) Overhead

 Printable PDF

With all the automation available today, it's easy for programmers to overlook costly overhead introduced into machine code by the compiler. Interrupt handlers are one key area worthy of a closer inspection.

How to Use C's offsetof() Macro

 Printable PDF

C's seldom-used offsetof() macro can actually be a helpful addition to your bag of tricks. Here are a couple of places in embedded systems where the macro is indispensable, including packing data structures and describing how EEPROM data are stored.