diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-11-23 13:26:04 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2007-11-23 13:26:04 +0000 |
commit | f851339621a3179ded94f8a27b30c9345896ccc5 (patch) | |
tree | e4e4cd5205ba965875d3aabe115c0e8d1181fa53 /docs/index.html | |
parent | 97bf45204321755cf2e78a7cc7ff616edaec59c4 (diff) | |
download | ChibiOS-f851339621a3179ded94f8a27b30c9345896ccc5.tar.gz ChibiOS-f851339621a3179ded94f8a27b30c9345896ccc5.tar.bz2 ChibiOS-f851339621a3179ded94f8a27b30c9345896ccc5.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@106 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'docs/index.html')
-rw-r--r-- | docs/index.html | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..83bd285de --- /dev/null +++ b/docs/index.html @@ -0,0 +1,151 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head>
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
+ <title>ChibiOS/RT Homepage</title></head>
+<body>
+<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
+ <tbody>
+ <tr align="center">
+ <td colspan="2" rowspan="1">
+ <h2><small><span class="t_nihongo_kanji" xml:lang="ja" lang="ja">ちび</span></small>OS/RT<sup><font size="-2">TM</font></sup>
+Homepage</h2>
+(ChibiOS/RT)</td>
+ </tr>
+ <tr>
+ <td style="text-align: center; vertical-align: top; width: 150px;">Current
+Version 0.4.2<br>
+-<br>
+ <a href="http://sourceforge.net/projects/chibios/" rel="me" target="_top">Project on SourceForge</a><br>
+ <a href="html/index.html" target="_top" rel="me">Documentation</a><br>
+ <a href="http://sourceforge.net/project/showfiles.php?group_id=205897" rel="me" target="_top">Downloads</a><br><a href="http://wiki.mechlab.net/doku.php?id=chibios:start" rel="me" target="_top">Wiki</a><br><a href="http://sourceforge.net/forum/?group_id=205897" rel="me" target="_top">Forum</a><br>
+ <a href="http://sourceforge.net/users/gdisirio/" rel="me" target="_top">Contact me</a><br>
+-<br>
+ <a href="#History">History</a><br>
+ <a href="#Description">Description</a><br><a href="index.html#Current_ports">Current ports</a><br>
+ <a href="#Design">Design</a><br><a href="#Performance_and_Size">Performance and Size</a><br>
+ <a href="#Future">Future</a><br>
+-<br>
+ <a href="#Credits">Credits</a><br>
+ <br>
+ <a href="http://sourceforge.net"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=205897&type=4" alt="SourceForge.net Logo" border="0" height="37" width="125"></a><br>
+ <br>
+ <a href="http://sourceforge.net/donate/index.php?group_id=205897"><img src="http://images.sourceforge.net/images/project-support.jpg" alt="Support This Project" border="0" height="32" width="88"> </a> </td>
+ <td style="text-align: justify; vertical-align: top;">
+ <h3><a name="History"></a>History</h3>
+This kernel is something I wrote back in 1990 for use on boards
+equipped
+with M68K processors, the development was made on an Atari ST. The OS
+worked well for its intended purpose, Internet was not
+widespread at that time so the system had a limited use.<br>
+Recently I decided to release this system, formerly known as <span style="font-style: italic;">mkRTOS</span>, as Free
+Software. I cleaned up the code, improved the documentation, made a
+port on a more modern architecture (ARM) and it is finally ready.<br>
+While ChibiOS/RT is a new product it is based on a proven system so the
+alpha/beta phases should not last long, the project was started as an
+alpha
+version mainly to be able to incorporate the feedback into the
+product easily.<br>
+ <h3><a name="Description"></a>Description</h3>
+ChibiOS/RT is designed for embedded applications and it is meant to be
+linked with the application code. The design philosophy is to make it
+easy to use so I hope that all the APIs are meaningful, easy to
+understand and with the parameters you would expect from them.<br>The
+system offers threads, semaphores, messages, events, virtual timers,
+queues, I/O channels with timeout capability and much more.<br>
+ <h3><a name="Current_ports"></a>Current
+ports</h3>
+Currently the ChibiOS/RT is ported to the following architectures:<br>
+ <ul>
+ <li>ARM7TDMI-LPC214x, the port to other LPC2000 chips
+should be trivial, port to other ARM families should be easy too. Both
+ARM and THUMB modes are supported.</li><li>Atmel AVR, the port is almost complete but untested because I broke my JTAG probe...</li><li>x86 as a Win32 process, this port allows to write
+your application on the PC without the need of a development
+board/simulator/emulator. Communication ports are simulated over
+sockets, you can telnet on the simulator ports for the debug. I am
+considering to create a similar simulator into a Linux process.</li>
+ <li>M68K, this was the original target but it is
+currently removed from the source tree because currently I have no way
+to test it, my old Atari ST is long dead. It should be very easy to
+revive the port to the M68K or Coldfire CPUs.</li>
+ </ul>
+In general the port is very easy on architectures that can handle well
+linked lists, the kernel is entirely reliant on lists so this
+is a
+very important efficiency factor. 16 and 32 bits architectures are
+always fine, 8 bit architectures should be evaluated case by case but
+are not ruled out, something like an H8 would not have problems. You
+could port it
+to a Z80/Z180 (I considered that too, and made tests using the SDCC
+compiler) but the
+resulting code is not much efficient because the instruction set is
+missing the indirect addressing for 16 bits values that is important
+for efficient linked lists traversal.
+ <h3><a name="Design"></a>Design</h3>
+The system was designed to be stable and avoid trouble as much as
+possible so some rules were set:<br>
+ <ul>
+ <li>No arrays or tables, I don't like to have to
+configure limits
+for data structures, only use lists or other dynamic data structures.
+See
+the <a href="http://chibios.sourceforge.net/doc/index.html" target="_top" rel="me">Documentation</a> and
+the demos.</li>
+ <li>No memory allocation inside the kernel, an allocator
+can be
+troublesome for RT applications. All the data structures are declared
+in the application code and not allocated from a shared system heap.
+This does not prevent the application code to use an allocator if
+needed, it is just the kernel that does not require it.</li>
+ <li>No weird macros in the user code, everything should
+look
+and feel like normal C code with a normal main() function. I don't like
+to bring someone else weird programming habits in my code and I think
+this is true for everybody.</li>
+ <li>Encapsulate all the things that need changes while
+porting
+the OS to new architectures in few template files, fill the code into
+the templates and the port is done.</li></ul><h3><a name="Performance_and_Size"></a>Performance and Size</h3>ChibiOS/RT
+has a wide set of APIs but all the subsystems can be included or
+removed from the memory image by editing the kernel configuration file
+chconf.h. On ARM processors, the kernel size starts at just
+1.5KiB depending on the included subsystems and the choosen
+compiler optimizations.<br>As reference, a kernel configured with...<br><ul><li>System startup code</li><li>Chip initialization code</li><li>Multithreading APIs</li><li>Virtual Timer APIs</li><li>Semaphore APIs</li><li>System time + Sleep API</li><li>Suspend/Resume APIs</li><li>Small main() program with flashing LEDs demo and 3 threads</li></ul>...just takes 2.11KiB of program space when compiled using THUMB code and space optimizations. Note that this is quite a <span style="font-weight: bold;">typical configuration</span>
+not a minimal one. A kernel configured with all the options and
+optimized for speed takes about 8KiB. See the documentation about the
+many available subsystems.<br><br>About performance, on a 48MHz LPC
+ARM7 processor the kernel is capable of context switch time ranging
+from 3 to 6 microseconds depending on the code type (ARM/THUMB) and the
+choosen complier/kernel optimizations. In the distribution is included
+a spreadsheet with the exact values and the various space/time trade
+offs.<br>The context switch time is *measured* using 2 threads
+exchanging messages and doing *real* work, it is not a calculated peak
+value. See the demo code, it includes the benchmark.
+ <h3><a name="Future"></a>Future</h3>
+Expect:<br><ul>
+
+ <li>Documentation improvements.</li>
+
+ <li>Ports to more architectures/boards when I am able to
+put my hands on new hardware/tools.</li>
+ <li>More demos.</li>
+ <li>Creation of new subsystems.</li>
+ <li>Integration with
+existing other free projects like: TCP/IP stacks, File Systems etc.</li>
+ </ul>
+ <h3><a name="Credits"></a>Credits</h3>
+ChibiOS/RT was created using:<br>
+ <ul>
+ <li>7-Zip, <a href="http://7-zip.org" target="_top">http://7-zip.org</a></li>
+ <li>GCC and GNU binutils, <a href="http://gcc.gnu.org" target="_top">http://gcc.gnu.org</a></li>
+ <li>Doxigen, <a href="http://www.doxygen.org" target="_top">http://www.doxygen.org</a></li>
+ <li>Inkscape, <a href="http://www.inkscape.org" target="_top">http://www.inkscape.org</a></li>
+ <li>MinGW, <a href="http://mingw.org" target="_top">http://mingw.org</a></li>
+ <li>NVU, <a href="http://www.nvu.com/" target="_top">http://www.nvu.com</a></li>
+ <li>YAGARTO, <a href="http://www.yagarto.de" target="_top">http://www.yagarto.de</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+</body></html>
\ No newline at end of file |