Route 495 Software, LLC Route 495 Software, LLC



Route 495 Software, LLC
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.

Route 495 Software
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]
Route 495 Software
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
Route 495 Software
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