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. (http://en.wikipedia.org/wiki/Priority_inversion) To put it more […]

Share

Real-time scheduling: no locks, please.

In a previous post, the assignment of priorities was discussed. There are a couple of axioms involved. One must mention at least these two: No resource sharing, locks or busy-waits. Static priorities (i.e. the task with the highest static priority that is runnable immediately preempts all other tasks, and the task priority does not change […]

Share

Real-time scheduling: assigning priorities

Real-time scheduling in practice In one of our previous items we talked about Real-time scheduling. Now, we want to show how priorities could be assigned in practice and how deterministic system response can be designed. Deterministic response needs to take into account the worst case scenario: everything is happening at once, at the worst possible […]

Share

Not all processors have atomic instructions!

Recently we were involved in improving boot-up times of a Linux based platform. We noticed that the boot-up time was much longer than expected based on the processor speed. The only way to figure out what was happening was to profile the start-up procedure. Something that is not always easy on limited embedded platforms like […]

Share

Simple Platform Abstraction

What When prototyping, it is uncertain and sometimes even unlikely that the experimentation platform will be the basis of the final industrialized product. Therefor, it is good software developer workmanship to protect the logic development from change with regard to board, processor and real-time operating system, if and whenever possible. A platform abstraction – in […]

Share