TargetOS™ Lite Minimal Real-Time Kernel
Overview
TargetOS™ Lite is lightweight minimal embedded kernel whose API is a compatible subset of the full TargetOS kernel.
Features
- Tasks
- FIFO-mode binary and counting semaphores
- SW timers
- Regions for malloc()-like memory allocations
- Interrupt service routines
This is the only kernel support used by Blunk’s middleware components, so the lite kernel fully supports all of Blunk’s file system and networking products. The lite kernel is licensed at no cost and is included in all file system and networking product releases.
TargetOS Lite was designed for a minimal code/RAM footprint. Using GCC 4.9.3 and the Cortex-A9, its code and RAM occupies 18KB and 5KB, respectively (using a 1KB main() stack). Each SW timer adds 32B of RAM. Each semaphore adds 8B of RAM if the optional name is excluded.
No compromises have been made in performance. As shown by the semaphore benchmarks below for a 111 MHz Cortex-A9, both kernels are equally fast:
| Semaphore Test | Lite Kernel | Full Kernel |
|---|---|---|
| semPend() with waiting token | 0.1 usec | 0.1 usec |
| semPost() with no task waiting | 0.1 usec | 0.1 usec |
| semPost() with task made ready, no switch | 0.3 usec | 0.3 usec |
| semPost() with context switch | 0.4 usec | 0.4 usec |
| semPend() with context switch | 0.5 usec | 0.5 usec |
The full-featured royalty-free kernel in TargetOS™, can be
used when any of the following features are required:
- Priority-mode binary or counting semaphores
- Queues: ability to post 32-bit queued messages
- Mutexes: priority-mode binary semaphores with priority inheritance
- Nexuses: ability to post events to a group of tasks by a single call
- Task suspend/resume support
The post-every and post-after timer routines of the full kernel are not present in the lite kernel, but can be implemented by tmrCallAfter(), which is supported by both kernels.