From f851339621a3179ded94f8a27b30c9345896ccc5 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 23 Nov 2007 13:26:04 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@106 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- docs/index.html | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 docs/index.html (limited to 'docs/index.html') 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 @@ + + + + ChibiOS/RT Homepage + + + + + + + + + + + +
+

ちびOS/RTTM +Homepage

+(ChibiOS/RT)
Current +Version 0.4.2
+-
+ Project on SourceForge
+ Documentation
+ Downloads
Wiki
Forum
+ Contact me
+-
+ History
+ Description
Current ports
+ Design
Performance and Size
+ Future
+-
+ Credits
+
+ SourceForge.net Logo
+
+ Support This Project
+

History

+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.
+Recently I decided to release this system, formerly known as mkRTOS, 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.
+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.
+

Description

+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.
The +system offers threads, semaphores, messages, events, virtual timers, +queues, I/O channels with timeout capability and much more.
+

Current +ports

+Currently the ChibiOS/RT is ported to the following architectures:
+
    +
  • 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.
  • Atmel AVR, the port is almost complete but untested because I broke my JTAG probe...
  • 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.
  • +
  • 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.
  • +
+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. +

Design

+The system was designed to be stable and avoid trouble as much as +possible so some rules were set:
+
    +
  • 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 Documentation and +the demos.
  • +
  • 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.
  • +
  • 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.
  • +
  • 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.

Performance and Size

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.
As reference, a kernel configured with...
  • System startup code
  • Chip initialization code
  • Multithreading APIs
  • Virtual Timer APIs
  • Semaphore APIs
  • System time + Sleep API
  • Suspend/Resume APIs
  • Small main() program with flashing LEDs demo and 3 threads
...just takes 2.11KiB of program space when compiled using THUMB code and space optimizations. Note that this is quite a typical configuration +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.

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.
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. +

Future

+Expect:
    + +
  • Documentation improvements.
  • + +
  • Ports to more architectures/boards when I am able to +put my hands on new hardware/tools.
  • +
  • More demos.
  • +
  • Creation of new subsystems.
  • +
  • Integration with +existing other free projects like: TCP/IP stacks, File Systems etc.
  • +
+

Credits

+ChibiOS/RT was created using:
+ +
+ + \ No newline at end of file -- cgit v1.2.3