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 […]
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 […]
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 […]
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 […]
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 […]
Recent Comments