Follow our illustrated blog on Embedded Software Architecture

How to build a hybrid solar/wind energy harvester?

Priority inversion

I found the inspiration for this article while working on a consultancy job: Priority inversion. In computer science, priority inversion is a (potential) problematic scenario in scheduling in which a high priority task is indirectly preempted by a medium priority task effectively inverting the relative priorities of the two tasks. ( To put it more […]


Mutexes and semaphores: the FreeRTOS implementation

Let us start with an interesting quote from the FreeRTOS web site: Binary semaphores are used for both mutual exclusion and synchronisation purposes. The quote clearly makes a distinction between the two use cases we saw in part 1: mutual exclusion: how to serialize access to shared data, and synchronization: how does a producer notify […]


User level spin locks revisited

This article was written – quite a few years ago – but recent activities made it worthwhile to take another look at it,  revise the content and give it an overhaul to alleviate and clear up some of the inaccuracies. It starts with a quote and excerpt from the book Inside Microsoft Windows 2000, Third […]


Mutexes and semaphores: two concepts for two different use cases

Introduction There has always been (and there still is) confusion on terminology and usage of mutexes and semaphores. The main reason is that the term ‘semaphore’ has a different meaning depending on the context. We need to distinguish two contexts or levels: the concept and usage level, and the implementation level. This article is about the […]