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 […]
Docker: An Ideal Development Environment

Docker is a revolutionary tool that provides speed and repeatability for an embedded team. While traditionally used in non-firmware environments, there is enormous potential to improve the development efforts of […]
Documenting System Architecture With AsciiDoctor

By: Steve Branam
As the adage says, a picture is worth a thousand words. Diagrams provide a high level of information abstraction. Somewhere between zero and too much is the sweet spot for the right amount of documentation for a system, balancing the needs of development, quality, cost, and effort.
10 Easy Steps to Add Static Analysis to Your Firmware Build

When it comes to embedded system applications, security is one of the most important requirements. In addition to embedded security topics such as Bluetooth encryption, SSH, and TLS, modern firmware […]
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 […]
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 […]
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.
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 […]
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) […]
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 […]
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 […]
10 Pillars of Modern Embedded: Pillar 8–Security

Security is not a feature, it is a framework. You build your system around this framework. Every design decision, every architectural component, every path on the PCB and every line of code should consider this. Modern systems need to put it front and center.