Cross Compiling xenomai

  • Hallo,


    ich bin neu mit dem thema Xenomai. Ich habe cross compiling mit xenomai package gemacht in Virtuelle Maschine. Ich nehme mal an dass das xenomai modul auch gebilded. Leider kann ich die Xenomai modul nirgendwo finden. Es sieht aus dass es nicht gebildet obwohl ich den xenomai package eingebunden habe. Wie kann ich diese modul hinkriegen? Ich danke euch

  • Xenomai haben wir nie ausprobiert. Wir können also nicht sagen, ob es funktioniert. Da bei Xenomai ein Patch in den Kernel eingebaut werden muss, ist es sogar sehr wahrscheinlich, dass es manuelle Änderungen am Kernel oder dem Patch erfordert, weil er sonst vermutlich nicht sauber auf unsere modifizierten Kernel-Sources anzuwenden geht. Die Konfiguration hierzu passiert in Buildroot unter "Kernel" -> "Linux Kernel Extensions" -> "Adeos/Xenomai Real-time patch". Zudem wird es dann vermutlich eine angepasste Kernel-Konfiguration brauchen, bei der das entsprechende Kernel-Modul aktiviert wird.


    Das alles wird nicht so ganz einfach sein...


    Was wollen Sie denn in Echtzeit erreichen? Normalerweise empfehlen wir unseren Kunden bei Echtzeit-Bedarf die Boards mit asymmetrischem Multiprocessing, wo dann ein Cortex-M4 unter FreeRTOS die Echtzeit-Aufgaben übernimmt, so dass man am Linux gar nichts ändern muss. Zum Beispiel unsere efusA9X.


    Ihr F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Fast alle Real-Time-Lösungen zu Linux sind Add-Ons, wo man den Teil, der für Real-Time gedacht ist, in einer eigenen Real-Time-Sprache schreiben muss. Man kann also nicht einfach nur ein Linux-Programm verwenden und dann hoffen, dass es künftig in Echtzeit abläuft. Sondern man muss wirklich auf deutlich andere Art und Weise den Echtzeitteil implemenieren. Unter Xenomai und RT-Linux heißt der Netzwerkteil dann z.B. RTnet. Insofern ist der Unterschied im Vergleich zu einer Nutzung von FreeRTOS für den Netzwerkteil auch nicht sonderlich groß.


    Die einzige Lösung, die wirklich Linux zu einem Echtzeit-OS macht, ist der Preempt-RT-Patch. Aber die damit erzielbaren Antwortzeiten liegen um Größenordnungen höher als bei den "echten" RT-Betriebssystemen.


    Wir selbst unterstützen nur die Variante mit FreeRTOS auf dem Cortex-M-Core einiger unserer Boards (efusA9X, PicoCOMA9X, PicoCoreM6SX, PicoCoreMX7ULP, künftige i.MX8-Boards).


    Ihr F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo F&S Support,


    wir benutzen efusA9X. Können Sie mir sagen ob RT_Patch will be working on efusA9X? Wenn Ja, wie kann ich das machen? Können Sie mir einweisung schritt für schritt geben? Ich danke Ihnen.


    Mit freundlichen Grüßen


    Erwin

  • Ich denke Sie unterschätzen den Aufwand gehörig.


    Der erste Schritt ist das Suchen eines möglichst ähnlichen Patches. Vielleicht gibt es einen Patch von NXP, der auf den NXP-Kernel 4.1.15 passt. Das wäre schon mal gut, dann haben wir vergleichsweise wenige Stellen, wo der Patch fehlschlägt. Wenn es nur einen Patch für den Mainline-Kernel gibt, sind es sicher deutlich mehr Stellen. Das können hunderte Stellen sein.


    Dann muss man den Patch in Buildroot eintragen und zu Compilieren versuchen. Für jede Stelle, wo der Patch fehlschlägt, muss man nun im Detail schauen, warum. Wenn der Code im Kernel anders aussieht, muss man nachvollziehen, was dort anders abläuft und sich dann überlegen, wie das nun mit der Xenomai-Anpassung aussehen muss. Je nach Anzahl der Fehlschläge, kann das Tage oder gar Wochen dauern.


    Am Ende hat man dann einen abgewandelten Patch, der von Buildroot fehlerfrei auf unseren Kernel angewendet werden kann und sauber compiliert. Dann muss man aber noch viele Tests machen, ob Xenomai nun auch noch fehlerfrei arbeitet, sprich ob Ihre Änderungen keine Fehler erzeugt haben. Eventuell gibt es von Xenomai ein Test-Kit, mit dem man alle relevanten Tests durchführen kann. Falls nun funktionale Fehler auftreten, muss man diese z.B. durch Debuggen lokalisieren (was bei Echtzeit nicht einfach ist) und korrigieren, sprich den Patch nachbessern.


    Erst wenn das alles läuft, hat man ein funktionierendes Xenomai. Für genau diesen Kernel. Wir werden aber demnächst auf Kernel 4.9 hochgehen und danach vermutlich auf Kernel 4.14, da beginnt das ganze Spiel dann wieder von neuem.


    Was ich nicht verstehe, Sie benutzen schon eine efusA9X, da ist der Cortex-M4 doch schon mit drin. Warum nutzen Sie nicht einfach FreeRTOS dort auf dem M4? Das haben wir am Laufen, da können wir helfen, das funktioniert.


    In Zukunft wird das immer mehr so laufen. Fast jeder i.MX7 und jeder i.MX8 hat (mindestens) einen Cortex-M für Real-Time mit eingebaut. Sprich die anderen Real-Time-Lösungen werden auf NXP-Prozessoren zunehmend uninteressant werden und weniger unterstützt werden. Auch andere SoC-Hersteller machen das künftig so, z.B. gerade heute gelesen bringt nun auch STM eine CPU mit 2x Cortex-A7 für Linux und zusätzlichem Cortex-M4 als RT-Kern raus. Das ist also keine Insellösung von NXP mehr, wie man vor vier Jahren vielleicht noch hätte vermuten konnte, als es nur den NXP/Freescale Vybrid mit dieser Architektur gab, nein, das wird künftig immer mehr so aussehen. Man hat gemerkt, dass die ganzen anderen Lösungen nicht sauber funktionieren, z.B. weil keine saubere Daten- und Hardwaretrennung zwischen Linux und dem RT-OS möglich ist. Durch den eigenen Kern und entsprechende Hardware (Resource Domain Controller) kann dies aber in den NXP-Prozessoren garantiert werden.


    Ihr F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo F&S Support


    Auf dem M4 haben wir FreeRTOS benutzt. Da haben Sie recht. Was wir machen wollen ist die Echtzeitanwendung auf A9 (Linux), weil wir auf Ethernet zugreifen will. Da Sie wie beschrieben oben, Xenomai würde nicht funktioniert, wollen wir auf Preempt-RT-Patch umsteigen um die Echtzeitanwendung bzw. Ethernet zugreifen zu realisieren. Die frage ist ob Preempt-RT-Patch auf A9 (Linux) funktionieren? Wenn ja, wie kann ich es machen? Vielen dank für Ihre Unterstützung.

    Erwin

  • Wir unterstützen leider von Haus aus keine Version, wo Linux echtzeitfähig wird. Nur Echtzeit auf dem Cortex-M4.


    Sinngemäß gilt für den Preempt-RT-Patch ähnliches wie für Xenomai. Man muss einen Patch finden, der möglichst nah an unserer Kernel-Version ist und dann schauen, wie er sich dann konkret mit unseren Kernel-Sources verhält. Dabei wird es sicher wieder zu Konflikten kommen, die man dann einzeln auflösen muss. Mit jeder neuen Kernel-Version geht das Spiel dann von Neuem los.


    Ihr F&S Support-Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.