Added README draft.
[bertos.git] / README.bertos
1 BeRTOS                                                          -*- outline -*-
2
3 * Overwiew
4
5 BeRTOS is a real-time operating system designed for building applications
6 for embedded systems, like reference boards, test boards, or custom boards.
7
8 It has a modular structure: its components can be used in very different
9 environments, from 8-bit processor to Linux and Win32 hosted application
10 (for debug purpose), using a wide range of compilers.
11
12 * History and Motivation
13
14 BeRTOS was born as a collection of usefull, highly optimized and fine-tuned
15 libraries for embedded systems.  Each library had its own scope and could be
16 used singularly in a project, though they were also meant to cooperate to
17 build the wole underlying software layer commonly called "operating system".
18
19 We have grown it following our guidelines: simplicity and beauty.
20 These guidelines have make possible its evolution in a full-featured real
21 time operating system, with more modularity than other embedded OS,
22 without givin up reliability and performace.
23
24 To achieve the highest possible reusability, most BeRTOS components are
25 designed for fine-grained modularity and minimal external dependencies.
26 Most non-essential features can be configured out for application with small
27 memory footprint requirements.
28
29 * Features
30
31   - multitasking kernel with IPC, semaphores, priority levels;
32   - a comprehensive set of generic drivers for a wide range of devices, 
33     which can be easily customized to the actual hardware: timer, serial, 
34     adc, ntc, pwm, stepper motors, dc motors, lcd, keyboards, buzzer, eeprom;
35   - full graphic subsystem for simple displays, with font support, bitmaps,
36     clipping, text formatting, interactive menus;
37   - simple console with command parser;
38   - readline-like support for command history;
39   - entropy generator and random numbers generator optimized for embedded
40     systems;
41   - checksumming and hashing functions (CRC, MD2);
42   - full hash-table implementation with double-hashing collisition resolution;
43   - XMODEM protocol implementation;
44   - RLE compression algorithm;
45
46 * Directory Structure
47
48 The modules are sorted in subdirectories by their category:
49
50   - algos/   : algorithms;
51   - app/     : demo application;
52   - cfg/     : configuration stuffs;
53   - cxxutil/ : c++ libraries;
54   - doc/     : documentation;
55   - drv/     : hardware drivers;
56   - dt/      : ?
57   - emul/    : Qt-based emulator framework for embedded applications;
58   - fonts/   : fonts
59   - gfx/     : feneral pourpose graphics routines;
60   - gui/     : widgets for simples displays;
61   - hw/      : hardware-specific decalrations;
62   - icons/   : conversion tool from image TXT format to LCD bitmap;
63   - io/      : infrastructure of I/O-related modules for hosted applications;
64   - kern/    : multitasking kernel;
65   - mware/   : algorithms, containers and other standalone code;
66   - os/      : OS-abstraction layers for hosted environments;
67   - qtext    : ?
68
69 The top-level directory contains a few support headers that are meant to be
70 usable by any C/C++ embedded or hosted application.