Building an Efficient Embedded System Design and Software Development Process

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:

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 requirements

Engineers 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 specifications

Engineers 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 display

Some 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 prototype

At 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 architecture

During 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 platform

When 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 test

It’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 system

Engineers use an emulator to verify the software code will work within the system. 

13. Verify the software on the target system

Once 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 updates

Even 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

  1. Receiving customer specifications
  2. Review system requirements
  3. Review system design
  4. Review software requirements
  5. Preliminary software design
  6. Critical software design
  7. Plan for verification and validation
  8. Verification and validation
  9. Test readiness review
  10. Review of production readiness
  11. Audit of the functional configuration
  12. Audit of a physical configuration
  13. Approval to release software to production
  14. Release production test equipment
  15. Product launch 
  16. 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

The Embedded Software Development Life Cycle

 

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.

The Embedded Product Development Life Cycle

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.