The design and development process for embedded systems is uniquely challenging. This is, at least in part, due to the complexity of systems that involve both hardware and software operating within tight resource and timing constraints. In truth, the need to operate within these constraints while reliably delivering functionality over long periods of time is exactly why embedded systems design is such an important process.
To make it easier, we've outlined a general introduction to embedded system design that explains, step-by-step, how to navigate the design process from collecting requirements to final product testing.
Embedded systems are self-contained computers that live inside other systems, usually performing a highly specific function or set of functions. They consist of a processor, communication interfaces, and peripherals used to implement specific features. Many types of embedded systems are expected to operate continuously for years or even decades at a time without interference from a human. Others use a system of sensors and actuators to respond to environmental situations in real time, or use internet connectivity to upload sensory data to a network.
Embedded systems engineers spend their time designing and implementing embedded systems for a variety of industrial and consumer applications. The goal of the embedded systems design process is to effectively translate project requirements into product specifications and eventually into a product that meets project objectives within the identified design constraints.
The first step in the embedded system design process is to understand project requirements. The first step here is typically understanding user needs. Designers will ask questions like:
Once the requirements for the project are clearly understood, embedded systems engineers can begin to define system specifications. This process essentially means translating the plain language of user requirements into technical requirements for manufacturing and building an embedded device.
It is often useful to implement a formalized design verification/validation process with the goal to ensure that the designed system effectively meets user needs.
The paradigm of co-designing embedded systems emerged in 1996, with the release of The Co-design of Embedded Systems: A Unified Hardware/Software Representation. This publication promotes a methodology for designing the hardware and software components of an embedded system in tandem, specifically by constructing a unified hardware/software representation of the device known as a decomposition graph. The key benefits of co-design are it enables a deeper understanding of hardware/software performance trade-offs and it helps to mitigate the challenges of system integration.
The next step in the embedded system design process is to choose the technologies that will be implemented in the final product. An embedded system will need some kind of processor, but you'll have to choose between a System-on-a-Chip (SoC), a microcontroller, digital signal processors, or a general purpose microprocessor. There are also field programmable gate arrays (FPGAs) and complex programmable logic devices (CPLDs) that may be appropriate for some applications.
You'll also need to choose what peripherals to include, which depends on the answers to questions like:
Allocating resources means procuring the necessary human and physical resources to support the product design process. Without the necessary resources, even a great project idea could be doomed to failure. The technologies that you choose for your embedded system will determine the skills and expertise you will need to execute on the project. You may want to recruit team members with complementary skill sets in various areas of embedded systems hardware design and implementation.
In this step, your design team will work together to choose the tools and components that deliver optimal performance given the feature requirements and design constraints for the system. This step includes choosing specific vendors, suppliers, or brands that will provide components for both the product itself and for the testing and debugging process. Tool selection can depend on many factors, including the desired technologies for the implementation and the expertise available on the design team.
Hardware design includes the preparation of schematics and design drawings, creating an efficient layout and physical design for the product, manufacturing printed circuit boards (PCBs), and design verification.
Embedded system software development encompasses a whole set of tasks, including writing code, configuring peripherals to run the code under the desired conditions, testing and refining code to make it functional and as efficient as possible, debugging to remove errors, and ultimately verifying that the code does everything it is supposed to do. Up to 50% of total project resources can be expended in the testing phase, so it is important to choose the most appropriate testing tools that can help to streamline the testing process.
Once the hardware and software components have been developed, the system needs to be integrated. System integration is the process of combining hardware and software systems and ensuring that the component parts are all still functioning as expected. The co-design process for embedded systems is helpful for maximizing efficiency and minimizing compatibility issues or other conflicts between hardware and software.
Any final testing for the product is concluded in this stage. Once testing is finalized, the project manager certifies that the product has been completed according to the system specifications.
Hardware design and implementation is an extremely broad area of expertise for embedded systems engineers. To effectively design an embedded device, engineers must understand the subtle differences between different kinds of components, along with their requirements, advantages and disadvantages as they pertain to the task at hand. Choosing between different types of processors and peripherals, and planning how they will interface within the system are the main tasks of embedded hardware design. The 2012 publication Hardware Design of Embedded Systems for Security Applications provides excellent details and insight into the embedded hardware design process.
When executed in good faith, an effective embedded systems design process helps ensure that product development teams build products that satisfy user needs, providing the requisite features and functionality while operating within the identified and specified constraints. Following this process can help engineers build better products and reduce time to market while enhancing product quality and customer satisfaction.