I continue writing this article from the last article.You can scroll down this page to see the article about RTOS for AVR part one.
It is the real RTOS for AVR.It had been ported to many series of AVR microcontroller
(44 AVR devices).The task can be specified to be preemptive or cooperative task.It has
lots of example code and its documents is very good (The document is integrated into the
source code as comment).
It is the RTOS that support large set of features and can be ported to various type
of microcontroller other than AVR.Currently it only support MegaAVR 32 (8 bit
microcontroller) but may be can config to support other AVR devices too.The source code
for AVR can use with WinAVR or AvrStudio 4.
Contiki is one of widely used RTOS.It is multi-tasking operating system that designed
for microcontroller with small memory.
It is suitable for implement wireless sensor networks because it provide IP
communication.Its processes use protothreads to provide threadlike programming style.
It is RTOS designed for wireless sensor network.This RTOS was written in the nesC
programming language.The task is non-preemptive and task is run depend upon FIFO order.
It support Atmel AVR 8 bit (also support Atmega128).It has preemptive and cooperative
scheduling mechanism.The disadvantage of this RTOS is that it is not well tested (may be
there are some bugs).The website said that this RTOS can be installed in 16 bit and 32
bit microcontroller too.
This is well-known RTOS used widely in the world, so I don’t talk about it.
You can find the information relate to µC/OS-II at its website by yourself.
small memory area.This RTOS was written using WinAVR C compiler.4AvrOS is the new version
of csRTOS (Most features are remain the same).
9.XMK (eXtreme Minimal Kernel)
It is a preemptive and multithread kernal suitable for small microcontrollers (8 bit).However it can run on 16 or 32 bit microcontroller.This RTOS implemented the features such as mailboxes, memory pools, file descriptors, hardware device drivers, and TCP/IP networking.
And this is the end of the two series “RTOS for AVR” microcontroller.
Thank you so much,
Reference site : Electoday
This article is concern with the rtos that can port to AVR microcontroller.I list only rtos that is open source
and free for donwload.You can look for them as below…
1.AvrX Real Time Kernel
It is lightweight and support important features of RTOs such as Message Queues, Semaphores , fully
preemption etc.It is cooperative kernel too.You can download the document of AvrX here or here.
CocoOS is also lightweight and it is cooperative kernel.It can use with ATmega8/16/32.It is a cooperative task scheduler and its structure is small and easy.You can download the documents of this RTOS here
This is a popular RTOS is this world.It can port to various kinds of microcontroller , so I don’t talk about
it.You can find the information at its website yourself.
4.YAVRTOS (Yet Another Atmel® AVR® Real-Time Operating System)
This RTOS is only suitable with ATmega32 (It was tested only with ATmega32).It implemented mailboxes,
semaphores and mutexes.The disadvantage of YAVRTOS is that it’s not support defining task prioriy and the mutex mechanism of this RTOS is weak.I think disabling interrupt every time when want to access a shared resource is not a good way to do and you should avoid doing that.
pC/OS is RTOS that was developed base on uC/OS 1.00 (Its kernal based on uC/OS 1.00).It can port to ATMega32, AVR32 and ATMega128.Its document is easy to read.
It is non-preemptive kernel.It has memory management function together with task and time control functions.uSmartX is very old (it exist since 2006).This RTOS is suitable for small-footprint embedded system because of it consume little memory of the system.
COMATOS is the RTOS for ATMEL microcontroller (COMATOS is abbreviated from “COrnell Miniature ATmel Operating System “).It is simple,lightweight (Use memory not exceed 2K of program memory) and also non-preemptive RTOS.The source code has boht Assembly version and C version (THE C version is written for AT90S8515 ).Its website has a tutorial for using this RTOS but in Assembly language.
It is the project of Task Dispatcher.It contain C source code for implement this project and it also have
a PDF document to describe the souce code too.
It is the unique operating system for AVR.It was written in C for WinAVR (GCC) that can use optinally with Atman IDE.It contain the Scheduler for control each process (Cause process to run when desired) and inter-process communication like Semaphore.
The article “RTOS of AVR” is not end by this post.In the next post I will write about RTOS for AVR again as the episode two.
Want to know more about IPC (Inter-Process Communication , please visit wikipedia)
Reference site : http://www.electoday.com/bbs/viewthread.php?tid=1451&extra=&highlight=avr&page=1 (This topic started by wlasoi)
Thank you very much,
RTOS is part of program (Or source code) that was written for manage the CPU
usability of microcontroller and it help to improve the efficiency of CPU in
managing the tasks or process.RTOS is somehow make the coding more complex ,hard to read
and hard to understand, so some people don’t like to use RTOS on their embedded
project but it has some advantages too.The general RTOS features are as
1.RTOS is a normal program so it must use RAM and program memory of your
2.RTOS has an important role in time management of embedded system because
our simple program run sequentially command by command from the top to
bottom and then cyclic to the top again (it usually operate like this all the
time you run the program) but if I assume there are some tasks that aren’t
necessay to run often as the main loop run or there are some tasks that require
the certain period of time to run, so if these two conditions correspond to your
program requirement I suggest to use RTOS , it will help you so much (at
least it better than you write the code to handle these situation yourself).
RTOS is not so hard.If you understand its mechanism then it is a fun thing. I
think RTOS is not more difficult than we can learn.
3.The importance of RTOS is depend on the number of features your application
have to do.I will show you an example of temperature data logger that have
features like this…
- Need to store the measurement data into SD-Card.
- Show the measurement data on the color lcd screen.
- Can communicate with PC via USB while datalogger is working to send data to
the program that running on PC and plot the graph.
- It can specify the alarm temperature in real-time by using the touch screen
as the input device to input the temperature.
If you design above datalogger by using only general ISR (Interrupt
Service Routine), maybe you will got stuck and your code will look
cumbersome.The using of RTOS is suitable for handle this kind of datalogger
because RTOS can apply the feature of multitasking for separate the code into
3-4 task such as DAQ_task , UI_task , USB_task etc.Each task has a specific
responsibility and run asynchronously with other tasks.Every task communicate
with each other by using the message such as mailbox , message queue (They
are data structure normally declared as global variable and used for store an
information that each module in the system can obtain and use together).
The name below is open source and non-commercial RTOS that you can use and
modify them to make your embedded project more reliable and powerful.
2.µC/OS-II Kernel from Micrium
List above is only some examples of popular RTOS but there are hundred or
thousand RTOSes exist in the world.
For more information about RTOS please visit
Reference site : http://www.electoday.com/bbs/archiver/?tid-1644.html
TNKernal is the RTOS (real time operating system)
that was developed by Yuri Tiomkin (Russian).
The distinctive point of this RTOS is its APIs
that similar to µITRON 4.0 (Japanese RTOS developed
by Prof.Ken Sagamura).TNKernal can be ported to various
kind of micro controller such as Microchip PIC24/dsPIC,
ARM Cortex-M3,ARM LPC21xx/22xx,Freescale Coldfire,etc.
It also compatible with many Toolchanins from the free one
(Such as GNU Toolchanins) unto the expensive commercial
Toolchains.The current version of TNKernal is 2.5 and you
can download it at here or visit its website here.
TNKernal is open source and it is FREE!!!.
I think this RTOS was suitable for the small series
micro controller especially ARM and PIC.So if you’re looking
for the small RTOS that flexible for every small embedded
task and has complete basis mechanism of ordinarily RTOS,
TNKernal is your choice.
Salvo RTOS is RTOS suitable for low performance and low cost
embedded system because it requires little
program and data memory, without task stacks.
It was written in C.It support various kind of micro controller
(look for the supported micro controller here).Salvo is not
free but it has a demo version to download.It supported
many kinds of compilers (depend on the platform).It’s
not only can use on embedded platform but also x86 platform
(Using MS Visual C++ as compiler).In my opinion I think
Salvo is easy to use.It hide the complicate structure of
RTOS mechanism and provide you the easy to understand interface
that you can use for build your project (So you can emphasis on
your project without worry about the RTOS structure).
The current version of Salvo RTOS is 4 and you can find more information about it here.