Andrew E. Kalman wrote:
Re:
There are a number of little embedded OS's, like uC/OS-II. Has anyone
here used them enough to form an opinion about which are good, and
what are their good and bad qualities
Disclaimer: I am the author of the Salvo RTOS that is available for
the MSP430 (but has not yet been certified for / ported to mspgcc).
This is not meant as a uC/OS-II "bashing", rather simply to illustrate
some issues when applying uC/OS-II to single-chip micros like the MSP430.
One problem with conventional, preemptive RTOSes like uC/OS-II when
applied to single-chip micros with limited (in my parlance, that means
<= 4K RAM) is that for applications where an RTOS is desireable, you
can rapidly run out of RAM due to the RTOS's need to preserve
registers and task stacks, leaving you with little RAM for the rest of
your application. There's often little point in doing a multitasking
application with 15-20 tasks on a MSP430 when the RTOS eats up more
than 50% of the available RAM.
Additionally, the issues you mentioned earlier (i.e. the RTOS's
"intrusiveness"), esp. w/regard to ISRs can detrimentally affect your
application's performance.
I think that uC/OS-II is better suited to processors with external
memory (and higher clock speeds), where more RAM is available and
interrupt latency & response issues are less of an issue due to
increased processor speeds.
The Salvo RTOS is quite different from uC/OS-II in its memory
requirements. It's an event-driven, priority-based cooperative RTOS,
with minimal RAM requirements and a very small ROM footprint. In many
areas its internals are faster than uC/OS-II, primarily because of the
lack of a need to preserve context in the conventional sense, but also
due to coding and algorithms used. There are other issues, too, why
Salvo is an excellent match for the MSP430, but that's beyond the
scope of this posting.
We recently did a third-party presentation at TI's MSP430 ATC 2003 in
Ft. Worth -- it's MSP430-centric, and has real-world numbers for a
'149-based application:
http://www.pumpkininc.com/content/doc/press/pumpkin_3p_salvo_ti_msp430atc2003.pdf
As for supporting mspgcc, it's still not clear where Salvo (a
non-free, but still royalty-free RTOS) and mspgcc fit together from a
business perspective. We did recently do an avr-gcc port, which was
done by a third party (Colin O'Flynn, who is very active in the AVR
community). It's a very nice Salvo port. If the right person(s) in the
mspgcc community are interested in doing the port (we have plenty of
documentation to help with porting), please contact me directly.
Regards,
Since Salvo already works with tools like AQ430, it should be very
little work to make it work with mspgcc. It would be more of a tweak,
than a port.
Regards,
Steve