Published articles & books
Embedded Debugging with the Black Magic Probe
This book covers setting up and using the Black Magic Probe for programming and debugging ARM Cortex-A and Cortex-M micro-controllers. The Black Magic Probe is an advanced "debug probe" that embeds a “gdbserver” stub. More information on the book, the debug probe, and the associated software is on the project summary page, with links to the various projects and where to source the parts.
A Trace Tool for Embedded Systems
Use a DIY dongle interface, a GUI trace viewer, and software to create a
compact tracing system.
(by Thiadmer Riemersma)
DIY Automated Component Dispenser
Thiadmer Riemersma's DIY automated component dispenser is a contemporary solution to a problem that has frustrated engineers for decades. The MCU-based design simplifies component management and will be a welcome addition to any workbench.
The "construction manual" was expanded since publication of the article and a few sections were clarified. The new construction manual is in the updated self-installing archive (for Microsoft Windows) with all software, firmware, design files and documentation. Carousel design files & software
Chapter 10 - Axonometric Projections: A Technical Overview
The article Axonometric projections - a technical overview is part of this compilation of advanced programming articles. (The on-line article has been updated since the publication.)
Wrapping up the feature article section of the magazine is Thiadmer Riemersma's article about embedded scripting. He explains how to harness the power of the Pawn scripting language. As you'll see, it's possible to extend your firmware without changing it.
Building a Callout Control
Thiadmer's balloon-style Windows control is configurable for many purposes.
The time-out feature in the callout control does not work in the published version (there is a fix for it). To make up for this annoying bug, I have improved the control to support a limited subset of HTML tags.
Packing DLLs in your EXE
DLLpack is a tool that allows DLLs to be embedded inside an executable and extracted the first time a function from the DLL is called.
The function dpUnloadDLL() wraps around the system function __FUnloadDelayLoadedDLL().
The article says: "I copied the functionality of __FUnloadDelayLoadedDLL() to
unload (and delete) all DLLs if you pass NULL for its filename parameter".
It turns out, however, that __FUnloadDelayLoadedDLL() cannot take
a NULL parameter, and therefore, neither can dpUnloadDLL().
Image Scaling with Bresenham
The graphics algorithm that Thiadmer presents here is quick, produces a quality that is equivalent to linear interpolation, and can zoom up and down.
The article "Image Scaling with Bresenham" is available on-line courtesy of Dr. Dobb's Journal.
ErrataCorrections, improved figures and additional notes appear in the errata for "Image Scaling with Bresenham". A sidebar in the original manuscript (not printed in the Dr. Dobb's article) about quick colour averaging is available on-line.
Windows Developer's Journal
Rebasing Win32 DLLs
The "D" in DLL stands for "Dynamic", and that refers in part to the fact that the operating system may have to load your DLL at a different base address than it was linked for. This article explains why that's an event worth avoiding, and provides a utility that tries to automatically base your DLL at an address that won't require dynamic relocation every time the DLL is loaded.
ErrataThe article mentions the "-B:address" option for Borland's TLINK32 linker. Next to setting the image base address, the -B: option also strips off the relocation table, and it should therefore be avoided. The newer linker by Borland, ILINK32, has the -b: option (lower case "b") that sets the image base address without stripping off the relocation table.
Windows Developer's Journal
Detecting Vertical Retrace
For animation with no annoying "tearing", you really need to avoid drawing to the graphics adapter when the CRT is also reading from the graphics adapter. You can't just read VGA registers directly to sync up with the vertical retrace, though —you really need a device driver, as this article shows.
The reasoning and some of the solutions behind this article are in the paper: "Detecting Vertical Retrace in Microsoft Windows". The pre-compiled drivers that the article refers to can be downloaded from that page as well; the source code for the drivers is available from Windows Developers' Journal.
The Small Scripting Language
Small, described as "Small C" without the "C", is a typeless, 32-bit extension language with a C-like syntax that features fast execution speed, stability, simplicity, and a small footprint.
The article "The Small Scripting Language" is available on-line courtesy of Dr. Dobb's Journal.
The Small language and its support code has improved considerably since the article was printed, and it has now been renamed to pawn. You can find out all about pawn at its own page.
A Balanced Dithering Technique
Dithering with just one neighbour doesn't sound very helpful —unless you're clever about how you visit the neighbours.
The article "A Balanced Dithering Technique" is available on-line courtesy of C/C++ Users Journal and Dr. Dobb's Journal.