[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] multi-tasking source for education?

From: Graham Davies
Subject: Re: [avr-gcc-list] multi-tasking source for education?
Date: Thu, 29 Apr 2004 08:00:12 -0400

----- Original Message ----- 
From: "Jacob Verschoor" <address@hidden>
To: <address@hidden>
Sent: Wednesday, April 28, 2004 9:52 AM
Subject: [avr-gcc-list] multi-tasking source for education?

I develop a education program based on a ATmega8.
I'am looking for a (free) multi-tasking program.
This software must have a user friendly interface,
the peouple are 17/18 years old.(or young :-)

(New post begins)

Well, my first post here received the response "all that is known", so it is
with a little trepidation that I make my second.

Jacob, it has been suggested that you should use a system with a
collaborative scheduler, as opposed to preemptive.  I agree with this.
17/18 year olds are going to find it frustrating to constantly have to worry
about other tasks messing up shared resources, priority inversion, etc.
Unless, of course, this is precisely what you want to teach them.

I have devised an operating system I call ECROS, for Embedded Collaborative
Real-time Operating System.  It is fairly well documented at
http://ecros.ecrostech.com (or www.ecrostech.com and navigate from there).
Currently, I have it running only on the ZiLOG Z8 Encore! but I have joined
the AVR community with the plan of porting it to an AVR processor.  I wasn't
planning on the ATmega8, however, as 8 kbytes of program memory and 512 of
RAM doesn't seem much for a system complex enough to warrant an OS.  It is
written almost entirely in C, which is how I can contemplate a port.  I
wasn't planning on giving it away, just making it very cheap as an object
library.  This is because I don't have a "real" job right now.  I am looking
for consulting work and trying to sell a few products in the interim.

ECROS supports priority-based multi-tasking with multiple tasks at the same
priority run in a first-come-first-served manner (not round-robin).
Communication between tasks and from interrupts to tasks is via events and
(soon) messages.  There is a timer system which sends events to tasks from
one-shot and repeating timers.  Functions can be dynamically bound to tasks,
which leads to some very elegant state-machine implementations.  As well as
these kernel services, ECROS includes a stream-based input/output system
with support currently for UARTs and LCDs.  Streams are fully buffered, so
calls to stream output routines are not delayed by the response time of the
hardware.  UART stream input can be configured to send events to a task when
anything arrives or the buffer reaches some specified fullness or a certain
character arrives or something has arrived followed by a dead period (for
keyed or bursty input).  ECROS has been in the field for about a year in the
ECROS Technology Prius Mini-Scanner (http://miniscanner.ecrostech.com).

If anyone wants to take a look at this or even just comment based on what
I've presented here I would appreciate it.  A response of "this has already
been done" would be especially useful and save me a lot of wasted effort.  I
realize I could be posting to the wrong list, in which case I am prepared to
be ignored, but I am at least in part responding to an existing thread.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]