[rtai] RTEMS RTAI module

Erwin Rol erwin at muffin.org
Mon Sep 3 06:08:42 UTC 2001


On 02 Sep 2001 19:35:58 -0500, Joel Sherrill wrote:
> OK.  I am investigating this further.  I think that RTEMS can
> be "ported" to RTAI using option 1 described below.   This would
> be really cool since you would get RTEMS RTEID/pSOS+, ITRON, and
> pthreads interface in this environment.
> 
> To get a feel for how to approach the port technically, I am trying 
> to get things setup to test.  Here is where I would like to 
> go as a test environment and what I have done so far.
> 
> Want: 
> 
>   + simple RTAI environment under VMware, plex86, etc. for
>     testing and not crashing entire machine.

Hmmm never tried that, would be interesting to here if that works.


> 
> What I have tried;
> 
>   + Atomic RTAI floppy image fails to boot under plex86
>   + Atomic RTAI floppy image seems ok under vmware.
>   + Linux 2.4.9 kernel and rtai-24.1.6  on a Redhat 7.1 box.
>     This seemed to be working out OK  as I managed to reboot
>     the new kernel with RTAI patches but can't compile completely.
>     I get these warnings (they start at #1) .. 
> 
> arch/i386/rtai.c:298:45: warning: pasting "(" and "29" does not give a
> valid preprocessing token
> arch/i386/rtai.c:299:1: warning: pasting "(" and "30" does not give a
> valid preprocessing token
> arch/i386/rtai.c:299:23: warning: pasting "(" and "31" does not give a
> valid preprocessing token
> 
>   and the build fails later with this:
> 
> ../../include/rtai_lxrt.h:325: impossible register constraint in `asm'
> ../../include/rtai_lxrt.h:325: impossible register constraint in `asm'
> ../tasklets.h:190: confused by earlier errors, bailing out
> 
> This has to be a common problem.  DO I have a bad compiler version
> with Redhat 7.1 for using RTAI?
> 

yep gcc 2.96 or gcc 3.x give this error. use kgcc on RH 7.x or just
compile yer own gcc (which i am sure you can :-)


> Questions:
> 
>   + Recommendations on setting up a virtual test environment
>     using VMWare or plex86 as the target would be appreciated.
>   + Where are mailing list archives?  I know I have tripped a 
>     FAQ with this problem?

http://realtimelinux.org/archives/rtai/

CVS web in case you want to look at the CVS sources.
http://cvs.rtai.org/

>   + how do you debug the modules?
>   
> Thanks.
> 
> --joel

- Erwin

> 
> 
> Bernhard Kuhn wrote:
> > 
> > Erwin Rol schrieb:
> > >
> > > using RTEMS on Posix on RTAI on the RTHAL was not realy what i meant
> > 
> > Ah, you mean using RTEMS on LXRT on RTAI on the RTHAL? ... Just kidding
> > :-)
> > 
> > > What i meant was creating a BSP that reserves a block of memory and uses
> > > the RT-HAL so it thinks it is running on a real PC. The argument of not
> > > having a variable timer and just the periodic scheduler is kind of
> > > strange, i mean lots of ppl use RTEMS and seem to be happy with it.
> > 
> > Agreed: many people are quite satisfied with a periodic mode
> > scheduler (which resides in the cyclic nature of control loop
> > and data aquisition systems). But several "exotic" things
> > like the RC-Servo demo doesn't work if you can't do something
> > like a wait_ns() within few microseconds accuracy ...
> > 
> > > I most certainly didn't mean to replace RTAI with
> > > RTEMS, because it could just be a module like the
> > > different RTAI schedulers are modules.
> > 
> > When i was talking about "replacing" RTAI by RTEMS in
> > one of my former mails, then i was exactly thinking
> > about providing it as an alternative kernel module
> > to rtai_sched.c. To sum up all available options
> > recently discussed:
> > 
> > Option 0: RTEMS BSP for RTHAL
> > -----------------------------
> > 
> > I wouldn't recomend doing an RTEMS BSP for the RTHAL directly,
> > since rtai.c already provides a timer and interrupt
> > handling layer. Trying to put RTEMS directly on top
> > of the RTHAL would mean to re-implement most of the
> > stuff that was already done in rtai.c. If necessary at all,
> > rtai.c could be extended conditionaly (i.e. #ifdef RTEMS_BSP)
> > 
> > Option 1: RTEMS for rtai.c
> > --------------------------
> > 
> > As already mentioned, rtai.c provides a lot if things
> > you would have to re-implement in the BSP seperatly.
> > 
> > Option 2: RTEMS BSP partly integrated in rtai.c
> > -----------------------------------------------
> > 
> > You could enhance rtai.c so that it supports
> > two schedulers at the same time, allowing
> > the RTAI scheduler and the RTEMS scheduler
> > running at the same time.
> > 
> > Option 3: RTEMS BSP for rtai_sched.c
> > ------------------------------------
> > 
> > Would operate just like the POSIX scheduler on top
> > of the RTAI scheduler.
> > 
> > Option 4: RTEMS BSP for POSIX on top of rtai_sched
> > --------------------------------------------------
> > 
> > Adapting the existing Native Linux RTEMS BSP to
> > the posix module of the rtai distribution.
> > 
> > My personal favorite is Option 3, because this
> > architecture would easyly allow mixing code
> > of different worlds, using it at the same time.
> > The existing POSIX overlay module has proved
> > that the overhead is acceptable.
> > 
> > Option 4 is probably the most simple one to
> > implement, but has twice as much overhead
> > as Option 3.
> > 
> > As far as i got it, you are talking about the options 0
> > or 1: zero overhead, but an RTEMS API only solution.
> > 
> > Please forget about Option 2: it is
> > IMHO only of academical interest :-)
> > 
> > Comments?
> > 
> > Bernhard
> > 
> > --
> > Bernhard Kuhn, Software Engineer, Lineo Inc. (Where Open Meets Smart)




More information about the users mailing list