Edo Franzi is the designer of the famous Khepera Robot. He first developed uKOS, a multi-tasking OS for the 68k processors, as part of that project. uKOS was subsequently re-written in C and is now available, as uKOS-II, for a range of processors including the ARM Cortex M3 and M4 processors like the STM32 series.
Currently a section head for Vision embedded systems at CSEM S.A. in Switzerland, Edo has long been interested in robotics and microcontrollers. He was the designer of Khepera in 1992 while working for the LAMI group at EPFL in Switzerland. Khepera was a classic teaching robot. It was only about 60mm in diameter and used a 68331 processor with 256k RAM and 512k EEPROM. This was a sophisticated beast for its day and sold well to a good many research institutions. The original version of uKOS was written for this robot – all in 68k assembler. You can still buy the descendents of Edo’s Khepera and Koala designs.
Edo has a comprehensive web site covering all the features of the project. From there you can download the sources, the manual and some examples. There are also instructions on building the kernel. This is of particular intrest to me because it looks like he does his work on an Apple Mac. It is relatively unusual to find published information of using a Mac for embedded work so this makes a refreshing change.
The kernel currently builds with support for the ARM Cortex M3 (STM32F103) and ARM Cortex M4 (STM32F407) processors as well as the less well-known CSEM IcyCAM SoC (icyflex-1)
As you might expect, the uKOS kernel support all the features that you might require in a multi-tasking operating system. Here are just a few highlights:
- Up to 255 static processes
- Up to 255 dynamic priorities
- Preemptive multitasking
- Support of supervisor/user spaces
- Time management
- -Process timeout
- -Process suspension
- -Actions waiting under timeout
- Up to 255 static semaphores
- Up to 255 interprocess associations
- Up to 255 interprocess mailboxes
- Process-to-process synchronizations
- CPU statistics
- Customizable to other CPUs via stubs
Go and have a look now: