Embedded Journeys

Debugging RP2350: Subtle Differences Between the RISC-V and ARM cores

3 insights that facilitated my Pico 2W multi-core debugging sessions

This all started when I was trying to understand how my RP2350 would react when I wanted to read a memory address like 0x00000000 on the RISC-V and ARM cores. However, this sidetracked me into a deeper understanding of debugging the RP2350 with my Raspberry Pi Debugger Probe! At first, it felt like regular breakpoints were just ignored, if the program even started running at all! My attempts at running RISC-V and ARM cores revealed some subtle debugging behaviour.

Raspberry Pi Pico 2W on the go!

Making sure I've got a Raspberry Pi Pico with me!

Just a small post about how I’m making sure I can quickly get my Raspberry Pi Pico 2W with me when on a commute. A small assortment box carries all components I need to quickly set up a small development environment.

Raspberry Pi + HC-SR04 Ultrasonic Distance Sensor: Wiring, Code and Accuracy Tips

Exploring how the HC-SR04 ultrasonic sensor measures distance using sound, and how to wire and program it on a Raspberry Pi.

The HC-SR04 is a popular and inexpensive ultrasonic distance sensor that measures range using sound waves. In this post, we connect it to a Raspberry Pi, explain the electronics behind the Trig and Echo pins, build a safe voltage divider for 3.3 V logic, and write a simple Python script to read accurate distance measurements. We’ll also touch on accuracy limits, environmental effects, and how ultrasonic interference can impact your readings.

Why hexdump and hexdump -C Show Different Output

A quick discovery I made while dumping ELF files with hexdump. A single flag changed the output in a way that made me rethink what I was seeing. Turns out, understanding how hexdump works under the hood is more important than it looks at first glance

GNU Linker: Dissecting ELF Executables on Raspberry Pi

We explore what happens when the GNU linker turns an object file into an ELF executable on Raspberry Pi, diving into entry points, program headers, and binary layouts.