Embedded Systems and Software

An embedded system is a dedicated computer system designed for specific applications, tightly integrating information processing and physical processes.
Embedded systems are application-centric, based on computer systems, and integrate configurable and customizable software and hardware into a single dedicated computer system.

The basic working principles of embedded systems
Components of Embedded Systems
Embedded processors: categorized into civilian, industrial, and military levels based on different environments.
Supporting hardware: memory, output devices, input devices, interfaces, and network buses.
Embedded operating systems: characterized by real-time capabilities, configurability, and security.
Supporting software: common services of supporting software typically run on top of the operating system and are referenced by application software in library form.
Application software: software developed to achieve a specific goal of the embedded system.
Characteristics of Embedded Systems
- 1. Strong specificity
- 2. Technology integration
- 3. Software-centric integration of hardware and software
- 4. Fewer resources compared to general-purpose computers
- 5. Program code is embedded in non-volatile memory
- 6. Requires specialized development tools and environments
- 7. Small size, low cost, advanced technology, high performance-to-price ratio, low system configuration requirements, and strong real-time capabilities
- 8. High requirements for safety and reliability
Classification of Embedded Systems
Based on different purposes, they can be divided into: embedded real-time operating systems and embedded non-real-time operating systems.
Embedded real-time systems can be further divided into: hard real-time systems and soft real-time systems.
Based on safety requirements, they can be divided into: safety-critical systems and non-safety-critical systems.

Composition and Characteristics of Embedded Software
Embedded systems consist of hardware layer, abstraction layer, operating system layer, middleware layer, and application layer.
Main characteristics of embedded software:
Configurability, customizability, strong real-time performance, security, reliability, and high determinism.
Differences between embedded software development and traditional software development methods:
- 1. Embedded systems use specialized development tools to generate binary code, which is then downloaded or embedded into the target machine’s storage for execution.
- 2. Embedded software development places greater emphasis on the efficiency and stability of hardware-software collaboration.
- 3. The results of embedded development typically need to be embedded in the storage or internal memory resources of the target machine.
- 4. Embedded development requires specialized development tools, target systems, and testing equipment.
- 5. Embedded software has higher real-time requirements.
- 6. Embedded software has higher requirements for safety and reliability.
- 7. Embedded software development must fully consider code size.
- 8. In safety-critical systems, developing embedded software must meet certain design and code review requirements.
- 9. Modular design divides the program into several modules based on functionality, with each module implementing a specific function.
Safety Design of Safety-Critical Software
Purpose and Content of DO-178B
The purpose of DO-178B is to provide guidance for the development of airborne software for onboard systems and equipment, ensuring that it can perform its intended functions at a safety level that meets airworthiness requirements. To achieve this goal, DO-178B provides guidance in the following three areas.
(1) Objectives of the software lifecycle processes.
(2) Activities required to meet the above objectives.
(3) Evidence that the above objectives have been met, i.e., software lifecycle data.
The main content of DO-178B introduces the airworthiness requirements related to objectives, processes, and data. These three factors are the essence of DO-178B and run through all processes of the software lifecycle.
Objectives:In DO-178B, software safety levels are classified into five levels A~E based on the importance of the software in the system.
Processes: The DO-178B standard divides the software lifecycle into “software planning process,” “software development process,” and “software integration process.”
Data: DO-178B refers to all products generated during the software lifecycle, including documents, code, reports, and records, as software lifecycle data.
Software Lifecycle of DO-178B
Software planning process, software development process, software integration process.
Differences between DO-178 and CMMI
CMMI is from the perspective of process improvement, while DO-178 is from the perspective of airworthiness certification.
CMMI mainly consists of practices, while the DO-178C process mainly consists of objectives, activities, and data.
CMMI integrates perspectives from systems, software, and hardware, while DO-178 focuses on software, making it easier for software engineers to understand.