Source: CSDN@819 Astronaut
What Is Embedded Software?
Embedded software refers to the operating systems and development tools that are embedded in hardware. Its relationship in the industry is reflected as: chip design and manufacturing → embedded system software → embedded electronic device development and manufacturing.
The most basic understanding of embedded software is the combination of software and hardware to define a product. In contrast to embedded software, the pure Internet industry simply defines software, which has poor compatibility and low software portability.
The application of embedded systems in traditional industries is quite broad. Even though the Internet industry is so developed now, it must be admitted that traditional industries have an irreplaceable position in social development. The combination of traditional industries and the Internet in embedded development applications has a bright future.
An embedded system generally consists of four parts: embedded microprocessor, peripheral hardware devices, embedded operating system, and user application programs, used to implement functions such as control, monitoring, or management of other devices. Embedded software is software designed based on embedded systems; it is also a type of computer software, consisting of programs and their documentation, and is an important part of embedded systems.
In embedded systems, hardware and software are no longer two completely separate concepts but are closely integrated and mutually influential. Therefore, the method of soft-hardware co-design (codesign) has emerged, which uses a unified method and tools to collaboratively design the architecture of hardware and software to maximize the system’s hardware and software capabilities, avoiding various drawbacks caused by independently designing hardware and software architectures and achieving optimized designs with high performance and low cost.
Characteristics of Embedded Software
Embedded software requires close integration with external hardware and devices. The embedded system is application-centered, and embedded software is an application system developed according to application requirements, oriented towards industries, and requires specific industry experience. Each embedded software has its unique application environment and practical value.
2. Flexible Applicability
Embedded software can generally be considered modular software; it should be easily and flexibly applied to various embedded systems without damaging or altering the original system characteristics and functions. To achieve flexible use, embedded software should be optimized to minimize the overall inheritability of the system, making upgrades and replacements flexible and convenient.
3. Streamlined Program Code
Due to the requirements of embedded systems for small size, small storage space, low cost, and low power consumption, embedded software has characteristics of streamlined code and high execution efficiency compared to software on large machines.
4. High Reliability and Stability
The application requirements for embedded systems are generally quite stringent, especially in safety-related fields such as automotive electronics (which will be specifically discussed later regarding automotive embedded software), industrial control, aerospace, etc. These fields require embedded systems to have not only reliable hardware but also higher demands on embedded software. Embedded software must run reliably and stably, with error handling and fault recovery functions.
Classification of Embedded Software
According to the usual classification methods, embedded software can be divided into three main categories: system software, application software, and support software:
System software controls and manages the resources of embedded systems and provides support for embedded applications, such as device drivers, embedded operating systems, and embedded middleware.
Application software is the upper-level software in embedded systems, defining the main functions and uses of embedded devices and responsible for interacting with users. Application software embodies the functions of embedded systems, such as flight control software, mobile phone software, MP3 playback software, electronic map software, etc., generally targeting specific application fields.
Support software refers to auxiliary software development tools, such as online simulation tools, cross-compilers, source program simulators, and configuration management tools.
In embedded systems, system software and application software run on the target platform (i.e., the embedded device), while most software development tools run on the development platform (PC) that operates on Windows or Linux operating systems.

Differences Between Embedded and Non-Embedded Software
Embedded: Porting the operating system on existing hardware (requires modification of the operating system source code, installation is not required) to solve the problems caused by the coupling of software and hardware.
Differences Between Embedded and Non-Embedded Software (i.e., the advantages and disadvantages of traditional development and embedded development):
Disadvantages of Traditional Development:
-
High degree of coupling between software and hardware leading to poor software portability
-
Software developers must understand hardware
-
Poor software functionality
Advantages: Simplicity, low development cost
Advantages of Embedded Development:
-
Solves the problems caused by the high degree of coupling between software and hardware in traditional development
-
Provides a rich network protocol stack
-
Provides a wealth of open-source software and tools
Disadvantages: High hardware costs

Automotive Embedded Software Direction
Embedded software can be divided into several parts: software architecture, software flashing, low-level software, application layer software, and fault diagnosis.
-
Strategy application layer
The boot-loader is developed as a separate project, generating an independent binary file.
The following image shows the Boot-loader architecture based on the UDS protocol:

The following image shows the software architecture:

Software flashing: After the controller reset, it will select the boot-to-flash mode based on external hardware configuration, jump to the Boot-loader, and perform RAM self-check. If the self-check is successful and valid application software is detected, it will jump to the application software; otherwise, it will enter the boot-loader mode, waiting to refresh valid application software. The following image shows the Boot-loader software logic.

Hardware dependency layer (low-level drivers): includes complex drivers, watchdogs, basic services (timers needed for system scheduling, interrupt management, and some general processing functions such as PLL drivers, Flash drivers, memory management drivers, timer drivers), IO, CAN, and other drivers.
Hardware abstraction layer: Abstract definitions of functions such as IO ports, PWM, CAN, SPI, etc., allowing application programs to be ported across different underlying platforms.

Software integration: Software integration means combining application layer software with low-level software into a software that can be flashed to hardware. The variable mapping relationship of software integration is shown in the following image:

The low-level layer will generate a series of interface variables (functions) based on hardware inputs or CAN lines, and the application layer directly calls the interface variables (functions) uploaded from the low-level. The hardware abstraction layer (HAL) will complete the mapping from low-level signals to global variables. To achieve hardware changes and platform portability, the low-level software platform uses macros and scripts to automate the generation of global variables and APIs (application programming interfaces, such as functions).
VCU Vehicle Control Strategy:
The functional modules are divided as follows: input signal processing, output signal processing, torque control, power on/off control, gear mode, system capability estimation, fault diagnosis processing, accessory management, etc.

As can be seen from the above image, the vehicle controller is divided into three levels: the top level is the application layer, also known as the control strategy layer; the middle layer is the low-level, also known as the basic platform software layer, which functions similarly to the operating system in a computer; the bottom layer is the hardware layer, which is the circuit board in a computer.
Welcome all angel round enterprises in the automotive industry chain (including the dynamic battery industry chain) to join the group(we will recommend to 800 automotive investment institutions including top institutions);There are communication groups for leading sci-tech innovation companies, automotive industry complete vehicles, automotive semiconductors, key parts, new energy vehicles, intelligent connected vehicles, aftermarket, automotive investment, autonomous driving, vehicle networking, and dozens of other groups. To join, please scan the administrator’s WeChat(Please indicate your company name)
