Embedded Software as a crucial part of electronics engineering
You encounter embedded software nowadays almost everywhere. It is a crucial part of a functional software ecosystem. Embedded software is specialized for the particular hardware that it runs on and has memory and time constraints.
A common characteristic feature is, that either no or not all functions of embedded software are initiated or controlled by humans, but rather through machine interfaces. Integrating software engineering with non-computer devices leads to the formation of embedded software systems. All embedded systems are task specific systems. They execute the same pre-defined task throughout their entire life, which cannot be altered. Those systems are designed to be reliable and run stable. The systems are also required to provide consistent response times and to be highly efficient. Manufacturers build embedded software into the electronics of telephones, cars, modems, robots’ applications, home appliances, toys, security systems, pacemakers, televisions and digital watches, only to name a few. This software can be very simple, such as lighting controls running on an 8-bit microcontroller with a few kilobytes of memory with the suitable level of processing complexity determined with a probably approximately correct computation framework (a methodology based on randomized algorithms), or can become very sophisticated in applications such as airplanes, missiles and process control systems.
1) Examples of embedded Software Application-based features
- Image processing systems found in medical imaging equipment
- Fly-by-wire control systems found in aircraft
- Motion detection systems in security cameras
- Traffic control systems found in traffic lights
- Timing and automation systems found in smart home devices
- Anti-lock braking systems for cars
2) Is there a difference between firmware and embedded software?
The answer is yes. Although the two terms are often used interchangeably, firmware is a specific type of embedded software. Whereas embedded Software is used for a certain functionality, that contributes to the overall purpose of a device. Firmware instead is used for a more minimalistic operating system (OS). You can think of it like this: All firmware is embedded software, but not all embedded software is firmware.
3) Operating systems
Other than standard computers, which might use operating systems widely known in Software Development, like Windows, GNU/ Linus or OS X, embedded software may use no operating system or in some cases when they use one, a wide variety of operating systems can be chosen from. In most cases a real- time operational system is in place. You can find several systems here, such asVxWorks, Windows CE, Linux or ThreadX. This list is not comprehensive though.
4) Communication protocols
Communications between processors and between one processor and other components are essential, besides direct memory addressing, common protocols include I²C, SPI, serialports, and USB ports. Typically Communication protocols designed for use in embedded systems are available as closed source from companies including InterNicheTechnologies and CMX Systems. Open-source protocols can be found from uIP, lwip, and others.
5) Differentiation between embedded systems and application software
Most of us are familiar with application software, which runs on a computer and provides a certain functionality. This is the consumer perspective. Embedded software instead, is often less visible, but still highly complex. Unlike application software, embedded software has determined constraints, hardware requirements and the use of third -party hardware 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 CPU and specific 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 systems. Conversion between decimal, hexadecimal and binary is useful as well as using bit manipulation. Web Applications are rarely used so far, although XML files and other output might be sent to a computer.
With the CELUS Engineering Software though, users will find a great example how Web Applications can be implemented in the daily work routine and not only save time, but also a lot of costs due to shorter development cycles and faster delivered results. The AI designs schematics and PCB-Layouts as well as circuit boards completely automated.
Software Engineers as well as electrical engineers can therefore re-focus their work on creative parts of the software development and design new hardware components for example or come up with a completely new software approach.
6) What is an embedded system?
An embedded system is a micro-processor-based computer hardware system with specific software, that is designed to perform a certain function. This can be either an independent system or an integrational part of a large system. At the core of it there is an integrated circuit designed to perform computation for real-time operations. The ranges of complexity vary from a single micro - controller to a suite of processors with connected peripherals or networks. The complexity of embedded systems also differs, depending on the task for which it is designed.
6.1 The basic structure of an embedded system
- A-D converter: An analog- to digital converter converts the analog signals to a digital signal, which comes from the sensors.
- D-A converter: This is the other way around. So, the digital signal will be sent to the analog pendant. The processor converts the digital input to analog data
- Sensor: The sensor measures and converts the physical quantity to an electrical signal, which then can be used by an embedded software engineer.
- Actuator: An actuator compares the output given by the D-A Converters to the given output and stores it accordingly.
6.2 Usage for embedded systems in the future
There are tons of use cases you could think of, when it comes to those systems for now and in the future. The industry for embedded systems is expected to grow exponentially. This is mainly driven by the continuous development of Artificial Intelligence (AI) Virtual Reality applications (VR) as well as Augmented Reality (AR) or the field of the Internet of Things (IoT). Due to the rise of Big Data and therefore the new opportunities to find patterns within large data sets, there will be even more room for applications, ranging from cloud-based services to Wi-Fi or other general high-performance use cases we haven't even thought of yet. According to a research from 2018 the expected market for embedded systems is valued at $68.9 billion for 2017 and will reach over $100 billion by 2025.