Most embedded software practitioners – sadly, not all – know that some form of what is normally called “Mutual Exclusion” is necessary when a read-write resource is shared among two or more concurrent activities, particularly (but not necessarily only) when test-and-set operations are involved. The expression “Mutual Exclusion” is so entrenched as a generic concept that I feel obliged to use it as such, but sometimes it is anything but mutual. Read more…
Since Easter, when I promised a new release of this software, I’ve been exceptionally busy in a money-earning sort of way. I’ve noticed that others are blogging less now that their business has (presumably) picked up, so I’m not alone in disappointing my readers, but that is no excuse and so I have just uploaded the software I promised. Read more…
The free software you may have downloaded from this site embodies an error of principle (details another time). It compiles with VC++ and IAR (ARM), and the code is correct and runs properly. However, I tried g++ today and it was less forgiving. Unfortunately, it’s right and I’m wrong, even though I got away with it up to now. I’m working on a fix and will post again when I have finished it.
The C++ dynamic memory software I published last week has been updated with a small but useful enhancement.
Find out more by downloading it: start by going to the Subscribers’ page.
For the last couple of months, my software efforts have been diluted by the need to attend to other matters no less important but somewhat distracting. Now I have finally released some software. It is not the whole of SKC++, though. I learned so many things, at a detailed level (mainly about C++), in developing SKC++ that I realised that I had built “one to throw away”, as the saying goes. The refactoring is well underway and I have decided initially to release some of the essential elements of SKC++ in stages, as library modules which can be used more generally Read more…
Hypothesis: SKC++ doesn’t need semaphores. If you disagree with this, please comment, with supporting arguments. In the meantime, I’ll present a few arguments of my own, Read more…
When it comes to interrupts, SKC++’s guiding principle is “minimum interference”.
Some kernels require that interrupts be processed internally, the internal Interrupt Service Routine (ISR) calling out to an ordinary user function, sometimes also called an ISR, confusingly. Some others let you code the ISR yourself but impose restrictions on how you do it.
SKC++ does not require you to alter the way you program ISRs; Read more…
Just a short article today as SKC++’s mutual exclusion facilities follow a familiar pattern Read more…
Although I separated the ideas of posting an untrammelled event, using post, and sending a message (which also posts an event), using send, this is not such a good idea for receiving messages. One of the key things about an SKC++ task is that it should be able to wait at a single point in its processing in order to get something to process and that it should deal with only one event or message at a time. Accordingly, the wait function has been enhanced to deal with message reception, as well as with raw events. Read more…
I have simplified the prototype for send in order to make its use a little easier and also to improve the efficiency of the implementation. Here is the new prototype: Read more…