Open source Real time Operating Systems for the STM32 and Cortex m3 MCu's






Here is a list of open source operating systems (RTOS) with support for the STM32 cortex m3 MCU

Free RTOS

FreeRTOS is a scale-able real time kernel designed specifically for small embedded systems

  • Free RTOS kernel - pre-emptive, cooperative and hybrid configuration options.
  • The SafeRTOS derivative product provides a high level of confidence in the code integrity.
  • Official support for 23 architectures (counting ARM7 and ARM Cortex M3 as one architecture each).
  • FreeRTOS-MPU supports the Cortex M3 Memory Protection Unit (MPU).
  • Designed to be small, simple and easy to use. Typically a kernel binary image will be in the region of 4K to 9K bytes.
  • Very portable code structure predominantly written in C.
  • Supports both tasks and co-routines.
  • Powerful execution trace functionality.
  • Stack overflow detection options.
  • No software restriction on the number of tasks that can be created.
  • No software restriction on the number of priorities that can be used.
  • No restrictions imposed on priority assignment - more than one task can be assigned the same priority.
  • Queues, binary semaphores, counting semaphores, recursive semaphores and mutexes for communication and synchronisation between tasks, or between tasks and interrupts.
  • Mutexes with priority inheritance.
  • Free development tools (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 and 8051 ports).
  • Free embedded software source code.
  • Royalty free.
  • Cross development from a standard Windows host.
  • Pre-configured demo applications for selected single board computers allowing 'out of the box' operation and fast learning curve.

HAL/Device Drivers: NO
Home Page: http://www.freertos.org/
Licence: GPL+ Linking Exception

Notes: Many ports to STM32 hardware http://www.freertos.org/index.html?http://interactive.freertos.org/forums/135228-stmicroelectronics


ECos

eCos is an open source, royalty-free, real-time operating system intended for embedded applications. The highly configurable nature of eCos allows the operating system to be customised to precise application requirements, delivering the best possible run-time performance and an optimised hardware resource footprint. A thriving net community has grown up around the operating system ensuring on-going technical innovation and wide platform support.

HAL/Device Drivers: YES
Home Page: http://ecos.sourceware.org/
Licence: GPL+ Linking Exception

Notes: port is available in cvs for stm3210E Eval Board which targets stm103  (flash+adc+serial+spi+usb+wallclock drivers implemented)


Chibios/Rt

ChibiOS/RT is designed for deeply embedded real time applications where execution efficiency and compact code are important requirements. This RTOS is characterized by its high portability, compact size and, mainly, by its architecture optimized for extremely efficient context switching. Feature highlights:

  • Efficient and portable preemptive kernel.
  • Static architecture, everything is statically allocated at compile time.
  • Dynamic extensions, dynamic objects are supported by an optional layer built on top of the static core.
  • Rich set of primitives: threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, event flags.
  • Support for priority inheritance algorithm on mutexes.
  • HAL component supporting a variety of abstract device drivers: Port, Serial, ADC, CAN, I2C, MAC, MMC, PWM, SPI, UART.
  • Support for external components uIP, lwIP, FatFs.
  • Many supported architectures.
  • Extensive test suite with benchmarks.
HAL/Device Drivers: YES
Home Page: http://chibios.sourceforge.net/dokuwiki/doku.php?id=start
Licence: GPL+ Linking Exception

Notes: Minimal kernel size is 1292 bytes for STM32

CooCox

CooCox CoOS is an embedded real-time multi-task OS specially for ARM Cortex M series.

CoOS Features:

  • Free and open real-time Operating System
  • Specially designed for Cortex-M series
  • Scalable, minimum system kernel is only 974Bytes
  • Adaptive Task Scheduling Algorithm.
  • Supports preemptive priority and round-robin
  • Interrupt latency is 0
  • Stack overflow detection option
  • Semaphore, Mutex, Flag, Mailbox and Queue for communication & synchronisation
  • Supports the platforms of ICCARM, ARMCC, GCC

HAL/Device Drivers: ?
Home Page: http://www.coocox.org/
Licence: GPL

Notes: Supports STM32 but not directly STM32100 value line but should be easy to port.


ScmRTOS

scmRTOS is a tiny pre-emptive Real-Time Operating System intended for use with Single-Chip Microcontrollers which is capable to run on small uCs with as little amount of RAM as 512 bytes.

  • Preemptive multitasking;
  • Up to 31 user processes (tasks);
  • Fast interprocess program control flow transfer
  • Low Resource Requirements:
    • Code: from about 1 kilobyte (depend on application and target platform);
    • Kernel Data: 8 + 2*Process Count;
    • Process Data: 5 bytes.
  • Supports separate return stack (required for IAR EW AVR);
  • Two methods of program control flow passing:
    • Direct context switcher call;
    • Software Interrupt context switch.
  • Interprocess communication:
    • Fast Event Flags (binary semaphores);
    • Mutual Exclusion Semaphores (Mutexes);
    • Byte-wide Channels (queues of "raw" data);
    • Arbitrary-type Channels (queues of arbitrary-type objects);
    • Messages.
  • Optional software switch on separate ISR stack on some platforms;
  • Support of various target hardware features such as hardware shifters etc., for more efficiency.

HAL/Device Drivers: NO
Home Page: http://scmrtos.sourceforge.net
Licence: MIT

Notes: cortex m3 ports : http://scmrtos.sourceforge.net/Cortex-M3_Ports


Nut/OS

Nut/OS is an intentionally simple RTOS for the ATmega128, which provides a minimum of services to run Nut/Net, the TCP/IP stack. It's features include:

  +  Non preemptive multithreading.
  +  Events.
  +  Periodic and one-shot timers.
  +  Dynamic heap memory allocation.
  +  Interrupt driven streaming I/O.

Main features of the TCP/IP stack are:

  +  Base protocols ARP, IP, ICMP, UDP and TCP.
  +  User protocols DHCP, DNS and HTTP.
  +  Socket API.
  +  Host, net and default routing.
  +  Interrupt driven Ethernet driver.

HAL/Device Drivers: NO
Home Page: http://www.ethernut.de/
Licence: BSD for core / contributions under various

Notes: cortex m3 and STM32 branches are in the CVS see http://ethernut.svn.sourceforge.net/viewvc/ethernut/branches/


BeRTOS

BeRTOS is a real time open source operating system supplied with drivers and libraries designed for the rapid development of embedded software.

  • Multitasking kernel: cooperative and pre-emptive task scheduling.
  • Ready to use hardware drivers for peripherals such as serial, ADC, LCD (text and graphics), NTC, memories and many more devices.
  • Full graphic subsystem for simple displays, with font support, bitmaps, clipping, text formatting, interactive menus.
  • Modular and scalable: you can configure BeRTOS to suit your needs, no waste of precious memory space.
  • Unix emulator available: BeRTOS applications can be developed without the target hardware! 
  • Fully static memory model, suitable for tiny memory systems.

HAL/Device Drivers: YES
Home Page: http://www.bertos.org/
Licence: GPL+ Linking Exception


Contiki



Contiki is an open source, highly portable, multi-tasking operating system for memory-efficient networked embedded systems and wireless sensor networks. Contiki has been used is a variety of projects, such as road tunnel fire monitoring, intrusion detection, water monitoring in the Baltic Sea, and in surveillance networks.

Contiki is designed for microcontrollers with small amounts of memory. A typical Contiki configuration is 2 kilobytes of RAM and 40 kilobytes of ROM.

Contiki provides IP communication, both for IPv4 and IPv6. Contiki and its uIPv6 stack are IPv6 Ready Phase 1 certified and therefore has the right to use the IPv6 Ready silver logo.

Contiki is developed by a group of developers from industry and academia lead by Adam Dunkels from the Swedish Institute of Computer Science. The Contiki team currently has sixteen members from SICS, SAP AG, Cisco, Atmel, NewAE and TU Münich


HAL/Device Drivers: Partial
Home Page: http://www.sics.se/contiki/
Licence: BSD-style license

Notes: port is in cvs for STM32F103 http://contiki.cvs.sourceforge.net/viewvc/contiki/contiki-2.x/cpu/arm/
Network stack focused on radio communication / wifi


TinyOS

TinyOS is an open source, BSD-licensed operating system designed for low-power wireless devices, such as those used in sensor networks, ubiquitious computing, personal area networks, smart buildings, and smart meters. A worldwide community from academia and industry use, develop, and support the operating system as well as its associated tools, averaging 35,000 downloads a year.


HAL/Device Drivers: YES
Home Page: http://www.tinyos.net/
Licence: BSD

Notes: There is a STM32 port under way , see here http://tschmid.webfactional.com/projects/1/ and the source code can be found here https://github.com/tschmid/tinyos-2.x/tree/stm32



Comments