Embedded systems and embedded software live within tens of thousands of products. Those products rely on their embedded system to work well. Qt's expertise has allowed us to develop design processes that create powerful embedded systems.
In this article:
An embedded system design process is how a manufacturer determines the requirements for a small computerized system embedded within a product. Then, they decide the best way to build that system and test that it works.
In an embedded system, hardware and software work together. Embedded systems exist within millions of products – simple and complex. A cell phone charger includes an embedded system that tells it when the phone has a full charge. Modern automobiles have dozens of embedded systems.
We’ve compiled a list of essential steps for an effective embedded system design process. You must start with an understanding of the underlying need. Next, consider requirements, pick an OS (operating system), and build the prototype and product.
1. Ideation and purpose of product
The possible need for the embedded product may come from the manufacturer, or even customers, in how they think the larger product should work. Engineers will want to brainstorm how the embedded product could work and the benefits it would bring. They will also want to get a sense of the price customers or manufacturers will pay for the embedded product.
2. Determine overall requirementsEngineers will determine everything the product needs to work as intended. Questions they’ll ask include: What functions does it need to complete? What are size, weight, and cost limits? They will also need to decide the specific hardware the product will use.
3. Document detailed technical specificationsEngineers should create a document detailing the technical specifications for the product. Those will include functions the product must complete, environmental conditions and manufacturing requirements, among other things.
4. Decide if the product needs a user displaySome embedded products require simple displays to give users information about it's operation. As part of assessing a product's specifications, engineers will want to determine whether the product needs a user display. If required, you'll need to design a graphical user interface.
5. Develop a prototypeAt this point, it’s useful to build a basic prototype to assess the hardware, identify necessary components, and how they might work together.
6. Design system architectureDuring this step, engineers design the overall architecture on which the product will work. Questions they’ll address include:
7. Select the operating system (OS)
Engineers decide if the product needs a real-time operating system, meaning a system that processes input on a set time constraint, often extremely fast. If so, they will choose the best real-time OS for the product. If not, they can select the best non-real-time OS.
The component of your software stack that is perhaps the most influential is the operating system. Your choice of OS dictates the software you can incorporate into your system. It also can make some tasks easy while making others fiendishly difficult. (Although nowhere near as difficult as going bare metal and doing it all yourself!) Here’s our take on eight of the most popular operating systems in the embedded market.
Embedded Linux |
Android | QNX Neutrino RTOS |
GreenHills INTEGRITY |
Wind River VxWorks |
Amazon FreeRTOS |
webOS | Windows for IoT |
|
Ease of development | ★★★★ | ★★★★★ | ★★★ | ★★ | ★★★ | ★★ | ★★★★ | ★★★★ |
Efficiency | ★★★ | ★★ | ★★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★ | ★★★ |
Deterministic behavior (real-time) |
★★★ | ★ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★ | ★★ | ★★ |
API | POSIX | POSIX | POSIX | POSIX | POSIX | FreeRTOS | POSIX | UWP |
Connectivity | ★★★★★ | ★★★ | ★★★ | ★★★★ | ★★★ | ★★ | ★★★★★ | ★★★★★ |
Graphics | ★★★★ | ★★★★★ | ★★★★ | ★★ | ★★ | ★ | ★★★★ | ★★★★★ |
Hardware support | ★★★★★ | ★ | ★★★ | ★★ | ★★★★ | ★ | ★★ | ★★★★ |
Open source | Yes | Yes | No | No | No | Yes | Yes | No |
Community | ★★★★★ | ★★★★ | ★★★ | ★★ | ★★ | ★★ | ★★ | ★★★ |
Licensing pricing | $ | $ | $$$$ | $$$$ | $$$ | $ | $ | $$$$$ |
Customization and hardening cost |
$$$ | $$$$ | $$ | $$ | $$ | $$$ | $$$ | $ |
★ is the lowest ranking while ★★★★★ is the highest.
The chart represents a quick and easy assessment that highlights software and hardware strengths in a way that is less sensitive to marketplace dynamics and captures the essence of each component. (With the rapid pace of development, there’s no way a comprehensive guide can be kept fully up to date.) Typical use cases for these charts include large (industrial, medical, autonomous), medium (infotainment, white goods, kiosk), and small applications (handheld devices, IoT, wearables). If multiple options for a component are available, we list stats for the most capable variant. We’ve selected some of the most popular hardware choices but check with your supplier for their full range of products.
8. Choose the processor and peripherals
Besides choosing the best microprocessor or microcontroller for the product, engineers will also select any needed peripherals, like converters or drivers.
9. Choose the development platformWhen engineers pick the development platform for the product, they will also select the programming language and development tools.
Building your application on top of an OS will require a programming language. Every programming language has strengths and weaknesses that find their way into the development process and impact the development of your embedded application. These constraints include the types of GUIs that each language can support. Here we explore some of the embedded industry’s leading candidates.
C | C++ | Java | Python / MicroPython |
JavaScript/ HTML5/CSS |
Rust | |
Strengths | Embedded, bare-metal, IoT |
Embedded, baremetal, standalone apps, IoT |
Web, cloud | Cloud, data science | Web | Embedded, bare-metal |
Ease of development | ★★★ | ★★ | ★★★ | ★★★★★ | ★★ | ★★★★ |
Expressive power | ★ | ★★★★ | ★★ | ★★★★★ | ★★★ | ★★★★ |
Ease of maintenance | ★★★★ | ★★★★ | ★★★★ | ★★★ | ★ | ★★★★ |
Longevity | ★★★★★ | ★★★★ | ★★★ | ★★★ | ★ | ★ |
Runtime efficiency | ★★★★★ | ★★★★★ | ★★★ | ★★ | ★ | ★★★★ |
Library/module availability | ★★★★ | ★★★★ | ★★★ | ★★★★ | ★★★★★ | ★★ |
Low-level interface | ★★★★★ | ★★★★★ | ★★ | ★★★ | ★ | ★★★★ |
Connectivity support | ★★ | ★★★/★★★★★1 | ★★★★ | ★★★★★ | ★★★★★ | ★★ |
Graphics support | ★★★★ | ★★★★ | ★★★ | ★★★ | ★★★★★ | ★ |
Developer community | ★★★ | ★★★ | ★/★★★★2 | ★★★★ | ★★★★★ | ★★ |
★ is the lowest ranking while ★★★★★ is the highest.
1 Provides high level of connectivity and networking support when platform libraries included
2 Java Developer community exclusive of Android (low) and inclusive of Android (high)
10. Develop the final prototype
Engineers may want to develop a final prototype after designing the system’s architecture. That activity verifies architecture design choices will work on final product.
11. Code the applications, optimize, debug, and testIt’s time for engineers to code the embedded product. Next, they will test and debug the code. (Jump to embedded software development process for more information on this step.)
12. Verify the software on the host systemEngineers use an emulator to verify the software code will work within the system.
13. Verify the software on the target systemOnce engineers determine the software works appropriately on the emulator, they will verify that it works within the target system – the car or refrigerator or wherever the product is embedded.
14. Ongoing maintenance and updatesEven when the product works, that will not be the end of the process. Manufacturers and engineers will continually monitor how the product is working, make adjustments and at times, provide updates to fix problems.
Learn more about building an embedded product: download our guide.
Teams working on embedded system design projects tend to use the Agile methodology. They are less likely to use more traditional project management methods like Waterfall. Agile allows team members to make continual adjustments and improvements as they develop the system or the software.
A project manager oversees the system design process and ensures work is meeting the product development timeline. Embedded products often must be completed on a strict schedule to fit within the development of the product they're embedded within.
An embedded software development process is similar to the embedded system design process. Engineers start with requirement specifications and continue through the design and validation stages.
An embedded software development life cycle is similar to the development life cycle for all software. Phases include planning, understanding the requirement, development and testing.
Download embedded software life cycle PowerPoint for your presentations.
Engineers must understand the embedded product development life cycle to build and develop embedded products and systems efficiently. The life cycle ensures high quality for products, minimizes defects, and maximizes its return on investment.
Download embedded product development life cycle PowerPoint for your presentations.
Engineers looking for a way to improve embedded system development and software development should consider using a development framework. This tool can streamline the process and help create a finished product faster with a better ROI.
This recent Forrester Research study shows how embedded software development frameworks can provide more than two times the return on their investment. Ready to start using a development framework? Read our guide to selecting the right technology for IoT and embedded systems to help you develop embedded systems.
Qt is the most popular choice of both developers and business for creating high performance embedded systems with 3D/2D user interfaces and deploy and test on your target hardware from day one.
Learn more about how Qt can help you develop embedded systems and increase your ROI.