Embedded Software Development
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. Embedded software is typically specialized for the particular hardware that it runs on and designed to perform one specific dedicated function.
The term Embedded Software is sometimes used interchangeably with firmware.
An embedded system is a computer system with higher quality and reliability requirements than other types of computer systems. Embedded software often has time and memory constraints.
Embedded software is built into the electronics of cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches.
Some families of embedded devices have a very high threshold of quality and reliability requirements. For example, if a car’s engine controller crashes while driving on a busy freeway or a critical medical device malfunctions during surgery, serious problems can result.
Some examples of embedded systems include:
- Ignition System
- Engine Control
- Brake System (i.e., Anti-lock Braking System)
- Digital and Analog Televisions
- Set-Top Boxes (DVDs, VCRs, Cable Boxes, etc.)
- Personal Data Assistants (PDAs)
- Kitchen Appliances (Refrigerators, Toasters, Microwave Ovens)
- Telephones/Cell Phones/Pagers
- Global Positioning Systems (GPS)
- Robotics and Control Systems (Manufacturing)
- Infusion Pumps
- Dialysis Machines
- Prosthetic Devices
- Cardiac Monitors
- Fax Machine
Embedded software can be very simple, such as lighting controls running on an 8-bit microcontroller with a few kilobytes of memory or can become very sophisticated in applications such as airplanes, medical, and process control systems.
Embedded Software Operating Systems
Unlike standard computers that generally use an operating system such as OS X, Windows or GNU/Linux, embedded software may use no operating system (OS) or a limited real-time operating system (RTOS).
Embedded Software Differences from Application Software
Most people are familiar with application software that provide functionality on a computer. Embedded software however is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, and the addition of third-party hardware or software is strictly controlled.
Embedded software needs to include all needed device drivers at manufacturing time, and the device drivers are written for the specific hardware. The software is highly dependent on the specific CPU and chips chosen. Most embedded software engineers have at least a passing knowledge of reading schematics, and reading data sheets for components to determine usage of registers and communication system.
As is true in other types of software development, some of the most important components within an embedded system are derived from specific methodologies, commonly referred to as standards. Embedded software development standards dictate how embedded software components should be designed, and what additional components are required in the system to allow for their successful integration and function.
Many embedded systems including those designed for military, healthcare and automotive use are safety and security critical in nature. For this reason, it only makes sense that embedded systems should be built following some of the industry’s most rigorous software development standards to ensure their safe, secure, and functionally accurate operation.
Following software development standards offers a double benefit. Not only does it reduce safety and security risk, but it also reduces cost. Software development standards improve maintainability, upgradability, reusability, and testability, delivering long-term benefits especially given the typical life span of these systems.
When you are ready, contact us to learn more about Embedded Software Development …