Blogi
Loe meie blogi, kus süveneme manussüsteemide väljakutsetesse, püsivara parimatesse praktikatesse ja tööstuse trendidesse. Blogi on inglise keeles.
Running OpenOCD in Docker: A "Tools as Code" Approach to Embedded DevOps
Discover how Docker containers can simplify your embedded tooling setup, making OpenOCD portable, isolated, and hassle-free, all while keeping your Raspberry Pi 4 devbox clean and efficient.
Automating OpenOCD Distribution with a Private Gitea Package Registry
Turn your OpenOCD updates from a manual chore into a one-click process. Learn how to set up a private Gitea Package Registry, upload .deb files, and install them effortlessly on any Debian-based machine. Automation made simple.
How I Finally Cross-Compiled Rust App for Pi Zero (After Many Fails)
A debugging story of segmentation faults, ARM quirks, and Docker containers or how to compile a Rust application for the Pi Zero.
How to Embed Binary Information in Your Rust Pi Pico Firmware
Embed binary metadata in your Rust Pi Pico firmware with picotool! Learn how to store program names, versions, build dates, and more in flash, so you can easily track firmware details with a single command.
Prototyping in an Hour: A Small PCB and a Quiet Shift in Embedded Work
Designing and ordering a custom PCB in under an hour — a reflection on modern KiCad workflows and how rapid prototyping has quietly changed embedded development.
Advanced RTT in Embedded Rust: A Guide to Multi-Channel Logging and Binary Streaming (Part 2)
Stream RP2040 sensor data over RTT and decode logs in real time. Use Python to visualize binary temperature readings and turn raw bytes into insights.
Advanced RTT in Embedded Rust: A Guide to Multi-Channel Logging and Binary Streaming (Part 1)
Learn to set up multi-channel RTT on the Pi Pico: structured logging with defmt, debug prints, and host commands—all over a single SWD/JTAG probe.
How to Move RTT to a Custom RAM Section in Embedded Rust
Learn how to place RTT buffers and the control block into a fixed RAM section in embedded Rust. This guide covers linker script changes, custom RTT initialization, and setting up a reliable RTT print channel.
How to Use RTT in Embedded Rust: Setup and Logging
Learn how to use RTT in Embedded Rust for fast, non-blocking debug logging. This guide covers setup, rtt-target usage, OpenOCD configuration, and VS Code auto-start.
Welcome to The Crab Lab: Diving into Embedded Rust (and Maybe Some Memes)
Are ya ready, Kids? Dive into The Crab Lab, a new series exploring Embedded Rust through tutorials, projects, and troubleshooting tips. Join the journey of learning, experimenting, and building with Rust on microcontrollers.
Debugging Microsecond Delays on STM32: When 1 µs Isn’t What It Seems
Why your STM32 timer-based microsecond delays may not work as you expect. Discover how Cortex-M0+ pipelines and timer register updates can affect your timing. Learn ways to correct these issues.
How to Strip Debug Symbols from Software (and Still Keep GDB Context)
Learn how to use objcopy to strip debug symbols from an ELF executable, protecting sensitive data without losing the ability to debug your code using an external .dbg file and GDB.
Cortex-M0 Profiling: How to Trace Without Hardware Support
The ARM Cortex-M0 and M0+ lack hardware tracing features like SWO, ETM, and ITM, so how do you profile code on them? In this post, I explore software-based techniques to get deeper insight into performance and debugging on these resource-constrained MCUs.
From Feature Tetris to Full Power – The UV-K5 Flex PCB Brain Hack
The Quansheng UV-K5 makes you play firmware feature Tetris with its tiny MCU. In this project, we perform some embedded brain surgery—replacing it with an STM32 via a custom flex PCB for more flash, RAM, and possibilities.
Simplifying OpenOCD Deployment with a Debian Package
Instead of manually copying binaries and dependencies across machines, you can package OpenOCD into a Debian .deb archive. This post walks through creating a custom package to simplify installation and distribution.
Managing Multi-Compiler CMake Projects in VS Code
Learn how to build host utilities alongside embedded firmware in CMake by using ExternalProject. This guide covers setting up multiple compilers, integrating utility projects, and configuring VS Code workspaces for smooth IntelliSense.
Cross-Compiling OpenOCD: A Step-by-Step Walkthrough
Learn how to build OpenOCD binaries on Ubuntu 22.04 for both the ARM64 and AMD64 target architectures. A great way to share a consistent OpenOCD build across your Debian systems
How to Find the Memory Address of a Symbol in an ELF File
A quick and useful tip for locating symbol memory addresses in ELF files using arm-none-eabi-nm combined with grep—perfect for embedded debugging scenarios like setting up SEGGER RTT or inspecting linker placements and runtime symbols.
Including External Libraries in CMake Projects
Learn how to use CMake’s FetchContent module to automatically download and integrate libraries like CMSIS into your embedded projects, eliminating the hassle of manual copying and updates.
How to Use a Raspberry Pi as a Remote OpenOCD Debugger
Learn how to turn a Raspberry Pi into a remote debugging server for the RP2040 using OpenOCD, a complete with step-by-step setup and instructions for building OpenOCD from source to resolve hardware compatibility issues.
Getting Started with OpenOCD: A Beginner’s Guide for Embedded Developers
A beginner-friendly guide to installing, configuring, and using OpenOCD for flashing and debugging microcontrollers.
Oled prototüübi või skaleerimise faasis? Me saame aidata sul liikuda kiiremini ja enesekindlamalt edasi.