I remember an experience, years ago, where I strangely felt that the target I was debugging was a living entity. I don't know if I'm the only one who already felt that, but It was just like the evil serial spiders in the header. Something, somewhere was playing with me. You already had this feeling, didn't you?
Can you share this email? This is the best way to support Embedsys Weekly.
Share via email.
Thank you and happy reading!
Articles
Embedded Logging Case Study: From C to Shining C++
Luke Valenty presents the huge work done by Intel firmware team to manage
to log detailed information at runtime using as few as possible memory, CPU and bandwidth.
To get the best logging system possible, a lot is done at compile-time leveraging C++ template metaprogramming.
Designing a Better strcpy
Even though we love our C string functions, I believe that we have to face the truth and
avoid most of them. They are too much error-prone and consequently lead to catastrophic failures.
This article does a reasonable analysis of what is available against a list of 5 properties that a "good"
string function should have.
Crabs All the Way Down: Running Rust on Logic Gates
I rarely read articles as wide and deep than this one.
Tom Niget makes and simulates a CPU that supports most of the ARM Thumb instruction set. Then he
jumps through many hoops to showcase several applications: a plotter, a BASIC interpreter/REPL, a webserver,
a terminal emulator... Impressive! All the
ARM/Thumb CPU and code is open source.
Packed structs in Zig make bit/flag sets trivial
In the issue #106, I selected an article that highlights the benefits of using
Zig to build C binaries.
This time I discovered with this article how versatile Zig can be. Mix the possibility to declare arbitrary bit-width
integers (what about a u28, a u13 or a u1), with good compilation time validations, and you get the
most powerful packed structs implementation that I know.
Demystifying the LFSR
LFSR (Linear Feedback Shift Register) is the most used pseudorandom bits generator for systems missing
an external source of randomness. This article explains the mathematics that makes LSFR a good enough
PRNG for these cases.
Catching sanitizer errors programmatically
In their recent versions both gcc and clang compilers added sanitizer functionalities.
These are built-in features to detect memory leaks, out of bounds accesses or undefined
behavior usage in your code. This article shows how to execute custom code when an
error is detected by the sanitizer.
Tools / Libraries
Open Source Autopilot for Drone Developers
PX4 is an advanced and open source autopilot flight stack for drones.
PX4 can flight completely autonomously for pre-programmed missions, or, obviously, it can help a pilot
who remote-controls the drone. It runs on NuttX RTOS.
Jobs
Gyro-Stabilized Systems, Software Engineer, Full-time, Grass Valley, CA
As the industry leader in stabilization technology, GSS offers an inspiring and purpose-driven workplace with
the opportunity to create leading-edge technology platforms utilized worldwide.
Misc
Replicant: Reproducing a Fault Injection Attack on the Trezor One
This article does a great job at introducing the reader to fault injection. What is a fault injection?
What are the common technics to do a fault injection? By the end of the article, you'll get answers to these
questions and, of course, all the details on how to apply them on the Trezor One. A second part is planned to
show how the same attack can be done with the PicoEMP,
a low-cost Electromagnetic Fault Injection (EMFI) tool.