Embedded System Design: Challenges of Hardware and Software Development

Developing the embedded system software and hardware that forms these components is challenging because of the different user requirements and available technologies. If you want to build a customized embedded system for your IoT solution or other projects, it is important to understand these challenges, and we’ll look at them in detail below.
iot development gateway coreboard motherboard.png
Table of Contents

Embedded systems have exploded in popularity in recent times due to the increased adoption of IoT, which requires edge devices and end nodes. But developing the software and hardware that forms these components is challenging because of the different user requirements and available technologies.

Some solutions in the market try to eliminate these hurdles by providing complete embedded systems that are ready to use. However, these come at the cost of limited or zero customizability.

Therefore, if you want to build a customized embedded system for your IoT solution or other projects, it is important to understand these challenges, and we’ll look at them in detail below. But first let’s define what embedded systems are.

What Are Embedded Systems?

An embedded system is a combination of hardware and software but it differs from computers and smartphones in its functionality. Embedded systems only handle a specific function or a set of closely related functions while computers can run several unrelated functions. Embedded systems can also function independently or as part of a larger system.

These systems come in two types. Some have embedded operating systems, such as Android, Debian, and OpenWRT, and run on powerful processors that can multitask. Typical examples are System on modules like the DSOM-040R (with a Rockchip RK3588 SoC) and DSOM-090M (powered by an MT7621A processor), which you can use to build IoT gateways.

The second embedded system type is the one that functions without an OS. Such devices handle very simple tasks and run on low-power microcontrollers or SoCs. Typical examples include Bluetooth remote controls, sensors, beacons, and panic buttons.

sensor banner

Structurally, the hardware aspect of embedded systems comprises:

  • MCUs/processors/SoCs
  • Sensors
  • Buses
  • I/O devices

On the other hand, the software aspect consists of:

  • Firmware
  • Operating Systems
  • Middleware
  • Applications

Embedded Hardware Development Process

Dusun ODM

Requirements Analysis

The first step, which is the most critical, is to analyze the functional requirements of the project, as well as the non-functional ones that specify things like performance, scalability, weight, size, and security. You must have a technical background or knowhow to be able to define these specifications.

Develop a Technical Proposal

This document defines the hardware specifications that match the user requirements. They include the technical characteristics (MCU capacity, power consumption, memory capacity, etc.), component cost, part availability and quality, and the operating environment.

Develop the Hardware Design (Schematics and Layout)

Using CAD tools, create the circuit’s schematic followed by the PCB layout while complying with the design rules and considering factors like efficient heat dissipation and signal line shielding to prevent interference.

DFM Checks

Once we receive the PCB layout, we do DFM checks to ensure we can manufacture the board and in the shortest time possible at the lowest cost. We might suggest some changes during this phase.


A prototype is a proof-of-concept, which we must build for testing and enhancement before mass production. Usually, this stage requires a few boards and possibly several improvement iterations to fine-tune the product.

Mass Production

With a satisfactory prototype, we will mass produce the embedded board, which you can then port the ready-made application or develop new software for the system and the edge computing functions.

At Dusun, we can ODM your IoT hardware from concept to market, a process that covers design and development all the way to mass production and life cycle management. We have over 20 years of experience in providing ODM services, so you can be sure of design, manufacturing and testing quality. If you prefer to do the hardware design, we also do OEM manufacturing, which will be faster and cheaper.

Embedded Software Levels and Development Tools

Embedded Software Structure


At the bottom of this stack is the firmware, which boots the hardware and provides it with low-level instructions, usually written in C or C++. These instructions are converted into machine code (binary) for the hardware to understand.

Embedded OS

This layer controls the system’s resources, and it features drivers and APIs that the applications use to access the hardware via the instructions sent to the firmware.


Middleware is optional because it includes software like emulators (virtual machines), which make it possible to run computer-independent applications.

Embedded Application

The top level in this stack is the embedded application, which is written in simpler high-level languages like Python and Java.

Embedded Software Development Tools

To build this embedded software stack, you need these development tools.

  • SDKs (compilers, debuggers, libraries)
  • IDEs
  • Simulators
  • Emulators
  • AI code suggestion tools
  • Disassemblers

Challenges of Embedded Hardware and Software Development

embedded system hardware design process
Embedded system hardware design process

Hardware Platform Selection

Whether you want an embedded board (SoM), remote controller, or control board, the core of the device is the hardware, and the brain (MCU, CPU, or SoC) is particularly important.

Microcontroller units are preferred for edge devices like sensors because they are energy efficient, compact, and provide just the right amount of processing power. But SoCs are better for devices that need higher computational power, such as the SoMs used to make IoT gateways.

customizable zigbee gateway dusun

This is where the requirements analysis phase in hardware development comes into play. You have to select the ideal chip for your product based on the project or client requirements.

Also, as a developer, you need the hardware’s documentation to study the connections/interfaces and ports before coding. When dealing with cheap ICs, this documentation might be unavailable, inaccurate, or outdated, which will complicate deployment later. The development environment (IDE) might also be complex to use.

The advantage of using our ODM or OEM services is we provide abundant tools and resources to overcome this challenge. These include open-source SDKs, guidance materials for firmware development, QSGs, and experience sharing among the technical community.

Operating System Selection

Operating systems have some differences. For instance developing software for Ubuntu systems is relatively easy and cheap, but you’ll need powerful hardware to run the OS because it has many services. If your board features less powerful hardware, you’ll have to spend more time optimizing the software, which can be expensive and time consuming.

When selecting operating systems for these embedded systems, we prefer using the free, open-source platforms like Ubuntu, Android, and OpenWRT because building application software for them for edge computing is easy.

operating systems of rk3568 som

It is easier to incorporate more powerful hardware into the device, then have an easier time later when deploying applications and solutions.

Programming Language Selection

The choice of programming language depends on the underlying OS or firmware, which is dependent on the hardware used. For instance, you can only use C or C++ when coding software that can run on sub-devices because they run on microcontrollers.

But more powerful hardware that can run operating systems gives you more flexibility. If a gateway runs on Android, you can use Kotlin to develop apps for it. But if it runs on Ubuntu, you can use Python.

Software Architecture Design

Before writing code for the embedded system, it is important to visualize the software architecture for the solution.

You can’t use a single architecture for all projects because the software runs on different hardware platforms with different memory and processing resources. Each architecture must be optimized to function with the available hardware.

It is possible to develop the software first then build the hardware later, but we recommend listing the protocols and external interfaces the hardware will have for interacting with the programs, then using these specifications to create optimized software.

An alternative would be to create a mock service in a hardware emulator to test the software and applications under development.


Embedded software development is generally less complex than application development, but it has its challenges. For instance, finding enough information or documentation to code certain functions can be tricky, especially if the platform is not popular.

Other coding challenges include:

  • Instability/crashes due to incorrect memory access
  • Optimization to minimize limited resource use (power and memory)
  • Data security when accessing the internet or cloud
  • New/changing user requirements that require advanced hardware specs

Testing and Debugging the Final Product

Embedded software is designed to control hardware, so it requires the actual hardware to test and debug, meaning developers must have test stations 

Acquiring a test station might seem like a simple task but picture building software for an intrusion detection system. You will need embedded hardware for the door/window sensors, motion sensors, sirens, and the like. It can be expensive to set up.

And even if you manage to build this test site, it can be difficult to diagnose errors because they can emerge from the hardware or software.

Dusun’s embedded IoT embedded hardware portfolio comprises various solutions designed to provide secure wired and wireless connectivity for virtually any device. Spanning from smart home automation and intelligent healthcare to industrial applications, Dusun provides a selection of processors, environmental tolerances, and interfaces, as well as communication protocols and expansion options.

Dusun provides all the development resources you need to start IoT embedded system development. Our resources are fully tested and integrated and get released quarterly. Get to market faster with our operating systems, application examples, demos, documentation, and training—all packaged together for your convenience.


In conclusion, the challenges of hardware and software development in embedded system design arise from the fact that the two are intertwined and inseparable.

The selected hardware determines the software you can run on it. And it might be difficult to find documentation about the development environment around it.

On the other hand, software selection depends on the hardware and coding must be precise and efficient to avoid crashing and limited-resource overutilization.

But once you figure this out, we can help you actualize your project using our one-stop ODM service, which covers hardware development, BSP development, and manufacturing. We can also shorten your time-to-market using ready-made SoMs and SBCs, which are handy for building OS-powered embedded systems (hubs/gateways).

Leave a Reply

Looking For An IoT Device Supplier For Your Projects?


    This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

    IoT Gateways for Recommendation


      This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

      Welcome to DusunIoT

      Hi there 👋 Is there anything we can help you with today? Please fill in the form below for the team to follow up if you become disconnected.


          This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

          Ultimate IoT White Paper for Developer Gateway

          DusunIoT Distributor Program

            This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

              This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.