Table Of Contents
User API Function Reference
pico]OS is a highly configurable and very fast real time operating system. It targets a wide range of architectures, from the small 8 bit processors with very low memory till huge architectures like 32 bit processors with lots of memory.
pico]OS is currently divided into two layer. The pico-layer (the core of the operating system) includes this features:
- two modes: standard priority based or round robin
- preemptive multitasking
- max. 64 tasks on 8 bit processors, max. 1024 tasks on 32 bit processors
- round robin: max. 8 priority level on 8 bit processors, max. 32 priority level on 32 bit processors
- the number of events is unlimited
- flag events
- one built in message box per task
- unlimited box size, messages are collected
- messages can be pointers or huge buffers
- autonomous running timer, the system timer interrupt is used as timebase
- timer can work in one shot mode or in auto reload mode
- when a timer expires, it triggers a semaphore event
- up to 256 simulated software interrupts on 8 bit processors
- can be used to interface fast hardware interrupts outside the scope of pico]OS to the operating system
- atomic variables
- blocking and nonblocking lists
- debugging support allows access to internal structures
The optional nano-layer supports:
- Bottom Halfs for interrupt service routines
- Multitasking able console I/O
- Multitasking able dynamic memory management
- Standardized API for easier task creation
- Named tasks, semaphores, mutexes and timer
- CPU usage measurement
Currently, ports to the following platforms are available:
- Intel 80x86 in real mode, the executable is loadable from DOS
- MS Windows 32bit port, usefull for software development and debugging
- 6502 / 65c02 / 6510 series, port for Commodore 64 available. Minimum configuration (4 tasks): 4.6kb code, 4.7kb data
- PowerPC: IBM PPC440 (GNU C and MetaWare compiler supported)
- AVR (ATMega, GNU C compiler supported)
- ARM: SAMSUNG S3C2510A CPU (ARM940T core), Philips LPC ARM chips, Cortex-M0 and Cortex-M3
- Texas Instruments MSP430 family
- Unix (using setcontext/getcontext), for development and testing purpose only)
- MyCPU (see http://www.mycpu.eu)
The pico]OS Real Time Operating System consists of only a couple of files:
- This header is the interface to the operating system. It is included by the pico]OS core and must also be included by user applications.
- pico]OS configuration file. Must be supplied by the user.
- nano layer configuration file. Must be supplied by the user.
- Configuration file for the port. Must be supplied by the user / port developer.
- The pico]OS core source file. This is the operating system.
- The nano layer source files.
- This file implements a set of generic "findbit" functions. The "findbit" function is needed by the operating system. The user may support its own "findbit" function to increase performance on a particular architecture.
- User supplied file. This is the architecture specific C-code of the platform port.
- User supplied file (optional). This is the architecture specific assembler code of the platform port.
Copyright (c) 2004-2012, Dennis Kuschel.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(C) 2004-2012 Dennis Kuschel