Building an Efficient Embedded System Design and Software Development Process
April 27, 2021 by Risto Avila | Comments
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:
- Embedded system design process steps
- Embedded software development process
- Embedded system product development life cycle
What is the embedded system design process?
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.
Steps in the embedded system design process
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.
Here are some of the basic steps of an embedded system design process:
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:
- How will power be supplied to the system?
- How will the product be connected to the internet?
- Will the operating system need to be embedded?
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.
OS comparison
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.
Language comparison
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.
Project management of embedded system design
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.
What is an embedded software development process?
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.
Embedded software development steps
- Receiving customer specifications
- Review system requirements
- Review system design
- Review software requirements
- Preliminary software design
- Critical software design
- Plan for verification and validation
- Verification and validation
- Test readiness review
- Review of production readiness
- Audit of the functional configuration
- Audit of a physical configuration
- Approval to release software to production
- Release production test equipment
- Product launch
- Full production
Embedded software development life cycle
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.
The primary stages of the embedded software life cycle:
- Assessing requirements
- Planning
- Design
- Prototyping
- Development
- Testing
- Deployment
- Operations and maintenance
- Correction/improvements
- Maintenance
Download embedded software life cycle PowerPoint for your presentations.
Embedded product development life cycle
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.
Here are the primary phases of the embedded product development life cycle:
- The need phase: This step can occur for a new product or re-engineering or updating a current product.
- Conceptualization phase: Engineers might perform a cost-benefit analysis and begin project management, risk management, and other planning steps.
- Analysis phase: During this phase, engineers outline the business needs for the product, along with requirements for developing the product.
- Design phase: The engineers develop a preliminary design document, which establishes the overall architecture for the product and design.
- Development and testing phase: Engineers build the product into actual hardware and software. They test the product to see how it performs and make changes to ensure it works well.
- Deployment phase: The product manufacturer deploys the embedded product into the marketplace.
- Support phase: The manufacturer and engineers continue to support the product. They monitor that it's working correctly and quickly make fixes where necessary.
- Upgrades phase: The manufacturer and engineering team continue to work on possible new versions of the product that can perform better.
- Retirement/disposal: The manufacturer removes the product from the market as it becomes obsolete. This phase can happen as technology advances, and users' needs change.
Download embedded product development life cycle PowerPoint for your presentations.
Development frameworks can streamline embedded system and software development
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.
Design better embedded systems With Qt
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.
The Embedded Product Planning and Requirements Guide
In this guide for IoT and embedded product planning, we examine the most important criteria to consider at the outset, compare a list of the most used technologies, and rate them in easy-to-compare categories.
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.