246Chapter8 • Cross-Platform and Embedded Systems Development
8.2.4Software Applications for Embedded Systems
Embedded applications are tightly integrated with each other and often with the operating
system as well. In many cases you will find only one big file that is loaded by the system at the
time you power it up that contains all of the operating and applications data. Since resources are
sparse on embedded systems, applications are usually highly optimized to take the least amount
of memory and storage space. Embedded systems programmers don’t have the luxury of even
one extra line of code. In addition, embedded software needs to be solid because there is nobody
to restart a crashed application. Watchdog timers are used to recover from any system lock.
8.3How Development Systems Differ for Embedded Systems
Development for embedded systems is different from common practices in many ways. For new
developers in the embedded systems world, there is a learning curve to understand which con-
ventional practices are no longer valid in this new environment. To be an embedded systems
developer, you need to know many things about the hardware on which your software will be
executed. Often embedded systems are connected to some sort of control system (wheel rotation
in an automobile anti-lock braking system, for example) and the developer also needs knowl-
edge of that system as well. If the CPU and/or the operating system are different on the target
embedded platform, you have to do cross-platform development which has its own issues. There
are different testing techniques as well because in most of the embedded systems you don’t have
a monitor screen where you can display error messages or test results. All of these issues make
embedded systems development much more complicated than writing a program on a UNIX
machine and then executing it.
This section provides information on some of these issues but should not be considered
comprehensive. This is just a starting point to give you an idea that you should expect new chal-
lenges when you start embedded systems programming.
8.3.1Knowledge of Target System Hardware
The embedded system is usually different from the system on which you develop software
(the host machine). For example, usually the target computer has many input and output lines,
different interrupts and probably a different type of CPU. It may also have memory constraints
because these systems usually have a low amount of RAM and no virtual memory because of the
absence of secondary storage media. To develop software for the target, you need to know all of
these things.
As mentioned earlier, most of the embedded systems are connected to some other sort of
hardware. The main job of these systems is to control the connected hardware or systems using
some policy. As an embedded system programmer, if you don’t have knowledge of these addi-
tional system or hardware, you will not be able to program the embedded system well. Usually
embedded systems have some sort of digital and analog I/O connected to this external hardware
where you have to exchange data.
Next Page >>
<< Previous Page
Back to the Table of Contents