• IT-Karriere:
  • Services:

Mit Ada eingebettete Systeme entwickeln

Eingebettete Systeme können in den verschiedensten Varianten auftreten: komplett ohne Betriebssystem, mit einem Echtzeitbetriebssystem wie FreeRTOS oder mit einem umfangreichen Linux-Betriebssystem. Für die ersten Experimente eignen sich Einplatinen-Computer wie der Raspberry Pi, die STM Discovery Boards oder der BBC micro:bit Computer.

Ada auf dem Raspberry Pi

Stellenmarkt
  1. Mugler AG, Oberlungwitz
  2. über duerenhoff GmbH, Frankfurt am Main

Der einfachste Einstieg in die Welt der eingebetteten Systeme stellt der Raspberry Pi dar. Man kann die Ada Compiler entweder über apt-get installieren und die Programme lokal auf dem Raspberry Pi entwickeln oder sich die Entwicklungsumgebung für den Raspberry Pi von Adacore herunterladen und die Programme auf einem Host Computer entwickeln (zum Zeitpunkt des Schreibens dieses Artikels funktionierte der Download bei Adacore allerdings nicht).

Die Entwicklung von Anwendungen für solche Plattformen ist natürlich relativ einfach, weil alle Standardfunktionen vorhanden sind. Es müssen nur Bibliotheken für die hardwarenahen Komponenten hinzugefügt werden. Das lässt sich schnell realisieren, indem man eine C-Bibliothek wie pigpio benutzt und in Ada eine Brücke zu den C-Funktionen implementiert. Hier als Beispiel eine einfache Schnittstelle zu den wichtigsten GPIO-Funktionen von pigpio:

  1. -- raspberry_pi_gpio.ads
  2.  
  3. package Raspberry_Pi_GPIO is
  4. INPUT: constant Integer := 0;
  5. OUTPUT: constant Integer := 1;
  6. LOW: constant Integer := 0;
  7. HIGH: constant Integer := 1;
  8. function Initialize return Integer;
  9. pragma Import (C, Initialize, "gpioInitialise");
  10. procedure Set_Mode(pin: Integer; mode: Integer);
  11. pragma Import (C, Set_Mode, "gpioSetMode");
  12. procedure Write(pin: Integer; value: Integer);
  13. pragma Import (C, Write, "gpioWrite");
  14. function Read(pin: Integer) return Integer;
  15. pragma Import (C, Read, "gpioRead");
  16. end Raspberry_Pi_GPIO

Man kann jetzt die eingebundenen Funktionen im Hauptprogramm nutzen:

  1. -- hello.adb
  2. with Raspberry_Pi_GPIO; use Raspberry_Pi_GPIO;
  3. procedure Hello is
  4. LED_PIN: constant Integer := 12;
  5. begin
  6. if Initialize >= 0 then
  7. Set_Mode(LED_PIN, OUTPUT);
  8. loop
  9. Write(LED_PIN, HIGH);
  10. delay 10.0;
  11. Write(LED_PIN, LOW);
  12. delay 10.0;
  13. end loop;
  14. end if;
  15. end Hello

Der GNAT User's Guide beschreibt, wie die Programme übersetzt werden.

Bare Metal Ada

Für die Entwicklung von Ada-Anwendungen auf Zielarchitekturen ohne Betriebssystem (Bare Metal) kann man von der Adacore-Webseite für zahlreiche Plattformen die benötigten Tools und Libraries herunterladen.

Das sind zum einen die Entwicklungsumgebung GNAT Studio und die Ada-Cross-Compiler für ARM oder RISC-V Prozessoren. Die Ada Drivers Library enthält die Low-Level-Bibliotheken für die unterstützten Prozessoren sowie Ada-Laufzeitumgebungen für diverse Entwicklungsplattformen wie die STM32F4 Discovery Boards, BBC Micro:bit oder HiFive1. Außerdem sind hier zahlreiche Beispiele für den Einstieg zu finden.

Programmierung sicherer Systeme mit Rust: Eine Einführung

Braucht man eine angepasste Laufzeitumgebung oder will für eine nicht unterstützte Plattform entwickeln, kann man den Sourcecode aus der Bibliothek bb-runtimes herunterladen. Eine Liste von weiteren frei verfügbaren Tools und Libraries enthält die Ada-Information-Clearinghouse-Webseite. Wer noch einen Schritt weiter gehen möchte und Ada für die Betriebssystem-Entwicklung nutzen möchte, der sollte die Webseite wiki.osdev.org/Ada_Bare_bones besuchen. Sie enthält ein komplettes Beispiel für den Einstieg.

Wer einfach nur Spaß haben möchte, sollte sich den BBC micro:bit Mikrocontroller ansehen. Adacore hat ein mehrteiliges Tutorial für die vielen Funktionen des sympathischen Lerncomputers geschrieben. Die Entwicklungsumgebung zu installieren dauert etwa 15 Minuten und die Programme können direkt von der IDE auf dem micro:bit geflasht werden.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
  • C, Ada und Rust im Vergleich (Tabelle: Karsten Lüth)
  • Die Ada-Entwicklungsumgebung GNAT Studio (Screenshot: Karsten Lüth)
Die Ada-Entwicklungsumgebung GNAT Studio (Screenshot: Karsten Lüth)
 Rust hat das einzigartige Feature des Ownership-ModellsMit Rust eingebettete Systeme entwickeln 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


Anzeige
Hardware-Angebote
  1. 499,99€
  2. (reduzierte Überstände, Restposten & Co.)

TomZ 27. Jan 2021 / Themenstart

es ist LLVM. Für GCC gibt es nur etwas in der frühen Entwicklung.

Kommentieren


Folgen Sie uns
       


Samsung Galaxy S21 Ultra vorgestellt

Das Galaxy S21 Ultra ist das Topmodell von Samsungs neuer S21-Reihe und unterscheidet sich deutlich von den beiden anderen Modellen.

Samsung Galaxy S21 Ultra vorgestellt Video aufrufen
    •  /