Hardware Tools for IoT Firmware Developers

Matthias Bösl
5 min readSep 6, 2023

This article lists the items I use to develop embedded FW for consumer devices, it is intended to be helpful for newbies to the embedded field. Let me know in the comment section, what tools I should add here, I’m curious to hear what you’re using…

I structured the tools according to the field of debugging…

Protocol debugging…

USB, SPI, CAN, UART, MBUS, I2C, I2S, 1-wire — digital protocols are the nerv cords of your products on the PCB, sometimes it’s essential to reliably being able to see what’s going on at line speed, or maybe just to realize that you forgot to add a pullup resistor to your I2C lines.

Nobody knows how to actually pronounce it’s name, but it became the “De Facto” standard tool for debugging digital and some analog interfaces.

Saleae Logic 8

In my case, the device is a Logic 8, with ~400$ it’s quite some money for an initial investment, but I think it pays off rather quick through the time you’re able to save with this device. The Logic 8 can do 25 MHz and works from 1.8–5.5 Volts, so you should be able to observe most interfaces out of the box.

What makes the solution more than complete, is an easily extendable desktop application, that has out-of-the-box support for plenty of protocols, and makes it a breeze to get started quickly.

Logic 2.4.9

We’ve been using the saleae devices also in an automated setups. For these we definitely recommend to use original Hardware instead of the cheap clones around, to have a stable setup.

While writing this article I also stumbled over the Analog Discovery 3 from Digilent. Depending on your needs this might also be an attractive alternative with some tradeoffs. It comes with a lower sample rate, but with extended capabilities on the analog side, including a waveform generator!

Additional equipment for connecting the Saleae to real PCBs:

PCBite

Power consumption debugging…

No user or customer wants to replace batteries with pleasure, this is a key debugging element of battery driven IoT devices. The Nordic PPK2 allows you to measure real time power consumption of your device under test.

nordicsemi PPK II

Along with the hardware, nordicsemi supports a UI software, that can be used to visualize your measurements

nordicsemi Power Profiler showing a WiFi Device

There is also some unofficial support of a Python API for automation.

If you’re also interested in bringing this into CI/CD, find here my article about using power consumption analysis in a continuous setup.

PCB debugging…

The TS100 has become one of my favorite tools after many years with clunky irons.

Soldering Iron — TS 100

The device comes with a mini USB socket, that allows you to flash a modified firmware like IronOS.

My initial existing notebook power supply had a pretty rigid cable, so I modified mine with a highly flexible cable from a tattoo machine. This improved the use of the device quite a bit.

Nowadays I’d go for the Pinecil, since it can be powered using USB-C directly. (Disclaimer: You’ll need a power source capable of driving a high current — USB-C: PD and QC 3.0 12V-20V 3A)

Firmware debugging…

My standard tool for flashing and debugging devices, it supports GDB server, SWD and JTAG for a multitude of different targets covering ARM, RISC-V and even Xtensa (ESP32's). I’m using a “Base” version which supports almost all features I regularly make use of. Although Ozone performance debugging is just supported with the “Plus” devices.

Since quite some time Segger is providing a smaller version of the Base debugger as shown below

One feature to mention specifically is RTT. With RTT it is possible to output information from the target as well as sending input to the application at a very high speed without affecting the target’s real time behavior. You can make e.g. use of a virtual UART as a debug interface.

Segger J-Link Base Compact

For educational / non-commercial use, there is also an “EDU-mini” version of the J-Link available, it’s super tiny.

JLink EDU-mini

Aether debugging…

A small affordable SDR is probably not necessary for everyday use, but sometimes very helpful. There are many RTL based SDR’s out there, my choice is the NESDR from Nooelec. It works in the range of 100kHz-1,75GHz, so good enough for 868MHz based Radios like e.g. LoRa. For higher frequencies you need to spend a bit more cash e.g. the HackRF One or the Blade RF 2 are in a higher price range but come also with TX capability.

Nooelec NESDR SMArtee

For our use case it was mainly used to check if we have a clean environment in our CI/CD setups, because we found interference with adjacent devices led to wrong power consumption measurements.

gqrx Spectrogram

In Linux you can use gqrx to visualize what’s going on in your surrounding spectrum. Also helps to get a feeling about signal strength, bandwidth and so on, so even if you don’t need it for production it’s interesting to play around with RF and visualize it…

WIP…

this is my list of equipment, I’m not getting payed by any of the vendors :-) please connect and let me know what your favorite tools are, happy to extend the list with new toys…

Linkedin

Twitter

or just add a comment here…

--

--