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
Be The Cppcheck Ruler
The Git Cherry-pick and Git Rebase Interactive Combo
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

Embedded Command Line Interfaces and Why You Need Them
Embedded Command Line Interfaces and why you need them Featured Categories Our Engineers Security Embedded CI All Categories Recent Posts By: Joe Perrin During the course of development – from prototyping hardware through manufacturing – it becomes necessary to run test code over and over to verify functionality or perform system-level testing. This…

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

Unit Testing For Embedded Software Development
By: Steve Branam
Unit testing uses small automated tests to drive development of embedded system code. Learn best practices for Test Driven Development (TDD), including writing and implementing successful unit tests to provide fast feedback and confidence in your code.

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

Secure Boot – What Is It?
Secure Boot Secure Boot is a security standard for devices used during the boot process to ensure only software that is created and trusted by the manufacture is executed. In

Simulators in EmbedOps: Another Reason DevOps is Beneficial to your Embedded Development Workflow
Arm is no stranger to DevOps or Continuous Integration (CI). They have several pipeline scripts available for Travis CI and outline how they use Jenkins to build and test Mbed

3 Steps to Reading New Code
Approaching Code For The First Time Whether you are approaching a code base for the first time or you are doing a code review for another developer, reading code may

Unit Tests: Benefits For Your Automatic Build
What are Unit Tests? Unit tests are functions written to test an isolated module in a codebase. Isolation allows for specific modules to be tested without interaction with the rest

Static Analysis: Is It Necessary for Your Automatic Build?
Is This Extra Step Necessary? Static analysis has the potential to become an integral part of your regular development as well as your continuous integration setup. Is it necessary for

Choosing a Continuous Integration (CI) compiler
Linux-based gcc ARM cross compilers for bare metal targets While looking for a gcc cross compiler to use for an EmbedOps project, I took a look at my options and

The Arrival of BlueTooth Direction Finding
As someone who has worked with Bluetooth Low Energy (BLE) devices, the new direction finding feature for BLE 5.1 got me excited and thinking. BLE 5.1 and Direction Finding To

Design for IoT Security From the Start
Security has been a hot topic for IoT devices. It gets the spotlight not only due to the ease of some of the exploits but the ubiquity of their use

Nordic DFU Like a Rockstar
At Dojo Five, we have a lot of experience with the popular Nordic nRF52 family. It’s a pretty awesome family – low sleep current, a really nice peripheral set, and

The Git Cherry-pick and Git Rebase Interactive Combo
Version control is necessary, but using it well is an art. Today I am going to give an overview of two Git commands that I found helpful during software development,

Artifacts – They’re useful for firmware too!
Artifacts. What should you save, and what should you leave? As I am currently working with Gitlab, I’ll be talking a bit about how Gitlab uses them, but it can

Choosing an embedded development board
Choosing a first development board can be daunting with so many choices. Here are some examples to give you an idea of what you could consider for your first board.

The Unspoken Benefits of Having Automated CI Pipelines
In the web world, continuous integration and deployment (CI/CD) is quickly leaving “hot new trend territory” and heading toward being an absolute must for any development team. But if your

The Parts of DevOps That Have Nothing to Do With Code
When you hear about DevOps, you often hear about all of the ways it can help your code be better. That’s true. But there’s a whole host of other benefits.

IEC-62304 Medical Device Software – Software Life Cycle Processes Primer – Part II
Part I provides some background to IEC-62304. Part II provides a slightly more in-depth look at some of the specifics. The IEC 62304 Medical Device Software – Software Lifecycle Processes

IEC-62304 Medical Device Software – Software Life Cycle Processes Primer – Part 1
IEC-62304 Software Lifecycle requires a lot of self-reflection to scrutinize and document your development processes. There is an endless pursuit of perfection when it comes to heavily regulated industries. How

I want to write my first embedded program. Where do I start?
The boom in the Internet of Things (IoT) commercial devices and hobbyist platforms like the Raspberry Pi and Arduino have created a lot of options, offering inexpensive platforms with easy

3 Lessons for Engineers Communicating With Customers
Before working with Dojo Five, I had worked with teammates from different backgrounds, but never met or talked with customers. There’s more to it than status updates. Your customers may

Three Tips For New Engineers
With a bachelor in Electrical Engineering and a few coding experiences, I started my job at Dojo Five. What’s waiting for me were demos and releases that surprised me with

Make Homebrew Do Your Dirty Work (MacOS/Linux)
Just recently, I have been moved over to MacOS (not a personal choice, mind you), and I’ve been learning about some of the really cool features and programs it has

Protect Your Security Keys Using git-secret
Development teams, especially those working remotely or spread across different company locations can run into a problem when they need to store sensitive files for the team to use but

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

Controlled Development Environments
Docker is a great solution for controlled development environments. One of the great things about Docker is specifying an entire environment. You create a list that includes the OS, along

Debugging Step 1 – Check the Datasheet
When setting up something like a new sensor for a project feature, it’s become typical for engineers to grab a development kit for their ease of setup and the speed

Best Practices for IIoT Firmware
Connected sensors are becoming increasingly ubiquitous across all sectors, and industrial and scientific products are no different. This category is becoming known as the industrial internet of things, or IIoT.