On Thu, Jan 14, 1999 at 11:26:37AM -0800, Marko Rauhamaa wrote:
> > i'm trying to decide between VxWorks and rtlinux for an RTOS project.  i'd
> > like hear your comments concerning vxworks if you have experience with it
> > and why you're considering rtlinux.
> 
> We are trying to decide between those two, too. We haven't used either
> in our products yet, but here are some of the points we have been
> considering:

    We also are looking at OS choices, but are also looking at others (Lynx,
    Chorus, any other suggestions?)

>  - We may decide to use a MIPS clone for hardware reasons. VxWorks runs
>    on MIPS. Linux does support MIPS, but MIPS is probably the least used
>    Linux platform. Moreover, RT Linux would have to be ported to MIPS
>    and I have no idea yet how big a task that would be (we might be
>    willing to pay a fee if somebody did it, though).
> 
>  - AFAIK, VxWorks source code is not for sale. RTOS debugging is hard
>    enough with source code, so not having it may make debugging much
>    slower even if the bug is in our code. In addition, we may need some
>    special tweaks of our own that may not be possible without the source
>    code. The source code risk is increased by the fact that VxWorks is a
>    single-source product.

    We purchased VxWorks source for that reason.  Single source is not really
    a big issue once you have the source.  VxWorks' code is remarkably
    organized given the long time it's been in the market.  Typically there's
    a lot of cruft and fossilized code in this type stuff, but the
    coding-standards that WRS has provided helped out a lot.  Note that I
    would _not_ _ever_ get VxWorks without source code; their support leaves
    much to be desired.  I've fixed a few bugs in the OS (none considered
    'critical') with nary a thank-you from WRS.  Needless to say, I don't send
    them my bugfixes any more...

>  - With RT Linux we can place soft-RT modules in the Linux sandbox. That
>    means that we can add unexpected new features later without risking
>    the functionality of the hard-real-time core. With VxWorks, as with
>    most other RTOSes, new features may affect the whole system (although
>    I hear VxWorks offers per-task memory management as an option).

    For a small to medium sized system, I'd recommend VxWorks (but not
    necessarily as an alternative to others, just a general recommendation
    based on it's stability, and the development environment.)  VxWorks,
    however, is not reasonable for larger systems (> ~40 tasks).  
    
    At this level of complexity, there are too many tasks all sharing the
    single address space, and per-task protection is almost a requirement.
    (And contrary to Marko's statement above, though VxWorks _does_ have an
    MMU option, they currently have no per-task protection, which is why we're
    in the market for an OS...)

>  - The function and feature list of VxWorks is impressive. Personally I
>    find a bit risky, though, to have a single company develop and
>    maintain such an amount of code. Most of those functions are used by
>    hundred of thousands of people on the Linux side, so I tend to rely
>    more on the quality of Linux. For example, we may even want to run an
>    HTTP server on the processor -- VxWorks has it, but I'd rather run
>    Apache under Linux.

    Many of the features pulled into VxWorks came from 'freeware' type places,
    or companies that had already have a VxWorks port of their feature. For
    example, the IP stack came from the BSD code.   Most of the stuff is
    rather 'partitioned', so seems pretty stable.  I still believe that once
    VxWorks (or any OS, for that matter) gets beyond a certain number of tasks
    sharing the same memory, problems ensue (one stray pointer causes the
    whole system to fail.)  It just doesn't scale well past medium sized
    systems.

>  - RT Linux allows soft-RT-interrupts (eg, communication with the host)
>    to have a lower priority than critical RT tasks. I don't know if
>    VxWorks allows this. I'm afraid it may be difficult to estimate the
>    worst-case timing of VxWorks built-in device drivers.

    Any tasks in VxWorks are prioritizable, so if there are lower-priority
    jobs, just change their priority.  You can either have run-to-completion
    tasks, or round-robin.

    Typically (communications-style) device drivers will have an interrupt
    portion that drops work on the queue of a task. It's up the task to wake
    up and handle the data at the appropriate rate.  Another method we've used
    is to just drop the data into memory, then kick a semaphore on a task to
    pick up the data.

    Not being up-to-date on Linux (and assuming traditional Unix), I don't
    know how to get fine-grained control over process priorities in the
    'linux' part of RT-Linux.  Typically, 'nice' is all that there is, and
    it's not good enough.  Often one wants the 'functionality' available in
    the Linux OS, but at a bit higher priority than, say, sendmail :-)

>  - VxWorks is expensive.

    Yep.


Regards,
Eric

-- 
Eric Peterson WB6PYK  (818)878-4537 WORK: [EMAIL PROTECTED] HOME: [EMAIL PROTECTED]
    PGP: http://pgp5.ai.mit.edu:11371/pks/lookup?op=get&search=0x4DA8EEF1
--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to