How Do You Become an Embedded Systems Developer?

As an ordinary programmer you need to add skills to become an embedded systems developer. Embedded programing is programming of devices that the user does not think of as an ordinary computer. Examples include a car, refrigerator, DVR recorder and medical ultrasound instrument. The development and debugging environment can differ radically from that of application development, according to PayScale.

Requirements and Optimization

Embedded devices range from simple toys sold for a few dollars to aircraft sold for nearly a billion. The high quantity, low cost end of the spectrum requires the programmer get the required functionality with the absolute minimum of hardware. This may require programming in assembly language and the use of many tricks to reduce the size of the program and data. Programming for high end devices like aircraft have an entirely different set of restrictions. Since keeping the plane in the air is a life-critical application, the programmer must write software that follows stringent specifications and is reviewed for correctness by verification specialists.

Input and Output

Embedded programming almost always deals with inputs and outputs unfamiliar to the ordinary programmer. Rather than keystrokes and mouse movements the embedded device will see digital inputs (voltage on a wire above/below a certain amount) and analog inputs (voltage varying from zero to five as an example). To the programmer these appear as a bit set or cleared in a hardware register or as a numeric value in a register. In the same way outputs for binary signals are done by setting or clearing bits and for analog by setting bit patterns in registers. Visual output may be sent to LEDs as binary data or to small screens as codes for characters and symbols.

Development and Debugging

C and assembly language are often the only programming languages available. In some cases there are support libraries available to make hardware access easier or to provide a simplified access to USB ports, memory cards or other standard devices. Some embedded applications may run on the “bare-metal” with no operating system at all, while others might using Linux or a real-time operating system (RTOS). Software development may go on in parallel with hardware development and thus initial programming could be done on simulators running on standard computers. One area that might be unfamiliar to the ordinary programmer is hardware interrupts which may happen when physical events occur. Interrupts “derail” the normal step-by-step execution of instructions and transfer to a special routine. Successful programming in an interrupt environment requires special care.

Debugging will probably require the use of electronic instruments such as logic analyzers, oscilloscopes and digital voltmeters to check outputs. It may be as simple as looking at patterns displayed on LEDs. Inputs can be from simple switches, potentiometers, bluetooth devices or special sensors.

How to Develop Credentials

To demonstrate that you can do embedded programming you must do it. Ten years ago this might have been rather difficult, but today there are many embedded hobbyist systems. One of the most well-known is the Arduino series. For less that $100 you can get system and be able to demonstrate real embedded programming skills.

Related Resource: Clinical Data Technician

You will not regret the work needed to become an embedded systems developer. The work is interesting and potentially lucrative.