User Tools

Site Tools


rtbsd

HomeRealtimeBSD for micro-controller

Project Status

This project has been working though an instance of a clock/timer for aircraft and flight sim, it is a dev platform for projects, although it needs more work and goes back into Work in progress for a few reasons:

  • API and documentation need more work to make it easy to use
  • I found out PIC micros stack depth being only 8, the present implementation requires too much stack levels to just do the job and needs a new shape to it
  • This project requires a code overhall to be as efficient as possible and integrate well ie
    • Use none if possible additional stack level at all, ie no function call
    • keep a modular design
    • easy to understand and work with sources

For those few reasons, and while this project continues to mature, this page remains available and will reflect project works as it goes on to V1.0 rel.

RtBSD

Real-time mini operating system for Microcontrollers.

RtBSD is an open source real time mini operating system for microcontrollers. It currently runs on PIC 16F886. It is portable to most 8/16 bits other microctrollers such as Atmel, Microchip, ESP, STM, NXP, …

The source code is placed under BSD-3 license.

Supporting the project can be done financially or through purchases at our embedded Electronic store at lecomptoirelectronique.fr. MCU/CPUs support and are delivered programmed with RtBSD.

Sources

Supported hardware

  • Microchip mid-range
    • PIC 16f886

Documentation

  • “Real time” functions must not overflow, they are executed in interrupt context.
  • User code can be implemented in INTR context.
  • “Scheduled” functions are stacked. They can be interrupted and executed in successive batches.
  • Main user function is executed in a scheduled 100ms context
  • Task stack overflow is monitored
void function_4ms_realtime(void);  // Real time 4 ms period function - Interrupt context
void function_20ms_realtime(void);  // Real time 20 ms period function - Interrupt context
void function_20ms_scheduler(void);  // Scheduled 20 ms period function - Via scheduler
void function_100ms_realtime(void); // Real time 100 ms period function - Interrupt context
void function_100ms_scheduler(void); // Scheduled 100 ms period function - Via scheduler
void function_100ms_user(void); // Scheduled les 100 ms period function - Via scheduler
void function_1s_realtime(void); // Real time 1s - Interrupt context
void function_1s_scheduler(void); // Scheduled 1 s - Via scheduler

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki