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
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:
-- raspberry_pi_gpio.ads package Raspberry_Pi_GPIO is INPUT: constant Integer := 0; OUTPUT: constant Integer := 1; LOW: constant Integer := 0; HIGH: constant Integer := 1; function Initialize return Integer; pragma Import (C, Initialize, "gpioInitialise"); procedure Set_Mode(pin: Integer; mode: Integer); pragma Import (C, Set_Mode, "gpioSetMode"); procedure Write(pin: Integer; value: Integer); pragma Import (C, Write, "gpioWrite"); function Read(pin: Integer) return Integer; pragma Import (C, Read, "gpioRead"); end Raspberry_Pi_GPIO
Man kann jetzt die eingebundenen Funktionen im Hauptprogramm nutzen:
-- hello.adb with Raspberry_Pi_GPIO; use Raspberry_Pi_GPIO; procedure Hello is LED_PIN: constant Integer := 12; begin if Initialize >= 0 then Set_Mode(LED_PIN, OUTPUT); loop Write(LED_PIN, HIGH); delay 10.0; Write(LED_PIN, LOW); delay 10.0; end loop; end if; 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.
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.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Rust hat das einzigartige Feature des Ownership-Modells | Mit Rust eingebettete Systeme entwickeln |
es ist LLVM. Für GCC gibt es nur etwas in der frühen Entwicklung.
Kommentieren