Archive

Archive for the ‘RTOS’ Category

Exclusion Is Not Always Mutual

June 26th, 2010 No comments

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…

Categories: Mutual Exclusion Tags:

SKC++: No semaphores!

January 7th, 2010 12 comments

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…

Categories: Projects, RTOS, SKC++, Synchronisation Tags:

SKC++: Interrupt handling

December 15th, 2009 No comments

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…

Categories: Interrupts, Projects, RTOS, SKC++ Tags:

SKC++: Mutual Exclusion

December 2nd, 2009 No comments

Just a short article today as SKC++’s mutual exclusion facilities follow a familiar pattern Read more…

Categories: Mutual Exclusion, Projects, RTOS, SKC++ Tags:

SKC++: Receiving messages

November 19th, 2009 No comments

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…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags:

SKC++: Change to “send” function

November 18th, 2009 No comments

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…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags:

SKC++: Sending Messages

November 16th, 2009 No comments

This is a relatively short article, as the sending of messages from one task to another is straightforward. I decided to defer its counterpart, “Receiving Messages”, until next time because there are several things to consider there, making the subject worthy of an article of its own. Read more…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags:

SKC++: Message-Passing Classes

November 5th, 2009 1 comment

Message

To avoid clutter, I haven’t shown the class methods. On this occasion, I’ll just describe the classes and their characteristics in the text. Read more…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags:

SKC++: Message-Passing Uses

November 4th, 2009 No comments

Before jumping into the design of the message-passing classes, it is as well to consider how the facility might be used in applications.

I start with a common, nicely encapsulated but rather restricted kind of use…

Local Message-Passing

Local Message-Passing

In this slightly abused UML activity diagram we see Read more…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags:

SKC++: Message-Passing Principles

November 2nd, 2009 3 comments

Message-passing is used, in an RTOS-based system, to provide a safe way of transferring data from one context to another or, in other words, from task to task. What is safe, though, is not always efficient and vice versa. Read more…

Categories: Message-Passing, Projects, RTOS, SKC++ Tags: