| 22 aug 2008 | File system added: v0.86 |
| 13 jun 2008 | Configuration parameter incorrectly set. |
| 10 jun 2008 | Updated installation toolchain: v0.841 |
| 8 jun 2008 | Synchronization rewritten: v0.84 |
| 3 apr 2008 | First bug. |
| 31 mar 2008 | Launch of v0.82. |
| 29 mar 2008 | We have a mascot. |
| 29 feb 2008 | First Launch of v0.80! |
File system added: v0.86
The Femto OS has been changed on many pleaces. See the changelog for full details. Most important change is the addition of a file system on EEPROM. The EEPROM can now, partially if necessary, be used to store files. Since writing to the EEPROM costs time, the writing task is blocked, and other tasks are allowed to continue. The synchronization is managed by a single write - multiple read synchronizer, which is totally independant of the allready present synchronization methodes, and takes only one byte of ram.
I have also added a lightweight event system. This can be utilized in for example interrupts, to revive waiting tasks. It even works when the OS is interruptable. Using events you can setup communication with much less overhead as compared to the traditional approach (interrupt driven).
Furthermore, it has been a while since a tested the toolchains on the different platforms. Now, i did not change anything (still all gcc 4.2.3), so everything should work. Well, you know, those things usually have the most problems. So if there is one, mail me.
Configuration parameter incorrectly set.
Unfortunately the packages 0.84 and 0.841 have been shipped with
#define cfgCheckEvents cfgTrue
instead of
#define cfgCheckEvents cfgFalse
in the two examples TestFlashLeds and TestQueus. When cfgSysOptimized is set to cfgFalse (as is per default) this results in non-functional applications unless you connect the device to the trace application. Setting cfgCheckEvents to cfgTrue and a clean/build cycle resolves the matter.
The binaries in the package are functional, since they where compiled with optimization switched on.
I will not ship a seperate package to resolve this matter.
Updated installation toolchain: v0.841
Unfortunately, there where some script commands commented out in the last install toolchain script. This has been corrected and the file was replaced in version 0.841
Synchronization rewritten: v0.84
The syschronization primitves have been rewritten. This resulted in a smaller footprint for the applications making use of a single slot, whereas it is now possible to block on two slots simultaneously. This comes in handy when you need to pump data between two queus for example. No need to spin lock.
Furthermore, the bug has been solved, or more acurately, a configuration parameter has been added, and i hacked the backend of the gcc compiler to accept a new attribute "bikini". The code will still compile with the standard compiler, but that may result in larger code due to unnecessary bytes in the pro- en epilog. The option bikini comes in place of the naked attribute so that the compiler includes a framepointer when needed, but still skips the rest of the epilog and prolog.
The api has changed a little and we now have a page on this site for your convineance. And, we have also a page describing all config parameters. These are handy for a quick reference.
First bug.
Today i learned there is a design flaw in my OS. I thought it was a gcc bug, but it is not. It is true gcc produces faulty code, but the reason is i more or less allowed it to. See bug report 1933368. The code can still be used however.
Launch of version 0.82.
Most important change is the posibility to use more slots (locks) per task. Thus some task may now enter one or more mutexes and then block on a queue. Nesting is realized within the same framework. Per two slots one byte of ram is used. If just one slot is required (old situation) code is further optimized by the preprocessor. Tasks that do not use slots do not consume ram anymore, so this usually gains some bytes. Code size has increased somewhat. See changes for full details.
Note i tried to compile Femto OS with GCC 4.3.0. This lead to an increase of the codesize (same compiler options and code) of approximately 8%! So i keep it to GCC 4.2.3 for this moment.
We have a mascot.
No self repecting OS can do without a proper mascot. Since my artistic skills are below any measurable level, i asked Anja from "Anja Ranja" to design something. It was based on an encounter i once had with a goose. The behaviour of that animal inspired me somehow to design Femto OS, so it seemd only fair to give it the place it deserves.
Please note i do not own the copyright of the drawing so if you want to copy it (to put on some device you made) please ask first.
First Launch of version 0.80!
To anybody who dares to use this product right after first launch: enjoy yourself!
Contact: info@femtoos.org



