FunkOS
Encyclopedia
FunkOS is a real-time operating system (RTOS) developed by Funkenstein Software Consulting, targeting a variety of microcontroller architectures. It is free to use in any project - commercial or otherwise - with few conditions. If the kernel is ported to a new target, that code must also be made available for inclusion in future releases. Also, if used in commercial projects, an attribution statement must be included in some form of product documentation.

Description

FunkOS is a fully preemptive multi-tasking environment, capable of running on a variety of modern microcontroller architectures.

The kernel supports an unlimited number of program "tasks" running from up to 255 different priority levels.

Tasks are independent programs, each with their own stack. At each RTOS tick, the highest-priority task is chosen for execution, with round-robin scheduling used when multiple tasks from the same priority level are ready to run.

An idle task must be defined for every application, and can be used to invoke power-saving functionality of the hardware platform.

Key features in the kernel include:
  • Semaphores
  • Mutex objects with Priority Inheritance
    Priority inheritance
    In real-time computing, priority inheritance is a method for eliminating priority inversion problems. Using this programming method, a process scheduling algorithm will increase the priority of a process to the maximum priority of any process waiting for any resource on which the process has a...

  • Periodic lightweight threads
  • Inter-process communications
  • Task time quantum support for round-robin tasks
  • Event queues
  • Fixed-block dynamic memory allocation
  • "Core Services" including a software real-time clock, and distributed computing support based on the concept of The Plumber
    Plumber (program)
    The plumber, in the Plan 9 from Bell Labs and Inferno operating systems, is a mechanism for interprocess communication, somewhat similar to copy and paste.The plumber is a program which handles all the messaging when programs make plumbing messages...

  • Device driver HAL
  • Task deadline monitoring (watchdog) module
  • 2D display driver library supporting software rendering and hardware-acceleration
  • GUI framework and widget library
  • FAT16/32 read-only file system support
  • Alternate C++ kernel (FunkOS++)
  • Alternate round-robin only kernel (Pipsqueak)


The kernel is highly customizable, allowing the developer to include or eliminate kernel features based on the application requirements. FunkOS is very lightweight as a result - the smallest useful kernel and application compiles to under 2 kilobytes of code space and 400 bytes of RAM on an AVR microcontroller.

The FunkOS++ kernel is currently the only open-source, preemptive RTOS for 8-bit microcontrollers written in C++.

Ports

Atmel
Atmel
Atmel Corporation is a manufacturer of semiconductors, founded in 1984. Its focus is on system-level solutions built around flash microcontrollers...

:
  • AVR
    Atmel AVR
    The AVR is a modified Harvard architecture 8-bit RISC single chip microcontroller which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other...

     (ATmega, ATxmega)


TI
TI
TI, Ti, ti or T.I. may refer to:* Acronis True Image, a disk imaging program* Cordyline fruticosa, a plant known as Ti by the Polynesians* Taiwan independence, a political movement* Thermal instability* Thermodynamic integration...

:
  • MSP430


ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

:
  • Cortex M-3 [untested]


Ports for other modern microcontrollers are planned for future releases.

Roadmap

Future releases will include the following features:
  • Virtual machine to enable hybrid native/virtual tasks
  • Support for Pic24 and DSPic architectures
  • Stabilize the Cortex M-3 port
  • Bitmap font librarian application

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK