BeRTOS
BeRTOS Development Status

If you are looking for the list of BeRTOS ports or a detailed overview of all modules completeness and stability this is the right place.

BeRTOS is stable and it's used in production environments but it is also a very large project, so all of its parts may not be at the same level.

Table of contents:

Kernel

BeRTOS features a cooperative kernel with synchronization primitives.

Embedded systems are mostly I/O bound systems. In these systems the microprocessor/microcontroller spends the most part of its computing power doing... absolutely nothing :-)

Since the system simply waits for external events to happen we decided to implement a strong and robust cooperative kernel with very low memory footprint and high modularity. This allows the kernel to be used on a variety of different CPUs, even the smaller ones. Currently the kernel code is very stable.

Kernel features :

The kernel has a port layer (a single assembly function) that needs to be reimplemented each time a new CPU is added. Here is a list of currently available CPU family ports:

CPU Family Port status
ARM7TDMI Atmel AT91SAM7, NXP LPC2XXX
Cortex-M3 Luminary Stellaris LM3S, ST Microelectronics STM32
Atmel AVR Most cpu supported (including Arduino)
PowerPC emulator
Intel/AMD x86 emulator
Intel/AMD x86-64 emulator

Core Drivers

BeRTOS is not only a kernel, it aims to supply full operating system services. To achieve this we need at least some core drivers for every CPU port.

These drivers are: system timer , debug system and serial comm driver .

Adding CPU support for an already present CPU family is quite simple since hardware manufacturers share peripherals design between the same CPU cores.

Core drivers are completely supported on all platforms.

MCU Internal peripheral drivers

Since BeRTOS aims to supply full operating system services, for every CPU port we try to implement as much drivers as possible. This section covers the current development status for MCU Internal peripheral drivers.

Driver /
MCU family
ADC UART FLASH I2C PWM SPI
Atmel AVR Yes Yes Yes Yes Yes Yes
Atmel AT91SAM7 ARM Yes Yes Yes Yes Yes Yes
Atmel AT91SAM3N ARM - Yes - - - -
STmicro STM32F103xx ARM Yes Yes Yes Yes - -
Philips LPC23XX ARM - Yes Yes Yes - -
Stellaris LM3S ARM Yes Yes Yes Yes - Yes

Generic CPU independent drivers

BeRTOS supplies a full set of CPU independent generic hardware drivers. To achieve this all drivers are structured to have an hardware abstraction layer (HAL) that isolate CPU specific code and makes porting to new CPU easy. Current driver list:

Driver Status
ADC API stable
Buzzer stable
Atmel Dataflash stable
I2C EEPROM stable
AT25Fxxx Atmel flash memories beta
FT245RL USB to parallel converter beta
Keyboard stable
I2C with bitbang support stable
Displaytech 32122A Graphic LCD stable
DC Motor with PID stable
Alphanumeric LCD stable
LM75 temperature sensor stable
MPC41 digital potentiometer stable
MPxx6115A pressure sensor stable
NTC stable
TRIAC phase partialization stable
PWM API beta
PCF85974 I2C port expander beta
Secure Digital card API stable
Serial API stable
Bitbanged SPI stable
TAS5706A digital audio DSP stable
TC520 ADC obsolete
Thermostat stable
System timer API stable
TMP123 temperature sensor stable
Stepper motor with ramps stable
Watchdog beta

To get up to date informations look at the drivers source code.

File system

BeRTOS supports two file systems. The first one is the mainstream FAT filesystem, using the FatFs library. The module is highly configurable, for example it can be compiled in read-only mode for some space saving.

The second is BattFs, a file system specifically planned for embedded platforms. The goal is to have a filesystem suitable for little flash and eeprom memories (like dataflash), reliable, robust and capable of wear-levelling the memory pages to increase its life. The code is in beta stage. Currently you can create files, append data to them but file deletion is still not supported. Wear-levelling is achieved by rotating a page every time it is written. Plans are to add even transactions (a whole write can be performed atomically).

File system development takes place in the fs directory.

File System: FAT

The FAT file system is the de-facto standard for removable devices such as SD cards or Memory cards. BeRTOS supports read and write operations on all existing FAT file systems, ranging from FAT12 to FAT32, with support to long file names. This file system is light and fast and allows to easily exchange data through external memory devices.

FAT module is highly configurable, for example it can be compiled in read-only mode for some space saving.

File System: BattFS

BattFS (Batt File System), has been developed to solve problems specific to embedded systems; BattFS is a file system that can be used on any physical media and it's optimized to reduce RAM and ROM usage to meet the strict design guidelines we have used with all the others BeRTOS components.

The goal is to have a filesystem suitable for little flash and eeprom memories (like dataflash), reliable, robust and capable of wear-levelling the memory pages to increase its life.

The code is in beta stage. Currently you can create files, append data to them but file deletion is still not supported. Wear-levelling is achieved by rotating a page every time it is written. Plans are to add even transactions (a whole write can be performed atomically).

Graphic subsystem

BeRTOS also features a complete graphic subsystem, suitable for generating compact yet powerful GUI. This system is composed of several modules ranging from simple graphic primitives to complex menu management functions.

Module Status
Bitmaps manipulation stable
Lines drawing stable
Rectangles drawing stable
Simple windowing system stable
Proportional and fixed size fonts stable
Text rendering stable
Simple Charts stable
Menus stable

To get up to date informations look at the source code in the directories gfx, gui or fonts.

Algorithms

In embedded programming sometimes you have to cope with protocols, security systems and things like that. BeRTOS comes in help with a set of optimized portable algorithms:

Algorithm Status
CRC16 stable
MD2 beta
Cryptographically secure Random Pool beta
Rotating hash checksum stable
TEA (Tiny Encryption Algorithm) stable
Stepper motor ramp generator stable
PID Controller stable
RLE (Run lenght en/decondig) stable

To get up to date informations look at the algorithms source code.

Network protocols

Since BeRTOS can also be used in very tiny systems, some simple communication protocols has been developed.

This is the current status:

Protocol Status
PocketBus stable
Keytag (for 125KHz transponders) stable
XModem protocol stable
NMEA GPS protocol parser stable
AFSK1200 modem stable
AX25 data link layer protocol beta

For more information take a look at network directory.

Data Structures

BeRTOS supplies common data structures, implemented and optimized for low memory footprint and speed.

Module Status
FIFO stable
Hash table stable
Embedded-optimized dynamic memory allocator stable
Lists stable

Middleware

This section covers all BeRTOS modules that provide general purpose utility functions. Most of them should be moved to Algorithms directory.

In the meanwhile, here is the list:

Module Status
Integers to/from host byte-order conversion stable
Events stable
C++ like exception handling in C stable
Embedded-optimized printf stable
Command shell with history stable
Ini file reader stable

As usual, check source code for detailed reference.