What is Embedded Software?
Embedded software is the operating system and development tools 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 + hardware to define the product. Unlike embedded software, which is purely defined by software, the compatibility and portability are poor.
The application of embedded systems in traditional industries is quite broad. Even though the internet industry is so developed now, it must be acknowledged 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 prospect.
An embedded system is generally composed of embedded microprocessors, peripheral hardware devices, embedded operating systems, and user applications. It is used to control, monitor, or manage other devices. Embedded software is software designed based on embedded systems and 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 hardware-software co-design (codesign) emerged, which uses a unified approach and tools to collaboratively design the hardware and software architecture to maximize the system’s hardware and software capabilities, avoiding various drawbacks caused by independent design of hardware and software architecture, achieving high-performance and low-cost optimized design solutions.
Characteristics of Embedded Software:
-
Unique Practicality
Embedded software requires close integration with external hardware and devices. Embedded systems are application-centered, and embedded software is application systems developed according to application requirements, oriented towards industry and requiring specific industry experience. Each embedded software has its unique application environment and practical value.
-
Flexible Applicability
Embedded software is usually considered a modular software that should be easily and flexibly applied to various embedded systems without damaging or changing the original system characteristics and functions. Embedded software should be flexible, optimizing configurations as much as possible to reduce the overall inheritability of the system, making upgrades and replacements flexible and convenient.
-
Simplified 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 such as simplified code and high execution efficiency compared to software on large machines.
-
High Reliability and Stability
Applications of embedded systems generally have stringent requirements, especially in safety-related fields such as automotive electronics (which will be specifically explained later regarding automotive embedded software), industrial control, aerospace, etc. These fields require not only reliable hardware but also have higher requirements for embedded software. Embedded software needs to run reliably and stably, with functions such as error handling and fault recovery.
Classification of Embedded Software:
According to the usual classification method, embedded software can be divided into three main categories: system software, application software, and supporting software:
-
System Software
System software controls and manages the resources of embedded systems, providing support for embedded applications through various software such as device drivers, embedded operating systems, and embedded middleware.
-
Application Software
Application software is the upper layer software in embedded systems. It defines the main functions and purposes of embedded devices and is responsible for interacting with users. Application software embodies the functionalities of embedded systems, such as flight control software, mobile software, MP3 playback software, electronic map software, etc., generally oriented towards specific application fields.
-
Supporting Software
Supporting software refers to the tool software that aids in software development, 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., embedded devices), while most software development tools run on the development platform (PC) running Windows or Linux operating systems.
Differences Between Embedded Software 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 hardware-software coupling.
The differences between embedded software and non-embedded software (i.e., the pros and cons of traditional development and embedded development):
The disadvantages of traditional development:
-
High degree of hardware-software coupling leading to poor software portability
-
Software developers must understand hardware
-
Poor software functionality
Advantages: Simple, low development cost
The advantages of embedded development:
-
Solves the problems caused by high hardware-software coupling in traditional development
-
Multi-tasking mechanism
-
Provides a rich network protocol stack
-
Offers a wealth of open-source software and tools
Disadvantages: High hardware costs
Automotive Embedded Software Direction
Embedded software is divided into several parts: software architecture, software flashing, lower-level software, application layer software, and fault diagnosis.
Software Architecture:
(1) Boot-loader;
(2) Software platform layer;
(3) Strategy application layer.
Boot-loader is developed as a separate project, generating an independent binary file.
The following figure shows the Boot-loader architecture based on the UDS protocol:
The following figure shows the software architecture:
Software flashing: After the controller resets, it will select the boot-to-flash mode based on external hardware configuration, jump to the Boot-loader, and execute 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 figure shows the Boot-loader software logic.
Lower-level software architecture
Hardware dependency layer (lower-level drivers): includes complex drivers, watchdogs, basic services (timers, interrupt management, and some common processing functions such as PLL drivers, Flash drivers, memory management drivers, timer drivers), IO, CAN, and other drivers.
Hardware abstraction layer: abstracts the definitions of IO ports, PWM, CAN, SPI, and other functional modules, allowing application programs to achieve portability across different lower-level platforms.
Software integration: Software integration is the process of combining application layer software with lower-level software into a software that can be flashed onto hardware. The variable mapping relationship of software integration is detailed in the following figure:
The lower level will generate a series of interface variables (functions) based on hard wire or CAN line input, and the application layer directly calls the interface variables (functions) uploaded by the lower level. The hardware abstraction layer (HAL) will complete the mapping of lower-level signals to global variables. To achieve hardware changes and platform portability, the lower-level software platform uses macros and scripts to automatically generate global variables and APIs (application programming interfaces, such as functions).
VCU vehicle control strategy:
Divided by functional modules, there are the following functional modules: input signal processing, output signal processing, torque control, power on/off control, gear mode, system capability estimation, fault diagnosis processing, accessory management, etc.
From the above figure, it can be seen that the vehicle controller is divided into three levels: the top layer is the application layer, also known as the control strategy layer; the middle layer is the lower layer, 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 to all angel round enterprises in the automotive industry chain (including the electrification industry chain),Around enterprises to join the group (Friendly connection includes 500 automotive investment institutions including top institutions; A selection of high-quality projects will be presented to existing institutions by theme);There is a communication group for leaders of science and technology innovation companies, automotive industry complete vehicles, automotive semiconductors, key components, new energy vehicles, intelligent connected vehicles, aftermarket, automotive investment, autonomous driving, Internet of Vehicles, and dozens of other groups. Please scan the administrator’s WeChat to join the group (Please indicate your company name)
Leave a Comment
Your email address will not be published. Required fields are marked *