B.lu BOS Operating System |
Home | News | Introduction | Documentation | Versions History | Movies | BOS board | Preview |
This project is discontinued
BOS is a multitasking modular operating system realized for small microcontrollers without memory management. BOS is always compiled from sources and only really necessary functions are inserted into the executable created file; this way generated files are always optimized and small. Minimum system size with Task manager and one task created and running task is 1792 bytes. Some examples are provided to show BOS working with tasks, a matrix keyboard, a dot matrix display, an external I2C temperature sensor, 16 leds attached to SIPO pin extension and a buffered serial port. Actually BOS is realized for MSP430 microcontrollers but it can be ported to other platforms; hardware requirement to be BOS capable is just a timer to implement task preemption.
Here is presented the BOS structure :
HAL:
Watchdog | Watchdog management is fully automatic if task manager is enabled, otherwise standard functions are provided to reset watchdog |
Timers | All system timers are accessed through HAL timer component |
Clock | System clock source can be configured in this component to provide correct clock to CPU core and peripherals |
Interrupts | Basic interrupt management is implemented in HAL, more advanced functions are in kernel layer |
Kernel:
Task Manager | Preemptive task manager creates different CPU threads that virtually run simultaneously |
Critical Sections | Special code that cannot be interrupted by task preemption can be inserted in critical sections |
Events | Threads synchronization object and interrupts tasks wakeup |
Semaphores | A way to synchronize tasks data access. This component locks access to tasks shared resources |
Interrupts | Full interrupt management is provided to cause interrupts to call a user defined callback and/or signal an event to wake up a waiting task |
Internal peripherals drivers
Debug Driver | This driver informs about system state and resources usage through a serial port |
Flash Driver | Internal CPU user flash memory manager |
GPIO Driver | General purpose input output microcontroller pins management |
Serial Ports | Microcontroller integrated serial ports (UARTS) advanced buffered driver |
External peripherals drivers
Keyboard | Matrix keyboard attached to GPIO pins driver |
Display | Dot matrix LCD display (Hitachi HD44780 compatible models) of user defined size manager |
GPIO I2C | Full software I2C master driver that can manage a user defined number of I2C buses attached to microcontrollers GPIO pins |
I2C Temp | An example how to use GPIO I2C driver to read temperature from external attached component (Texas Instuments TMP175) |
SIPO | An example how to extend number of available GPIO pins with a Serial In Parallel Output (SIPO) chip using only three microcontroller GPIOs |
hosts B.lu BOS operating system |