
serv@Route495Software.com
|
Embedded software
Richard B. Johnson Embedded Software Embedded software
is software written for machines that are not computers
although they may have computing devices such as CPU
subsystems within them. This is opposed to dedicated
software wherein the software executes in a computer
dedicated to a specific operation such as signal
processing, database management, cloud computing, and
similar operations.
 |
| Embedded Software within |
For the most part embedded software runs
machines. It is the control system that provides most of
the machine’s functionality. [5] Embedded software often does not
use a specific operating system. Instead, it may be
designed as modules or procedures that execute in a loop,
each using a small bit of CPU time, saving its state in a
state-variable, then returning to a master task which
calls the next task or procedure. Such a system is called
“cooperative” because each of the procedures
cooperates to not use much of the shared resources such
as the CPU.
Operating systems
Nevertheless, there are operating systems that have been
designed for or ported to specific kinds of hardware.
These operating systems, if available for interactive
workstations as well as the target, make it possible to
rapidly prototype and develop software for the
product.
Using Linux Recently
there has been considerable success in using the Linux
kernel as the operating system for many embedded systems
ranging from network routers to flight control systems.
[3]
 |
| Linux in Hardware |
A major advantage is that the software that will
execute on the embedded system will also function on the
development station, usually a PC workstation. This makes
code development and testing a lot quicker than it has
been in the past where one needs to upload binary bits to
a target system to see if it runs.
Single board computers
If your product is going to use a small CPU module, a SBC
such as a PC/104 board, [1] your best choice is most likely
to be Linux. We developed an extremely small
‘C’ run-time library that provides complete
functionality for such embedded systems including TCP/IP
networking.
Real-time operation
 |
| A Realtime System |
Some embedded systems require that events execute
within a precise time constraint. Such systems often use
what is called real-time operating systems (RTOS).
[4] You might want
to reconsider paying the licensing for a RTOS when such
functionally can usually be handled within a driver for a
more conventional operating system like Linux. We have
developed systems that acquire high-speed DAS data,
filter it, and perform data transfer using DMA direct to
user-mode code that further processes the data to display
tomographic [2]
images. It is unlikely one can get more
“real-time” than that. We did this using the
Linux kernel, a sophisticated driver (Linux calls them
modules), and conventional ‘C’ code executing
in an environment that uses a small shared library that
we developed.
References
1. SBC
Example
2. Tomographic
reconstruction
3. Wikipedia
article on embedded Linux
4. Wikipedia
article on real-time operating systems
5. A problem
with invisible software
Home page
This webpage copyright © 2009, Route 495 Software,
LLC
|