On Thursday 01 November 2012 11:25:45 Michael Haberler did opine:

> I got LinuxCNC 2.5 to run on an x86 with Xenomai kernel threads, by
> replacing RTAI calls by their Xenomai equivalents.
> 
> Initial results look promising. This is still unpolished and not ready
> for a merge yet - I'm publishing this at this stage to enable feedback.
> 
> - Michael
> 
> 
> ---README.Xenomai from
> http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/xenomai-
> integration-mah-kernel --
> 
> 
> LinuxCNC on Xenomai
> -------------------
> 
> This is a development snapshot of LinuxCNC running on Xenomai 3.2.21
> with kernel threads; note that eventually also the Xenomai user thread
> branch will be merged as this is the proposed route by the Xenomai road
> map.
> 
> 
> Status
> ------
> As of now, this has been tried on x86 only. ARM and others might need
> some work on header files (some inline assembly) and the
> rtapi_math_i386.h code needs to be ported to ARM, or replaced by
> library routines from src/rtapi/xeno_math.
> 
> 
> Build requisites:
> -----------------
> 
> You need:
> - a machine running Ubuntu 10.04 lts
> - a 3.2.21 kernel with Xenomai 2.6.1 patches applied (see below for
> packages) - the Xenomai 2.6.1 userland support package configured with
> --enable-dlopen-skins - a grub configuration which grants Xenomai
> permissions to your userid
> 
> It is ok to install on a LinuxCNC CD installed machine; the kernel and
> the Xenomai userland support packages will be 'ships in the night" with
> respect to the RTAI installation.
> 
> You can build under RTAI; to run it, of course you need to boot the
> 3.2.21 xenomai kernel.
> 
> Package download:
> -----------------
> you will need from http://static.mah.priv.at/public/xenomai-debs/:
>       libxenomai-dev_2.6.1_i386.deb
>       libxenomai1_2.6.1_i386.deb
>       linux-headers-3.2.21-xenomai+_0.1_i386.deb
>       linux-image-3.2.21-xenomai+_0.1_i386.deb
>       xenomai-runtime_2.6.1_i386.deb
> 
> Install these packages as root with 'dpkg -i *.deb'.
> 
> if you want to build yourself, eg to explore kernel options, try these
> repos:
> 
> Kernel:
> -------
> http://git.mah.priv.at/gitweb/linuxcnc-kernel.git/shortlog/refs/heads/li
> nuxcnc-3.2.21-xenomai-x86
> 
> see files under linuxcnc:
> http://git.mah.priv.at/gitweb/linuxcnc-kernel.git/tree/93403bfda8fc98061
> f8adceac605203ae4424626:/linuxcnc
> 
> Xenomai userland support:
> -------------------------
> http://git.mah.priv.at/gitweb/xenomai-linuxcnc.git/shortlog/refs/heads/l
> inuxcnc-v2.6.1 again, see files under linuxcnc:
> http://git.mah.priv.at/gitweb/xenomai-linuxcnc.git/tree/79a0c12f7f56b9f7
> 77a56eb40ef09b9a26c2b96b:/linuxcnc
> 
> Grub configuration:
> -------------------
> This branch supports binding the RT thread(s) to an isolated CPU. If you
> have a multi-core CPU, like an Atom DW525, add "isolcpus=1" to the
> GRUB_CMDLINE_LINUX_DEFAULT line in /etc/default/grub, then run
> 'update-grub' as root.
> 
> Building:
> ---------
> Fetch the  xenomai-integration-mah-kernel from git.mah.priv.at like so:
> 
> $ git remote add mah  git://git.mah.priv.at/emc2-dev.git
> $ git fetch mah
> $ git branch --track xenomai-integration-mah-kernel
> mah/xenomai-integration-mah-kernel $ git checkout
> xenomai-integration-mah-kernel
> $ cd emc2-dev/src
> $ sh autogen.sh
> $ ./configure --with-threads=xenomai-kernel
> 
> If you compile under RTAI, you need to point configure to kernel config
> file like so:
> 
> $ ./configure --with-threads=xenomai-kernel
> --with-kernel=/boot/config-3.2.21-xenomai+
> 
> Then make, and sudo make setuid.
> 
> Running:
> --------
> latency-test and various config work as usual.
> I tried a mesa 5i25 config which seems to work fine.
> 
> 
> Observing status:
> -----------------
> Xenomai has some /proc support. To see the shared memory segments:
> 
> mah@atom$ cat /proc/xenomai/heap
>     TOTAL      USED  PAGESZ  NAME
>      8192        80    4096  global sem heap
>    259584        64     512  main heap
>    129536     32768     512  stack pool
>     12288     12288    4096  rt_heap: rtapi_master      <--- rtapi_data
>    262144    262144    4096  rt_heap: shm-1             <--- the HAL
> segment 8192         0    4096  private sem heap [1492]
>      8192         0    4096  private sem heap [1495]
> 
> While running latency-test:
> 
> mah@atom$ cat /proc/xenomai/stat
> CPU  PID    MSW        CSW        PF    STAT       %CPU  NAME
>   0  0      0          0          0     00500080   96.4  ROOT/0
>   1  0      0          39745053   0     00500080   95.6  ROOT/1
>   1  0      0          39042570   0     00100084    4.1  fast      <---
> HAL thread name 1  0      0          976053     0     00100084    0.1 
> slow      <--- HAL thread name 0  0      0          40051620   0    
> 00000000    3.5  IRQ2312: [timer]
> 
> /proc/rtapi/status has three extra counters for realtime delays:
> 
> mah@atom$  cat /proc/rtapi/status
> ******* RTAPI STATUS ********
>    RT Modules = 3
>    UL Modules = 4
>         Tasks = 2/64
> Shared memory = 1/32
>         FIFOs = 0/32
>    Semaphores = 0/64
>    Interrupts = 0
>   RT task CPU = 1                  <---- isolcpus at work: RT thread on
> CPU #1 Timer status = Running
>  Timer period = 25000 nSec
>   Wait errors = 0                  <---- how many times the scheduling
> deadline was missed Last overrun = 0             <---- last # of overruns
> reported
> Total overruns = 0                 <---- total # of overruns reported
> Message level = 1
> 
> 
> Issues
> ------
> 
> - kernel options have not been explored thoroughly, e.g more specific
> CPU support.
> 
> - latency: on my Atom board I get very good figures EXCEPT a random
> overrun,esp when networking is involved On RTAI, the latency-test
> figures are roughly 11/17 usec
>   with Xenomai, I have around 9/12usec except for an occasional spike at
> ca 50usec in the RT thread
> 
> - Precise: this builds in principle; the kernel math module
> (src/rtap/xeno_math) needs work to export the math symbols properly
> under precise
> 
> - 2.6.38.8 xenomai kernel: build + run is ok, but modules are marked as
> '[permanent]' and cannot be unloaded; this needs tracking down. This
> does not happen on the 3.2.21 kernel.

And this looks extremely promising Micheal.  Those figures look as if it 
could run a parport driven stepper system like mine are. Particularly for 
the newer kernel since for GP office/home use, the 2.6.32 seems to have a 
huge scheduler problem.  I've not trashed anything that I'm aware of, but 
the desktop 'feel' is nowhere near as snappy as the BFS kernels I was using 
under PCLos.  I don't want to wait for the next cd release, but probably 
will.  I need to replace the caps on an older board so I can have a 
sacrificial goat machine again. 

Cheers, Gene
-- 
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
My web page: <http://coyoteden.dyndns-free.com:85/gene> is up!
I love dogs, but I hate Chihuahuas.  A Chihuahua isn't a dog.  It's a rat
with a thyroid problem.

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to