DEV Community

Cover image for How We Speed Up Embedded Development with Custom SBC and Buildroot SDK
Tony He
Tony He

Posted on

How We Speed Up Embedded Development with Custom SBC and Buildroot SDK

How We Speed Up Embedded Development with Custom SBC and Buildroot SDK

Introduction

If you’ve ever worked on an embedded product, you’ve probably run into the same bottlenecks: hardware design takes time, OS bring-up takes even longer, and setting up a usable development environment can be surprisingly painful.

In many companies, these tasks are split across different teams. Hardware engineers design the board, system engineers port Linux, and application developers wait—sometimes for weeks—before they can even start coding. This fragmentation doesn’t just slow things down; it also increases cost and risk.

A more practical approach is to treat the embedded platform as a complete system from day one. Instead of delivering hardware alone, we typically provide:

  • A custom SBC tailored to the product
  • A Buildroot-based embedded Linux system
  • A ready-to-use SDK for application development

With this setup, developers can start building applications immediately, without worrying about kernel configs, toolchains, or root filesystem details.


What Is an SBC-Based Embedded Platform?

A Single Board Computer (SBC) is a compact computing platform that integrates all core components—CPU, memory, storage interfaces, and I/O—onto a single PCB.

In real products, SBCs are everywhere:

  • Industrial controllers running factory automation
  • HMI panels with touch interfaces and UI rendering
  • IoT gateways aggregating sensor data
  • Medical and automotive electronics

They offer a good balance between performance, size, and cost, which makes them ideal for embedded systems.

But hardware alone is not enough. Without a stable and optimized software stack, even the best board won’t deliver real value.


Why We Use Buildroot Instead of Heavier Frameworks

There are several ways to build an embedded Linux system. Yocto is powerful, but for many product-driven projects, it can be overkill.

Buildroot takes a different approach: simplicity and speed.

What makes Buildroot practical?

  • Lightweight output

    It generates a minimal root filesystem with only what you actually need.

  • Fast build cycles

    Ideal for iterative development—change, rebuild, test.

  • Straightforward configuration

    No complex layer system, easier for teams to maintain.

  • Production-ready

    Despite its simplicity, it’s widely used in commercial products.

For projects where time-to-market matters, Buildroot often provides the best balance.


Our Typical Development Workflow

1. Custom SBC Hardware

We start from the hardware side, but with software in mind.

Typical steps:

  • Selecting the right SoC based on performance and power targets
  • Designing required interfaces (USB, Ethernet, HDMI, GPIO, etc.)
  • PCB layout and signal validation
  • Board bring-up and initial testing

The goal is not just to make the board work, but to make it easy to support long-term.


2. Buildroot System Bring-Up

Once the hardware is stable, we build a tailored Linux system.

This includes:

  • Kernel configuration and optimization
  • Device Tree and driver integration
  • Root filesystem generation
  • Adding required libraries and services

The result is a clean, minimal, and stable Linux image that matches the hardware exactly.


3. SDK Delivery for Application Teams

This is where things become much more efficient for developers.

Instead of asking customers to build their own toolchain, we provide a complete SDK that includes:

  • Cross-compilation toolchain
  • Pre-configured environment
  • Matching headers and libraries
  • Basic documentation

With this, application teams can skip all the low-level setup.


What You Can Do with the SDK

Once the SDK is installed, development becomes straightforward.

You can:

  • Build applications in C/C++
  • Port third-party libraries
  • Test features quickly on real hardware
  • Iterate without rebuilding the entire system

This is especially useful for teams that want to move fast without deep Linux expertise.


Quick Start: Using the Buildroot SDK

Step 1: Initialize the Environment

cd rk3566_linux6.1-aarch64-buildroot-linux-gnu_sdk-buildroot/
./relocate-sdk.sh
source environment-setup
Enter fullscreen mode Exit fullscreen mode

This sets up the cross-compiler and environment variables.

Step 2: Compile a Third-Party Library

Example: building libpng

cd $HOME
git clone https://github.com/pnggroup/libpng.git
cd libpng
mkdir build
./autogen.sh
./configure --host=aarch64-buildroot-linux-gnu --prefix=$HOME/libpng/build
make
make install
Enter fullscreen mode Exit fullscreen mode

Check the output:

file build/lib/libpng*
Enter fullscreen mode Exit fullscreen mode

Make sure it targets the correct architecture (e.g., aarch64).

Step 3: Build Your Own Application

$CC main.c -o app
Enter fullscreen mode Exit fullscreen mode

Then copy the binary to the SBC and run it directly.

Why This Approach Works

From a project perspective, this setup solves several real problems:

Faster development

No need to spend weeks on system bring-up before writing application code.

Lower cost

Less dependency on specialized embedded Linux engineers.

Higher stability

Hardware and software are validated together as a complete system.

Better scalability

The same platform can be reused across multiple products with minor changes.

Typical Use Cases

We’ve seen this approach work well in:
• Industrial control systems
• Smart home and IoT devices
• HMI panels and control interfaces
• Edge computing platforms
• Medical and automotive electronics

Conclusion

Embedded development doesn’t have to be slow or fragmented.

By combining custom SBC hardware, a Buildroot-based Linux system, and a ready-to-use SDK, it’s possible to create a development environment where application teams can move fast and focus on real product features.

Instead of spending time on infrastructure, teams can focus on building what actually matters.

Top comments (0)