At TTE Systems, we receive many enquiries from people who want to learn how to program embedded systems. The questions come from professional programmers (particularly those who are considering a career change from “desktop” to “embedded” systems) as well as from students and hobbyists.
In many cases, the people concerned have limited funds available.
In response to these questions, we’ve created this webpage. On this page, we provide an “6-step guide” for people who want to learn how to program embedded systems. Our focus is on ways in which people can learn how to create reliable systems.
Before you can start to program embedded systems, you need to learn how to program. While it is not impossible to begin programming using an embedded board, most people find it much easier to learn how to program on a desktop computer before they start to deal with the complexities of cross-compilation, debugging over a JTAG link, etc.
We therefore recommend that you learn how to program a desktop computer, in C, before you start trying to program an embedded processor.
To explain why we recommend learning C, we make the following observations:
Of course, not all of the issues involved in language selection are purely technical:
Even this short list immediately raises the paradox of programming language selection. From one point of view, only machine code is safe, since every other language involves a translator, and any code you create is only as safe as the code written by the manufacturers of the translator. On the other hand, real code needs to be maintained and re-used in new projects, possibly on different hardware: few people would argue that machine code is easy to understand, debug or to port.
Inevitably, therefore, we need to make compromises; there is no perfect solution. All we can really say is that we require a language that is efficient, high-level, gives low-level access to hardware, and is well defined. In addition - of course - the language must be available for the platforms we wish to use. Against all of these points, C scores well.
We can summarise C’s features as follows:
Overall, C’s strengths for embedded system development greatly outweigh its weakness. It may not be an ideal language for developing embedded systems, but is unlikely that a perfect language will ever be created.
When you are familiar with desktop C, we suggest that you begin to explore embedded systems using a simple processor. For example, the 8051 microcontroller is a popular “starter” processor which is still used in many “real” systems.
If you decide to start with the 8051 microcontroller, “Embedded C” provides a gentle introduction to the programming of embedded systems (using 8051 microcontrollers). Please note that Embedded C is a self-contained “teach yourself” program: the package includes both a compiler and processor simulator (on CD), which means that you can run all of the examples in the book (and learn a great deal about the programming of embedded systems in C) without buying — or building — any hardware.
Please note that two Chinese translations of “EC” are available (one for Taiwan, one for mainland China).
If you can’t afford to buy a textbook at this time, two sets of lecture notes are available which provide an introduction to the programming of embedded systems with C:

The 8051 processor is a good training platform, but most modern embedded systems are based on 32-bit processors.
To gain experience with more modern platforms, we suggest that you refer to our free guide “An introduction to programming in “Embedded C”.
This guide can be used with our RapidiTTy Lite product, which is also available for free download.

“Patterns for Time-Triggered Embedded Systems” is a 1000-page book which illustrates how you can create a range of reliable embedded systems.
In total, PTTES contains details of more than 70 useful “design patterns”, complete with guidelines to help you apply these techniques in your own projects: full source code for all of the patterns is also included.
Following an agreement with the original publishers, PTTES is now distributed by TTE Systems Ltd.
You can now download the complete book from this WWW site.
Complete sets of code examples from the book are also available.
Downloads are free (and no registration is required).
We provide a number of hours of detailed training videos on our YouTube® channel;
If you want to create reliable embedded systems, then it pays to learn a little more about time-triggered software (and system) architectures.
Our Technology page is a good place to start.
Cars, aircraft, medical equipment through to fridges, TVs, MP3 players and even (wet) razors are all good examples of modern systems which contain embedded processors. Overall, it is usually estimated that for every desktop computer chip sold, 100 processors are sold for embedded systems.
As this field grows, there are many job opportunities available for individuals who understand how to develop reliable embedded systems.
Becoming a Certified ‘Embedded C’ Programmer is a great way of demonstrating your skills in this area.