The development process of embedded systems can be divided into the following 7 stages:
-
Product Definition
Here, the product refers to the system composed of embedded software and the hardware platform that loads it. Therefore, product definition is essentially the system requirements development as mentioned in GJB2786A.
2. Hardware and Software Partitioning
The key to designing an embedded system is how to partition the system into hardware and software systems. This is essentially the content of system design in GJB2786A.
The partitioning of hardware and software in an embedded system depends on multiple factors such as product functionality, performance, cost, and risk.
Generally speaking, implementing system functions with hardware will speed up the processing speed of the system, but the system cost will also increase (high-performance hardware is usually not cheap). However, this is not absolute. Implementing with software can save some hardware costs, but since the system needs to store more program code, it requires larger ROM and has higher demands on the processor, which will also increase the system cost.
The more hardware used in the system, the higher the associated risks. This is because modifying hardware is much more complex than modifying software, often requiring greater modification costs and longer modification times.
Although making partitioning decisions later provides more certainty, the entire system can only be debugged after the hardware platform is available, so making partitioning decisions too late will extend the entire development cycle.
-
Iteration and Implementation
The system design of embedded systems can have an iterative process, during which the boundaries of hardware and software partitioning can still change. At this stage, designers can further clarify the boundaries of hardware and software partitioning as they understand and model more design constraints.
-
Hardware and Software Development
After completing the partitioning of hardware and software, the embedded system development enters the hardware and software design phase.
Hardware design requires selecting appropriate microprocessors, designing peripheral circuits, circuit interfaces, reliability, safety, and anti-interference designs; software design needs to complete the partitioning of functional modules, interface design, reliability, and safety design, and code implementation based on the design.
In conventional development, hardware design is completed before software design, but for projects with tight development cycles, collaborative development is usually carried out, where software development can proceed simultaneously with hardware development.
During collaborative development, to verify the software, software developers need to write programs to simulate hardware that does not yet exist.
-
Hardware and Software Integration
Once the hardware and software development is complete, the system enters the hardware and software integration phase.
The integration process of hardware and software in embedded systems is a debugging and exploration process that requires specialized tools and takes a lot of time to complete. Designers can save a significant amount of time through precise modeling or simulation.
-
Product Testing and Release
The reliability requirements of embedded systems are much stricter than those of most general-purpose computers. Some embedded systems must not fail. Therefore, the testing requirements for embedded systems are also very high; testing must ensure that the software implements the functionalities and performance required by the user, does not crash at critical moments, and must also determine whether the system can approach optimal performance during operation.
Product testing for embedded systems typically includes functional testing, performance testing, reliability testing, and electromagnetic compatibility testing.
-
Product Maintenance
Due to the close integration of software and hardware in embedded systems, product maintenance requires complete related requirements and design documentation; otherwise, the difficulty of maintenance will increase dramatically.
This is exactly:
Developing embedded systems requires separating software and hardware for development before integration, testing, release, and maintenance.
References: Design and Development of Embedded Systems, Author: Chen Liankun, Publisher: Tsinghua University Press, Beijing Jiaotong University Press