Dojo Five Dev Blog
Best-in-class embedded firmware content, resources and best practices
The Ultimate Guide to Modern Embedded Firmware Development
From the smart devices in our homes to life-saving medical equipment, embedded systems are everywhere—and at the heart of each one lies embedded firmware. But as these systems become more powerful and connected, developing efficient, secure, and scalable firmware is more challenging than ever.
Latest articles
Build Yocto Faster with EmbedOps
Where Should Your Team Use AI Today? A Quick Checklist
Hiring Isn’t Enough: Building a More Resilient Firmware Team
Sign up to get our content updates!
Unlock the full potential of your embedded projects with our expert insights! Dive into our comprehensive resources to stay ahead in firmware development. Subscribe now to get the latest best practices and guides delivered straight to your inbox.
More From the Blog

Trusting the Docker Images Your Code is Built On
We’ve written before about the benefits of using Docker in your development environments. You don’t have to write every image yourself, though! There are many existing images on Docker Hub

nRF52 DFU and the Missing Service Changed Indication
Even when using Nordic’s pre-packaged SDK files for adding DFU (Device Firmware Update) capabilities, things can get tricky. We learned this as we added buttonless DFU to a customer project

Nanopb Traps and How to Avoid Them
Intro Protobuf is a language-neutral, platform-neutral extensible mechanism for serializing structured data protocol that Google initially created internally in 2001, now on its 3rd release (Proto 3). Since its release,

Using Rust Packages in a C Project on Nordic Devices
This example shows how to call a function from a Rust package from C on a nRF5340 DK and nRF52840 DK.Source: https://www.rust-lang.org/ Why would you want to use Rust? Rust

An Introduction to Rust
Overview So you’ve heard about Rust, a shiny new tool taking people by storm, and now you want to know what the fuss is all about. Rust is a programming

Beat the Clock: CI Secrets for On-Time Embedded Systems
Getting Continuous Integration (CI) right in embedded systems development is challenging. It’s a game-changer for meeting deadlines, but only if you nail the tech and the teamwork. Building Your CI

DITAA Color Codes For Diagrams: Using Color To Help Separate Items In DITAA Diagrams
By: Steve Branam
DITAA is a simple text format that allows the creation of free-form custom diagrams.

Powering Product Roadmaps with Modern Embedded Firmware Development
Product roadmapping is the strategic backbone of innovation, outlining the vision and direction for product development. But embedded firmware development often presents challenges that can slow down this process. By

Setting Up Automated Firmware Builds
Why do you need automated firmware builds (sometimes called a Continuous Integration (CI) pipeline) for your embedded project? Oftentimes we have found that customers do not trust their firmware release

Using Artifactory for Efficient Artifact Storage
Introduction Managing software artifacts efficiently is a critical challenge for software development teams. Whether you are dealing with versioning issues, dependency management, or maintaining previous builds for rollback and debugging,

Introduction to Serial Framing Formats
Introduction Serial communication (UART, RS-232, SPI, I2C, etc) provides the ability to transfer raw data between devices in Embedded Systems. There are a number of challenges to consider when developing

Upgrading Your Control System: Replacing your existing PLC with Arduino OPTA
In the world of industrial automation and control systems, Programmable Logic Controllers (PLCs) have been the go-to solution for decades. They offer reliability, stability, and robust performance. However, with advancements

How To Protect Your Firmware: 5 Mistakes To Avoid
You put a massive amount of time, energy, and cost into developing your firmware. As such, protecting your firmware should be a top priority. The best way to protect your

What is Dojo Five Reading in April 2025?
“Dojo” translates to “place of the way” and represents an environment for immersive learning. Here at Dojo 5, we prioritize that learning by encouraging our engineers to always be on

Useful Python Packages For Parsing HTML Report
Static analysis tools such as IAR C-STAT, Cppcheck, and Flawfinder are able to generate reports in the form of HTML files. To learn how and why it is necessary to

What is TLS and When Can It Be Used?
Transport Layer Security (TLS) is a cryptographic protocol that provides secure communication over computer networks. It is the successor to the Secure Sockets Layer (SSL) protocol and has become the

Setting up Jenkins for Embedded the right way (or not at all)
By: Brandon Leiran
Embracing continuous integration (CI) practices and tools makes embedded development smoother. Jenkins isn’t always the best choice for Embedded CI, but if you follow the 3 CI principles laid out in this article, you’ll start off well!

How to Start Developing Firmware Remotely
Modern embedded development starts with modern practices. Remote work has revolutionized the way that engineering is done, and it is now more possible than ever for traditionally on-site work to

The CLI’s Essential ‘Verbose’ Option
For those creating their own CLI tool If you have played around with any command line interface tools, such as Particle CLI or Git UI, you’ll notice that they oftentimes

How to Modify a File Using SED
Let’s take a look at a microchip project that was found to cause issues in the past. Upon trying to build the problematic example it was found that one of

Device Updates: Cut Down Time and Data Usage
Have you ever suspected that the way updates are handled on your embedded devices wastes electricity, drives up customer cellular data bills or takes longer than really needed? Let’s look at how device updates have traditionally been done…

How to Prevent Your Python Script From Getting Culture Shock in Different OS’s
After hours of focusing, you finally finish writing a Python script for your project. It works perfectly on your computer and you pushed the changes to your favorite source control

Transitioning from Bare Metal: Nordic SDK Build System
Intro As embedded systems complexity grows, firmware development needs more and more tools and build systems to handle it. One common reason to switch from bare metal to a more

Finding Time for Rust: 7 Simple Steps to Learn Rust
By: Nwanua Eluweze
Rust appears to be gaining steam as a solid language to solve complex and challenging problems in embedded systems. Here are a few tips that may help you learn Rust.

What does a modern pipeline look like for embedded?
What does a modern pipeline look like for embedded? Featured Categories Our Engineers Security Embedded CI All Categories Recent Posts By: Aaron Fontaine Having a modern pipeline helps automate the tools you need to ensure high software quality and consistent results. Although the cost of setup is higher, once a modern pipeline (and corresponding practices)…

Hardware-in-the-loop is hard! Sometimes.
By: Ander Galisteo, Ph.D.
The concept of hardware-in-the-loop (HIL) is not new in the embedded space. The basic idea is to automate the functional tests of your device under development to verify if your implementation does what it’s supposed to do.

BDD for Embedded Systems
Introduction Behavior-Driven Development (BDD) is a software development methodology that focuses on defining the behavior of a system in plain, human-readable language. While commonly associated with end user business requirements

Using the QEMU Emulator with Zephyr Builds and VSCode
QEMU is an open source machine emulator/virtualizer. Most commonly it’s used for system emulation where it can provide a virtual model of an entire machine (CPU, memory, and emulated devices).

Medical Device Documentation
If you’ve ever built a medical device, you’ll know how much documentation is required. The amount of documentation required by regulatory bodies like the FDA can intimidate even the most

YAML Tutorial: How To’s, Best Practices & Getting Started
What is YAML? YAML (YAML Ain’t Markup Language) is a human-readable data format that simplifies configuration files, offering a lightweight alternative to JSON, INI, and XML. Its clear, indentation-based structure

Create a Mature Test CLI Tool with Python Click
Introduction In firmware development, effective testing is crucial. Developers often need reliable ways to interact with their hardware. This tutorial will guide you through creating a Python-based command-line interface (CLI)

Using The Nordic nRF Sniffer For BLE
By: Steve Branam
The Nordic Semiconductor nRF Sniffer for BLE is a great low-cost tool for working with BLE. Once you set it up, capturing and analyzing BLE traffic is easy.

Testing Python Scripts in A Docker Container
Most Python scripts require external packages. Many require a specific version of these packages or even the Python interpreter. Instead of installing these dependencies globally on your machine, you can

Using Docker for Embedded Development
By leveraging Docker images, development teams can completely specify and control the development environment without the overhead and bloat of an entire build machine, virtual or otherwise. These same images

How to Port Your Software from Raspberry Pi to Arduino Pro
This article is for technical leaders or managers with an existing prototype based on the Raspberry Pi who need to migrate to a more production-ready platform like Arduino Pro. Individuals

How to set up AMD Vivado and Vitis on MacOS
AMD (formerly Xilinx) makes a number of great products that we have worked with in the past. If you haven’t used an FPGA-based platform before, it is amazing what you

Upgrading Your Control System: Replacing your existing PLC with Arduino OPTA
Replacing your current PLC with an Arduino OPTA can be a cost-effective and efficient choice for many industrial automation applications. The benefits of affordability, flexibility, and a supportive community make it an appealing option.

A Long Way From Home
Over The Air updates (OTA) takes advantage of modern connectivity for devices. Even for devices that aren’t normally connected to communication networks, it’s often possible to connect them to a computer or mobile device that is connected to the network and update them. It’s also become a common part of modern embedded development and release strategy.

Medical Devices with Machine Learning?
This guest post is a collaboration with our friends at Edge Impulse. Edge Impulse shares D5’s passion and vision for modernizing embedded solutions by empowering developers to create and optimize products via embedded development and machine learning.

EmbedOps: The Future of DevOps for Embedded Firmware
By: Tom Dever, VP of Product
In a rapidly evolving software development market, teams focused on embedded technologies are not benefiting from the same advancements as web and native platform developers. Dojo Five’s EmbedOps is addressing this issue by providing tools, integrations, and services that allow embedded teams to take full advantage of contemporary developer tools and advancements.

Troubleshooting: Some common, but often unchecked, assumptions to investigate
By: Bailey Steinfadt
Are you tearing your hair out trying to find the root cause of a bug? Have you been troubleshooting the same problem for days and feeling like you’re getting nowhere? Minimize your IDE, put the keyboard down, and ask yourself a simple, but hard question…What do you know for sure is true, and what are you merely assuming is true?

Be The Cppcheck Ruler
As a static analysis tool, Cppcheck has a set of default rules. However, when you are further into your development and realize that you need to create your own rules

Plant Moisture Monitoring with an STM32 Nucleo
Zhi Xuen Lai of Dojo Five walks you through his plant moisture monitoring project, which uses an STM32 Nucleo board and includes mobile notifications.

I’ve been using Markdown all this time??
Sometimes you need something lightweight for text files that doesn’t require all the fancy tools and formatting that is offered by other languages, such as HTML – but is still

Three Suggestions for Successful Code Reviews
We’ve all been a part of bad code reviews. Both as the developer and as the reviewer. If you haven’t, you’re extremely lucky! Code approved with zero comments seconds after

Using a Git GUI Isn’t All Bad (And Sometimes Pretty Useful)
While not the popular opinion of CLI git users, I’ve gotten a ton of mileage from my git GUI. Using the CLI rather than a GUI provides a lot of

Start with the Process, Finish with the Work
Start with the process, Finish with the work To obtain regulatory approval for medical device software, you’ll need to comply with the IEC-62304 Medical Device Software Lifecycle standard. This standard

The Case for EmbedOps (Embedded DevOps)
From even before the first computer was working, the technology industry has been looking for the best way to write code. Today, as code “eats the world”, the types of