A list of different known realtime OS is available here:

http://en.wikipedia.org/wiki/List_of_real-time_operating_systems

Notice that it also usually motivated by vendor selling their own hardware.
  And normally it is opensource, as this will allow the user to buy the
hardware, customized it, and modify the opensource realtime software for
it, and deploy it.

A good summary of important RT features is summarized here:

http://en.wikipedia.org/wiki/ChibiOS/RT

Features[edit<http://en.wikipedia.org/w/index.php?title=ChibiOS/RT&action=edit&section=2>
]

The ChibiOS/RT microkernel <http://en.wikipedia.org/wiki/Microkernel>
 supports:[3] <http://en.wikipedia.org/wiki/ChibiOS/RT#cite_note-3>

   - Preemptive
multithreading<http://en.wikipedia.org/wiki/Thread_(computer_science)>
   - 128 priority levels <http://en.wikipedia.org/wiki/Priority_queue>
   - Round-robin
scheduling<http://en.wikipedia.org/wiki/Round-robin_scheduling> for
   threads at the same priority level
   - Software timers<http://en.wikipedia.org/wiki/Programmable_Interval_Timer>
   - Counting semaphores <http://en.wikipedia.org/wiki/Semaphores>
   - Mutexes <http://en.wikipedia.org/wiki/Mutex> with support for the priority
   inheritance <http://en.wikipedia.org/wiki/Priority_inheritance> algorithm
   - Condition variables <http://en.wikipedia.org/wiki/Condition_variables>
   - Synchronous and asynchronous
Messages<http://en.wikipedia.org/wiki/Message_(computer_science)>
   - Event flags <http://en.wikipedia.org/wiki/Event-driven_programming>
    and handlers <http://en.wikipedia.org/wiki/Callback_(computer_science)>
   - Queues <http://en.wikipedia.org/wiki/Queue_(data_structure)>
   - Synchronous and asynchronous I/O with
timeout<http://en.wikipedia.org/wiki/Timeout_(telecommunication)>
    capability
   - Thread-safe memory
heap<http://en.wikipedia.org/wiki/Dynamic_memory_allocation>
    and memory pool <http://en.wikipedia.org/wiki/Memory_pool> allocators.
   - Hardware Abstraction Layer with support for
ADC<http://en.wikipedia.org/wiki/Analog-to-digital_converter>
   , CAN <http://en.wikipedia.org/wiki/Controller_area_network>,
GPT<http://en.wikipedia.org/wiki/Counters>
   , EXT <http://en.wikipedia.org/wiki/Interrupt>,
I2C<http://en.wikipedia.org/wiki/I2C>
   , ICU <http://en.wikipedia.org/wiki/Input_capture>,
MAC<http://en.wikipedia.org/wiki/Ethernet>
   , MMC/SD <http://en.wikipedia.org/wiki/MultiMediaCard>,
PAL<http://en.wikipedia.org/wiki/General_Purpose_Input/Output>
   , PWM <http://en.wikipedia.org/wiki/Pulse-width_modulation>,
RTC<http://en.wikipedia.org/wiki/Real-time_clock>
   , SDC <http://en.wikipedia.org/wiki/Secure_Digital>,
Serial<http://en.wikipedia.org/wiki/Serial_port>
   , SPI <http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus>,
USB<http://en.wikipedia.org/wiki/Universal_Serial_Bus>
    drivers.
   - Support for the LwIP <http://en.wikipedia.org/wiki/LwIP> and
uIP<http://en.wikipedia.org/wiki/UIP_(micro_IP)> TCP/IP
   stacks.
   - Support for the FatFS file system library.

All system objects, such as
threads<http://en.wikipedia.org/wiki/Thread_(computer_science)>
, semaphores <http://en.wikipedia.org/wiki/Semaphores>,
timers<http://en.wikipedia.org/wiki/Programmable_Interval_Timer>,
etc., can be created and deleted at runtime. There is no upper limit except
for the available memory. In order to increase system reliability, the
kernel <http://en.wikipedia.org/wiki/Kernel_(computer_science)> architecture
is entirely static, a memory allocator is not required (but is available as
an option), and there are no data structures with upper size limits like
tables or arrays. The system APIs are designed to not have error conditions
such as error codes or exceptions.


Another good summary is here (cross with the different hardware supported):

http://www.chibios.org/dokuwiki/doku.php?id=chibios:matrix

Yet another feature summary from NuttX:

Key features

   - Standards Compliant.
   - Core Task Management.
   - Modular, micro-kernel.
   - Fully pre-emptible.
   - Naturally scalable.
   - Highly configurable.
   - Easily extensible to new processor architectures, SoC architecture, or
   board architectures. See Porting
Guide<http://nuttx.org/doku.php?id=documentation:portingguide>
   .
   - FIFO and round-robin scheduling.
   - Realtime, deterministic, with support for priority inheritance.
   - POSIX/ANSI-like task controls, named message queues, counting
   semaphores, clocks/timers, signals, pthreads, environment variables,
   filesystem.
   - VxWorks-like task management and watchdog timers.
   - BSD socket interface.
   - Extensions to manage pre-emption.
   - Optional tasks with address environments (*Processes*).
   - Inheritable “controlling terminals” and I/O redirection
   - On-demand paging.
   - System logging
   - May be built either as an open, flat embedded RTOS or as a separtely
   built, secure micro-kernel with a system call interface.
   - Well documented in the NuttX User
Guide<http://nuttx.org/doku.php?id=documentation:userguide>
   .

More on Chibi:

http://www.chibios.org/dokuwiki/doku.php

RTLinux:

http://en.wikipedia.org/wiki/RTLinux
http://www.ee.nmt.edu/~rison/ee352_spr12/Getting_Started_with_RTLinux.pdf
http://users.soe.ucsc.edu/~sbrandt/courses/Winter00/290S/rtlinux.pdf

Taking Linux and modifying it for realtime has been initially done by
Yodaiken:

http://www.yodaiken.com/papers/rtlmanifesto.pdf

Another is Xenomai:

http://en.wikipedia.org/wiki/Xenomai

The list of hardware it supports is significant:

http://www.xenomai.org/index.php/Embedded_Device_Support


and source code download:

http://download.gna.org/xenomai/
http://git.xenomai.org/?p=xenomai-2.6.git;a=shortlog;h=0e2a874068d248ea2f940be945c02d425ba03747

and its realtime latencies statistics:

https://mail.gna.org/public/xenomai-core/2006-01/msg00160.html

Details documentation:

http://www.xenomai.org/index.php/Included_documentation_summary

And you will be amazed at the performance achieved compared with VxWorks
(which cost USD15K to USD19K???):

http://code.ua.pt/attachments/download/1650/Performance_Comparison_of_VxWorks__Linux__RTAI_and_Xenomai_in_a_Hard_Real-Time_Application.pdf

Another alternative:

http://nuttx.org/

(which claimed "VxWorks-like task management and watchdog
timers."....hmm...wonder what are so unique about VxWorks?)

Measurement of timing and its errors:

http://www.fsmlabs.com/images/uploads/White_Paper_TimeKeeper_Performance_v3.pdf

http://low-latency.com/article/qa-victor-yodaiken-fsmlabs-time-synchronisation-made-easy

http://www.drdobbs.com/measuring-periodic-task-scheduling/184401758

http://www.wallstreetandtech.com/data-management/check-the-time-majority-of-firms-have-ti/240162658


In contrast with the above, many other RTOS are also written from BSD:

http://www.embeddedstar.com/weblog/2006/10/19/rtcorebsd/

RTCoreBSD:

http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/d<http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/devkit_manual.pdf>
evkit_manual.pdf<http://vigir.missouri.edu/~gdesouza/Research/RealTime%20Vision%20Sensor%20Network/devkit_manual.pdf>


NetBSD:

http://www.feyrer.de/NetBSD/bx/blosxom.cgi/index.front?-tags=realtime

Audio server:

https://jyx.jyu.fi/dspace/bitstream/handle/123456789/12485/URN_NBN_fi_jyu-2005243.pdf?sequence=1

Realtime testing tools (from Xenomai):


   - 
clocktest<http://www.xenomai.org/documentation/xenomai-2.6/html/clocktest/index.html>
   - 
cyclictest<http://www.xenomai.org/documentation/xenomai-2.6/html/cyclictest/index.html>
   - 
dohell<http://www.xenomai.org/documentation/xenomai-2.6/html/dohell/index.html>
   - 
irqbench<http://www.xenomai.org/documentation/xenomai-2.6/html/irqbench/index.html>
   - 
irqloop<http://www.xenomai.org/documentation/xenomai-2.6/html/irqloop/index.html>
   - 
klatency<http://www.xenomai.org/documentation/xenomai-2.6/html/klatency/index.html>
   - 
latency<http://www.xenomai.org/documentation/xenomai-2.6/html/latency/index.html>
   - 
switchbench<http://www.xenomai.org/documentation/xenomai-2.6/html/switchbench/index.html>
   - 
switchtest<http://www.xenomai.org/documentation/xenomai-2.6/html/switchtest/index.html>
   - 
xeno-test<http://www.xenomai.org/documentation/xenomai-2.6/html/xeno-test/index.html>


Programming APIs for RTOS:

http://francois.touchard.perso.esil.univmed.fr/RTLinuxPro/doc/lnet/pdf/lnet_book.pdf

http://www.ee.nmt.edu/~rison/ee352_fall09/homepage.html



What are the application areas for RTOS?

Telecom:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.2575&rep=rep1&type=pdf

Trading:

http://en.wikipedia.org/wiki/Real-time_database

Medical:

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC79043/

Unmanned operations:

http://www.ee.nmt.edu/~wedeward/papers/2004SPIEDRT.pdf

Many others:


*Embedded Systems*

*General-Purpose Systems*

   - Missile Avionics Controls
   - Inertial Guidance System
   - Telephone Switch
   - Anti-lock Braking System
   - iPod
   - Radiotherapy Machine
   - Engine Controller
   - Microwave Oven
   - Oscilloscope
   - Programmable Logic Controller


   - Home Computer
   - Intrusion Detection System
   - Web Server
   - Firewalls (with very few exceptions)
   - Home DVR
   - Email Server
   - X-Box
   - Virus Scanner Appliance
   - Phones Using Windows Mobile
   - Dedicated Network Appliance



Different implementation of hardware timers (and its implementation in
Linux and FreeBSD):

http://www.python.org/dev/peps/pep-0418/#list-of-hardware-clocks

Timer functions/API in Python meant for scheduling etc:

http://www.python.org/dev/peps/pep-0418/

Bottom line about realtime-ness is about kernel preemption technology:

http://www.freebsd.org/doc/en/books/arch-handbook/smp-design.html

And a proper balance of resources maximum limits.

Development and other work in progress:

https://www.osadl.org/Single-View.111+M5c936e2f973.0.html

https://www.osadl.org/Single-View.111+M52b435d8b90.0.html


http://www.slideshare.net/chappidi_saritha/rt-linux

http://www.drdobbs.com/measuring-periodic-task-scheduling/184401758

http://www.yodaiken.com/papers/sync.pdf

https://rt.wiki.kernel.org/index.php/Main_Page

-- 
You received this message because you are subscribed to the Google Groups 
"linuxkernelnewbies" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linuxkernelnewbies+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to