Ada Multitasking RTOS unterstützt mit Open Source Cross-Compilern

8

Für welche RTOS gibt es in Ada Open Source / Free-Cross-Compiler mit Unterstützung für Multitasking / Multithreading?

Ich habe einen Atmel AT90USB162 Chip, den ich mit Ada programmieren möchte. Meine erste Option war, AVR-Ada für die Programmierung zu verwenden, aber da es keine Unterstützung für die Aufgabenstellung hat, liegt es an der Auswahl (und ich habe jetzt keine Ahnung, wie es das Ausführen der Aufgaben unterstützt). Also brauche ich einen stärkeren Ansatz. Ich habe über QNX nachgedacht, aber es ist viel komplexer als mein Chip.

Ich habe die Information, dass der AVR-Chip uC / OS-II und FreeRTOS unterstützt. Gibt es kostenlose Ada Cross-Compiler für FreeRTOS oder uC / OS-II?

Danke.

    
Rego 25.10.2011, 11:55
quelle

4 Antworten

6

RTEMS unterstützt GNAT zumindest für einige Architekturen. Da Sie jedoch die Atmel AVR-Architektur erwähnt haben, wird dies wahrscheinlich aufgrund von Architekturbeschränkungen (hauptsächlich verfügbarer Speicher) nicht unterstützt. RTEMS ist sehr ausgereift (es war Open Source, bevor Linux erfunden wurde) und hat sich in vielen Projekten als äußerst nützlich erwiesen.

Eine andere Option ist MarteOS , die bei Ada unterstützt. Die Unterstützung von Architekturen war jedoch sehr begrenzt (zunächst nur x86).

Abhängig von den Einschränkungen Ihres Projekts haben Sie wahrscheinlich drei Optionen:

  1. Bleiben Sie bei AVR und schreiben Sie Ihre eigene Laufzeitunterstützung für Ada;
  2. Überdenken Sie, ob Sie die Laufzeitunterstützung für das Tasking wirklich benötigen; oder
  3. Aktualisieren Sie Ihre Architektur auf eine Architektur, die von einem RTOS unterstützt wird, das Ada unterstützt.

(Ich habe RTEMS mit GNAT Ada zum ersten Mal für ein proprietäres Projekt verwendet, das auf dem ARM9TDMI-Kern zwischen 2004 und 2005 basiert.)

    
Schedler 25.10.2011, 13:29
quelle
6

Nun, der einzige Ada-Compiler, den ich kenne, ist Freie Software, Gnat. Das reduziert Ihre Frage auf "Welche RTOS unterstützt Gnat bei der Aufgabenverwaltung?"

ACT führt hier eine Liste unterstützter Plattformen . Die rechte Spalte sieht hauptsächlich wie RTOS oder Pseudo-RTOS aus. FreeRTOS und uC / OS-II scheinen nicht auf der Liste zu stehen.

Ich bemerke ganz unten auf der Liste unter "bare boards" einen Eintrag mit der Aufschrift "AVR Microcontroller ELF Format (gehostet unter Windows)". Das ist vielleicht das, wonach Sie suchen. Allerdings würde ich sagen, dass es gute Chancen gibt, dass ihre blanken Board-Ports auch kein Tasking unterstützen. Wenn man darüber nachdenkt, könnte das ACTs Name für AVR-Ada sein. Du müsstest mit ACT nachsehen.

Es sollte auch angemerkt werden, dass es sehr schwer ist, "gratis" Binärdateien für viele der esoterischeren gcc Ziele zu finden. Das bedeutet, dass Sie entweder gezwungen sind, den Compiler selbst aus Quellen zu erstellen (nicht einmal für schwache Nerven) oder tatsächlich ein Support-Paket von ACT kaufen, um es zu bekommen.

    
T.E.D. 25.10.2011 13:04
quelle
5

Ich bin einer der ursprünglichen RTEMS-Entwickler und war die RTEM-Projektleiterin seit dem Übergang von einem Army-Forschungsprogramm zu einem traditionellen freien Software-Projekt. Wir bemühen uns sehr, RTEMS als qualitativ hochwertiges Produkt mit einer großartigen Community zu erhalten.

Der AVR ist ein ziemlich kleines Ziel und der RTEMS-Port ist unvollständig. Selbst wenn der RTEMS-Port abgeschlossen wäre, glaube ich nicht, dass es einen AVR mit genügend Adressraum gibt, um GNAT / RTEMS zu unterstützen. GNAT ordnet jede Ada-Aufgabe genau wie GNU / Linux einem POSIX-Thread zu und der Laufzeit-Footprint für eine "echte Ada" -Umgebung ist groß. Ich erinnere mich an die minimalen ausführbaren Dateien im 400K Codebereich auf einem PowerPC. Im Vergleich dazu liegt die ausführbare Datei RTEMS Minimum C wahrscheinlich im Bereich von 32-40k auf demselben Ziel.

Ich bin mit AVR-Ada nicht so vertraut, aber ich stimme Ihnen zu, dass es höchst unwahrscheinlich ist, Ihnen eine vollständige Ada-Umgebung zu bieten.

Das RTEMS-Projekt enthält Skripte, mit denen wir die GNU-Tools erstellen und testen. Wenn Sie daran interessiert sind, Werkzeuge für Ihr eigenes seltsames Ziel zu bauen, können sie eine gute Anleitung sein. Die Prozedur unterscheidet sich für eingebettete Ziele nicht sehr.

Marc C .. da Sie in Huntsville sind, werden wir manchmal zum Mittagessen zusammenkommen müssen. Unser Büro liegt ungefähr gegenüber der Bridge Street. Ich treffe wirklich nicht viele RTEMS-Nutzer. : (

    
Joel Sherrill 09.02.2012 21:21
quelle
3

Wir würden uns freuen, wenn der AVR-Port vollständiger wird! Ermutigen Sie Ihre Schüler, sich unserer Entwicklungs-Mailingliste anzuschließen und Fragen zu stellen.

RTEMS ist in der gleichen Klasse von RTOS wie VxWorks. Das gibt ihm ein reichhaltiges Feature-Set, das getrimmt werden muss, um auf kleinere 8 und (einige) 16-Bit-CPUs zu passen. Unsere Herausforderung bestand darin, ein "Tiny / RTEMS" -Feature-Profil zu identifizieren, auf das wir zielen sollten. RTEMS ist wirklich sehr skalierbar, aber wenn Sie nicht wissen, welches Feature-Set auf dieser CPU der Klasse sinnvoll ist, haben wir kein konkretes Ziel. Bitte helfen Sie, die Benutzeranforderungen und ein Ziel zu definieren.

Wir haben auch gerne ein BSP, das auf einem freien Simulator für jede Zielarchitektur läuft. SimulAVR war, was ich benutzte, als ich aktiv am Hafen arbeitete. AdaCore verwendete etwas namens avrtest, aber es war begrenzter - nützlich, aber begrenzt.

    
Joel Sherrill 13.02.2012 22:28
quelle

Tags und Links