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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/beagleboard/5DA5E576.8090602%40bfs.de.