Can you use bela (https://bela.io/about) ?

On Tue, Oct 15, 2019 at 4:28 PM walter harms <wha...@bfs.de> wrote:

>
>
> Am 15.10.2019 16:06, schrieb shabaz:
> > Hi Drew,
> >
> > I hope you're well!
> >
> > I recently experimented briefly with both, here' s the steps I used to
> > install Xenomai (Rob Nelson helped me find the pre-built kernel, the
> link
> > to them is below).
> > Not all Xenomai APIs are enabled in the kernel. Anyway, I did get
> reduced
> > jitter when using one of the API sets called Alchemy, which I guess is
> > probably the easiest to code with. In a nutshell you can use the API to
> > create a task thread, and do your low-latency stuff there.
> >
> > For my experiment, I used this content in my makefile:
> >
> > XENO_CONFIG := /usr/xenomai/bin/xeno-config
> >
> > CFLAGS := $(shell $(XENO_CONFIG)   --posix --alchemy --cflags)
> > LDFLAGS := $(shell $(XENO_CONFIG)  --posix --alchemy --ldflags)
> >
>
> You can simplify your life just use:
>
> atest:
>
> clean:
>          rm -f atest
>
>
> the %: %.c stuff is a build in rule CC should be a default
> to you local compiler.
>
> jm2c,
>
> re,
>  wh
>
> > CC := gcc
> > EXECUTABLE := atest
> >
> > all: $(EXECUTABLE)
> >
> > %: %.c
> >         $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
> >
> > clean:
> >         rm -f $(EXECUTABLE)
> >
>
>
> > and, code needs to look like this:
> >
> > #include <stdio.h>
> > #include <signal.h>
> > #include <unistd.h>
> > #include <stdlib.h>
> > #include <alchemy/task.h>
> >
> > RT_TASK hello_task;
> >
> > // function to be executed by task
> > // this is your stuff for which you want low jitter
> > void helloWorld(void *arg)
> > {
> >   RT_TASK_INFO curtaskinfo;
> >   printf("Hello World!\n");
> >
> >   // inquire current task
> >   rt_task_inquire(NULL,&curtaskinfo);
> >
> >   // print task name
> >   printf("Task name : %s \n", curtaskinfo.name);
> >
> >   while(1)
> >   {
> >     // do your stuff here in a forever loop if you like
> >
> >     // use this sleep command if you need to use any sleep. This sleep
> has
> > low jitter:
> >     rt_task_sleep(50000);
> >   }
> >
> > }
> >
> > int main(int argc, char* argv[])
> > {
> >   char  str[10];
> >
> >   printf("start task\n");
> >   sprintf(str,"hello");
> >
> >   /* Create task
> >    * Arguments: &task,
> >    *            name,
> >    *            stack size (0=default),
> >    *            priority,
> >    *            mode (FPU, start suspended, ...)
> >    */
> >   rt_task_create(&hello_task, str, 0, 99, 0);
> >
> >   /*  Start task
> >    * Arguments: &task,
> >    *            task function,
> >    *            function argument
> >    */
> >   rt_task_start(&hello_task, &helloWorld, 0);
> >   while(1)
> >   {
> >         sleep(10);
> >   }
> > }
> >
> > To test latency I ran this:
> > cyclictest -n -p 90 -i 1000
> > and the result was:
> > T: 0 ( 2914) P:90 I:1000 C:  31719 Min:      6 Act:   19 Avg:   18 Max:
>
> >  51
> > which was about ten times lower for the Max value, compared to PREEMPT
> RT.
> > And it was far lower than x86 Linux running a standard kernel with
> Ubuntu.
> > The x86 Linux was a virtual machine on ESXi on an Intel NUC.
> > It was all over the place with that - especially if I tried opening
> another
> > terminal to do something. With Xenomai, it was stable.
> > In summary, provided one is willing to code for Xenomai, then the jitter
> > difference is large - still no-where as good as PRU or a microcontroller
> of
> > course, but fantastic for Linux.
> > Also, it seems that the pre-built Machinekit images use PREMPT RT, not
> > Xenomai : ( I've no idea if Machinekit is coded to support Xenomai, I've
> > not really investigated too far currently.
> >
> > Installing pre-built Xenomi kernel:
> >
> >
> > https://github.com/beagleboard/linux/releases
> >
> >
> >
> > cd /opt/scripts/tools/
> >
> > git pull
> >
> > As root user:
> >
> > ./update_kernel.sh --ti-xenomai-channel --lts-4_14
> >
> >
> >
> > as non-root user:
> >
> > cd development
> >
> > mkdir xenomi
> >
> > cd xenomi
> >
> > wget
> >
> https://xenomai.org/downloads/xenomai/stable/latest/xenomai-3.0.9.tar.bz2
> >
> > bunzip2 xenomai-3.0.9.tar.bz2
> >
> > tar xvf xenomai-3.0.9.tar
> >
> > cd xenomai-3.0.9
> >
> > ./configure --enable-smp CFLAGS="-march=armv7-a -mfpu=vfp3"
> > LDFLAGS="-march=armv7-a -mfpu=vfp3"
> >
> > make
> >
> > As root user:
> >
> > make install
> >
> >
> >
> > Testing it:
> >
> > /usr/xenomai/bin/xeno-test
> >
> >
> >
> >
> >
> >
> > Development/xtest
> >
> > make -f Mafefile-a
> >
> > as root user:
> >
> > export LD_LIBRARY_PATH=/usr/lib:/usr/xenomai/lib
> >
> > ./atest
> >
>
> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to beagleboard+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/beagleboard/5DA5E576.8090602%40bfs.de.
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/CALiMYrv%2BCBQzw0AFF3LTAU-XsSeBihoYRTXOgwMqzwedWPJTtg%40mail.gmail.com.

Reply via email to