This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

"Lighting Bolt" - an open source scheduler for a STR9 is about to be released

Hello all,

I have been working on this personal project for quite some time now. "Lighting Bolt", an open source STR9 preemptive scheduler, will be released within two weeks. A separate announcement shall be made as to the exact release date along with a link to the "SourceForge" page dedicated to the project.

"Lighting Bolt" is based on my previous endeavour for the C167 controller (available at sourceforge.net/.../) but I feel that it is a much better, mature computer program. I have tried very hard to deliver a piece of quality software.
The following modifications have taken place to produce "Lighting Bolt":

* A very fast context switch, measured in [microseconds] at 48[MHz], compared to the 100[milliseconds] average of EOS at 40[MHz].
* A rewritten synchronization module. Semaphores are now truly task-safe and contain the correct logic. A new synchronization primitive (event) introduced.
All synchronization elements are linked statically, and there is no need to allocate/release them, or for this matter neither any other system resource, like timers. User does not need direct access to basic system data types to use the kernel. This enhances robustness.
* The system's priority queue has been completely rewritten. It is now logarithmically correct.
* The program has been generally retrofitted to run efficiently on an ARM core.
* Strict screening by PC-lint.
* Open source installer (NSIS) used to create a self extractor for the delivery of the source code.
* Documentation.

  • I don't have the time to really review your EOS source at the moment, but a quick overview indicated a few [meaningless] comments:

    1) I like your use of 'WAR STORY' comments within the source. I'll have to consider this type of source documentation within my Rules for Code Monkeys book.

    The 'WAR STORY' has merit with regards to development notes and best methods tried and why they were implemented/avoided/discarded. This information is generally lost, or simply doesn't have a home. By including this information locally (source-level) any future code-monkey might heed the warning and not rework it thinking they're going down an uncharted [superior] path--which may have been charted and discarded.

    I've just used my 'notes:' section to make general 'war story' type comments: but without too much detail.

    2) Never ever use the TAB character. Use space fill. In the 'olden days' the TAB was thought to reduce the size of source code so that you didn't use up the valuable disk space: you only had 360k/720k/1.2M floppies (or less)... or a 10M hard-drive if you had a cool system.

    Now that we have Gigs to burn, I don't think that saving the 3 'extra' spaces for space (ASCII 0x20) fill is going to chew up your storage space.

    3) Thanks for sharing your code. Not many people have shared their IP on this forum... well, source code from 'competent' people.

    --Cpt. Vince Foster
    2nd Cannon Place
    Fort Marcy Park, VA

  • Vince,
    Thank you. It will take about two more weeks to finish everything, so I hope to release it by end of 2008/beginning f 2009. By the way, I have meant, of course, that the priority queue is nowalgorithmically correct.

  • "Not many people have shared their IP on this forum... well, source code from 'competent' people."

    I think that little final passus was needed. We have seen quite a lot of shared code that have required me to spend a significant amount of time to comfort my shivering computer before I have managed to get anything done.

    Tamir: Great work. I will have to take a closer look when it gets released. I'm currently using LPC23xx ARM7 chips but maybe a port can be done in a reasonable amount of time.

  • Per,
    A port should be a piece of cake. The entire program is built using the RealView compiler, most of it in C while the number ARM9 specific items is very limited - the startup file, the number of VIC entries, some assembly that refers to a few ST library files in the context switch code that may be a little different for the ARM7 platforms, but that is it about it. I don't know the ARM7 very well, but even the context switch assembly should work on it as is. We'll see.

  • Hello,

    I have decided to wait with the release until the very beginning of 2009 (I plan to release the software before the 5th of January). I need to finish the user manual and there are some pending software issues as well (and new features, too: per task stack level checking, synchronous messaging etc.).

    Tamir