doc: Add menu, gfx and text documentation into global index.
[bertos.git] / doc / README.bertos
1 /**
2 \page short_introduction A 5 minute introduction to BeRTOS
3
4 \section installation Installing BeRTOS on your system
5
6 What do you need when developing an embedded project with BeRTOS?
7 \li a toolchain for your CPU
8 \li BeRTOS source code :)
9 \li supporting binaries for BeRTOS build system
10 \li supporting tools for BeRTOS Wizard
11
12 See the <a href="">installation instructions page</a> online for help
13 on installing BeRTOS on your system.
14
15 Strictly speaking, BeRTOS doesn't need to be 'installed', you can just
16 take .c files and compile them in your project.
17
18 However, BeRTOS is a complex system with many dependencies between modules.
19 It's not easy to track the dependencies for each module, so we have developed
20 a set of tools to make dependency tracking automatic.
21
22 Contact the <a href="http://forum.bertos.org">support forum</a> if you want
23 help on using BeRTOS without the supporting tools. Be warned, though, that
24 this method is not supported and we can only point you in the right direction.
25
26 \section organization Project's organization
27
28 Each project has its own full BeRTOS sources, configuration and HAL files.
29 Why? Because we think that each project has its own life and it must not
30 interfere with any other project.
31 Let's say you use a shared BeRTOS version for all of your projects. Each
32 time you update, you need to check that each and every project still works
33 correctly. We don't want to do this (and I bet you don't want either).
34 However, it's still easy to update a single project if you want to.
35
36 A project named Foo is organized as follows:
37 \li bertos/ - BeRTOS source directory
38 \li Makefile - BeRTOS build system Makefile
39 \li project.bertos - Wizard's configuration file
40 \li foo/ - your project's main directory
41 \li foo/hw/ - low level HAL files
42 \li foo/cfg/ - configuration directory
43 \li foo/foo_user.mk - makefile fragment that you can edit
44 \li foo/foo.mk - makefile fragment changed by the Wizard, don't edit
45
46 See <a href="">BeRTOS HAL system</a> for more information on HAL files.
47
48 \section coding Coding guidelines
49
50 Don't change configuration settings by hand, use the Wizard. This is because
51 sometimes there are more actions to be done than simply changing a value.
52
53 Include configuration files using "..." rather than <...> style, otherwise you
54 will use default configuration values instead of your project's values.
55
56 */
57
58 /*!
59 <!--
60 This document is automatically processed by Doxygen (http://www.doxygen.org/).
61 Don't remove special formatting tags.
62 This section won't be processed unless enabled.
63
64 See STATUS for further information and tips about Doxygen tags.
65 -->
66
67
68 \mainpage
69
70 \section overview Overview
71
72 BeRTOS is a real-time operating system designed for building applications
73 for embedded systems, like reference boards, test boards, or custom boards.
74
75 It has a modular structure: its components can be used in very different
76 environments, from 8-bit processor to Linux and Win32 hosted application
77 (for debug purpose), using a wide range of compilers.
78
79 \section history History and Motivation
80
81 BeRTOS was born as a extremely modular, highly optimized and fine-tuned
82 operating system for embedded programming.
83 As a result, each module has its own scope and can be used alone or in
84 cooperation with other modules.
85 It's even possible to use most of the drivers without activating the kernel module.
86
87 We have grown it following our guidelines: simplicity and beauty.
88 These guidelines made it possible to evolve it in a full-featured real
89 time operating system, with more modularity than many other embedded OSes,
90 without giving up reliability and performace.
91
92 To achieve the highest possible reusability, most BeRTOS components are
93 designed for fine-grained modularity and minimal external dependencies.
94 Most non-essential features can be configured out for applications with small
95 memory footprint requirements.
96
97 \section features Features
98
99   - multitasking kernel with IPC, semaphores, priority levels;
100   - a comprehensive set of generic drivers for a wide range of devices,
101     which can be easily customized to the actual hardware: timer, serial,
102     adc, ntc, pwm, stepper motors, dc motors, lcd, keyboards, buzzer, eeprom;
103   - full graphic subsystem for simple displays, with font support, bitmaps,
104     clipping, text formatting, interactive menus;
105   - simple console with command parser;
106   - readline-like support for command history;
107   - entropy generator and random numbers generator optimized for embedded
108     systems;
109   - checksumming and hashing functions (CRC, MD2);
110   - full hash-table implementation with double-hashing collision resolution;
111   - XMODEM protocol implementation;
112   - RLE compression algorithm;
113
114 \section structure Directory Structure
115
116 The modules are sorted in subdirectories by their category:
117
118   - app/            : demo applications;
119   - bertos/algo/    : algorithms;
120   - bertos/cfg/     : configuration stuff;
121   - bertos/drv/     : hardware drivers;
122   - bertos/dt/      : experimental object oriented gui toolkit;
123   - bertos/emul/    : Qt-based emulator framework for embedded applications;
124   - bertos/fonts/   : fonts;
125   - bertos/fs/      : file system related stuff;
126   - bertos/gfx/     : general purpose graphics routines;
127   - bertos/gui/     : widgets for simple displays;
128   - bertos/hw/      : hardware-specific declarations;
129   - bertos/icons/   : conversion tool from image TXT format to LCD bitmap;
130   - bertos/kern/    : multitasking kernel;
131   - bertos/mware/   : algorithms, other standalone code;
132   - bertos/struct/  : containers and other data structures;
133   - bertos/os/      : OS-abstraction layers for hosted environments;
134   - doc/            : documentation;
135
136 The top-level directory contains a few support headers that are meant to be
137 usable by any C/C++ embedded or hosted application.
138
139 See the \ref dev_status page for information about the various drivers.
140
141 \section license License
142
143 BeRTOS is provided under the term of the GNU General Public License
144 (see LICENSE.GPL) with following exception:
145
146 \verbatim
147
148 As a special exception, you may use this file as part of a free software
149 library without restriction.  Specifically, if other files instantiate
150 templates or use macros or inline functions from this file, or you compile
151 this file and link it with other files to produce an executable, this
152 file does not by itself cause the resulting executable to be covered by
153 the GNU General Public License.  This exception does not however
154 invalidate any other reasons why the executable file might be covered by
155 the GNU General Public License.
156
157 \endverbatim
158
159 */