A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
A community and blog for embedded software makers | Continue reading
Here are the articles, videos, and tools that we’ve been excited about this November. | Continue reading
A detailed comparison of ARM Cortex-M Microcontroller SDKs and BSPs, from best to worst. | Continue reading
A guided tour of the MCUboot feature set and how to port it to a Cortex-M application | Continue reading
A collection of advanced GDB tips, extensions, and .gdbinit macros to speed up your debugging experience with the GNU debugger. | Continue reading
Post covering how to provision unique parameters, such as serial numbers or public and private encryption keys, onto firmware-based devices. | Continue reading
Monitoring and tracking embedded devices using heartbeat metrics, an alternative to log processing, helps hardware and IoT companies derisk firmware updates and alerts them to issues quickly. | Continue reading
A guide on how to build custom drivers for hardware on the Zephyr RTOS using the Device Driver Model. | Continue reading
A guide on how to build OTA DFU for your projects, as well as some common design pattern that are useful for implementing firmware update. | Continue reading
A walk through of how hardware and software breakpoints work, how they are configured using GDB Remote Serial Protocol, and how to configure hardware breakpoints using the ARM Cortex-M Flash Patch and Breakpoint Unit | Continue reading
An overview of how to compile an ARM Cortex-M based project with LLVM/Clang and an exploration of the neat features available in the toolchain such as static analysis to identify memory leaks and deadlocks | Continue reading
An introduction to using git bisect against a set of changes as a bug-hunting tool, followed by some deeper techniques to speed up the process of tracking down when unintended behavior is introduced | Continue reading
Introducing gdbundle, a minimalist plugin manager for GDB and LLDB, which enables developers to easily install Python scripts from PyPi | Continue reading
A guide of how to make the most of GNU Binutils and other tools to examine ELFs | Continue reading
A brief overview of GNU Make and its features, Makefile syntax, and how to use Make to build C/C++ software and firmware | Continue reading
A step by step guide covering how to integrate watchdog timers (both hardware and software) on embedded systems, best practices, and how to debug and root cause the errors which lead to watchdog resets. | Continue reading
A step by step guide on how to use Rust for Digital Signal Processing (DSP) in a firmware project | Continue reading
An in-depth explanation of the I2C protocol, followed by common bugs and how to fix them. | Continue reading
How to use Conda for managing build, test, and debug environments and dependencies for local development and continuous integration in the context of embedded software projects | Continue reading
Bringing an embedded Rust application from zero to main | Continue reading
Newlib is most commonly used C standard library in ARM-based embedded systems. In this post, we learn more about Newlib and how to use it in a project. | Continue reading
Asserts are a quick and proven way to prevent bugs in embedded systems. An optimal assert implementation maximizes the context around the assert with minimal code and RAM overhead. | Continue reading
An exploration of the best and worst GCC (and Clang) compiler options and flags for embedded development with practical examples of why the flags are good or bad | Continue reading
An overview of unit testing embedded software. Topics covered include fakes, mocks, and stubs, as well as setting up and using CppUTest. | Continue reading
An overview of the factors which influence the throughput realized when using Bluetooth Low Energy and step-by-step instructions on how to analyze what is limiting throughput in real applications | Continue reading
A step by step guide on how to use continuous integration for firmware projects with CircleCI. | Continue reading
Step-by-step walkthrough of ARM Cortex-M Exception handlers & how to configure ARM System Fault Handlers and the Nested Vector Interrupt Controller (NVIC) with examples in C | Continue reading
A walkthrough on how to build a command line interface (CLI) for a firmware project using the Python Invoke package. | Continue reading
A walk through of GCC configuration options and flags to optimize firmware code size | Continue reading
An in-depth tutorial on how to write a bootloader from scratch for ARM cortex-m series microcontrollers. | Continue reading
A walk through of the ARM Debugger Stack from the Coresight DAP to Debug Probes to GDB Server. Followed by a logic analyzer trace of a end to end SWD transaction | Continue reading
How to setup GDB and Python to use PyPi packages in GDB scripts | Continue reading
Step-by-step examples of how to use the ARM Cortex M Memory Protection Unit (MPU) to improve firmware security and stability. | Continue reading