7cd5c553c7eed0e29607480c5a4d8bb079761ee9
[bertos.git] / README.bertos
1 /*
2  * This document is automatically processed by Doxygen (http://www.doxygen.org/).
3  * Don't remove special formatting tags.
4  */
5 /*!
6
7 \mainpage
8
9 \section overview Overview
10
11 BeRTOS is a real-time operating system designed for building applications
12 for embedded systems, like reference boards, test boards, or custom boards.
13
14 It has a modular structure: its components can be used in very different
15 environments, from 8-bit processor to Linux and Win32 hosted application
16 (for debug purpose), using a wide range of compilers.
17
18 \section history History and Motivation
19
20 BeRTOS was born as a collection of useful, highly optimized and fine-tuned
21 libraries for embedded systems.  Each library had its own scope and could be
22 used singularly in a project, though they were also meant to cooperate to
23 build the whole underlying software layer commonly called "operating system".
24
25 We have grown it following our guidelines: simplicity and beauty.
26 These guidelines made it possible to evolve it in a full-featured real
27 time operating system, with more modularity than many other embedded OSes,
28 without giving up reliability and performace.
29
30 To achieve the highest possible reusability, most BeRTOS components are
31 designed for fine-grained modularity and minimal external dependencies.
32 Most non-essential features can be configured out for application with small
33 memory footprint requirements.
34
35 \section features Features
36
37   - multitasking kernel with IPC, semaphores, priority levels;
38   - a comprehensive set of generic drivers for a wide range of devices, 
39     which can be easily customized to the actual hardware: timer, serial, 
40     adc, ntc, pwm, stepper motors, dc motors, lcd, keyboards, buzzer, eeprom;
41   - full graphic subsystem for simple displays, with font support, bitmaps,
42     clipping, text formatting, interactive menus;
43   - simple console with command parser;
44   - readline-like support for command history;
45   - entropy generator and random numbers generator optimized for embedded
46     systems;
47   - checksumming and hashing functions (CRC, MD2);
48   - full hash-table implementation with double-hashing collision resolution;
49   - XMODEM protocol implementation;
50   - RLE compression algorithm;
51
52 \section structure Directory Structure
53
54 The modules are sorted in subdirectories by their category:
55
56   - algo/    : algorithms;
57   - app/     : demo application;
58   - cfg/     : configuration stuff;
59   - doc/     : documentation;
60   - drv/     : hardware drivers;
61   - dt/      : experimental object oriented gui toolkit;
62   - emul/    : Qt-based emulator framework for embedded applications;
63   - fonts/   : fonts;
64   - fs/      : file system related stuff;
65   - gfx/     : general purpose graphics routines;
66   - gui/     : widgets for simple displays;
67   - hw/      : hardware-specific declarations;
68   - icons/   : conversion tool from image TXT format to LCD bitmap;
69   - kern/    : multitasking kernel;
70   - mware/   : algorithms, containers and other standalone code;
71   - os/      : OS-abstraction layers for hosted environments;
72
73 The top-level directory contains a few support headers that are meant to be
74 usable by any C/C++ embedded or hosted application.
75
76 \section license License
77
78 BeRTOS is provided under the term of the GNU General Public License
79 (see LICENSE.GPL) with following exception:
80
81 \verbatim
82
83 As a special exception, you may use this file as part of a free software
84 library without restriction.  Specifically, if other files instantiate
85 templates or use macros or inline functions from this file, or you compile
86 this file and link it with other files to produce an executable, this
87 file does not by itself cause the resulting executable to be covered by
88 the GNU General Public License.  This exception does not however
89 invalidate any other reasons why the executable file might be covered by
90 the GNU General Public License.
91
92 \endverbatim
93
94 */