Embedded Systems

telos® Embedded Systems Programmierung

Informatikunternehmen wie telos, die seit Jahrzehnten aktiv sind, verfügen über ein umfangreiches Portfolio an Erfahrungen. Im Bereich Embedded Systems begannen wir mit PIC-Controllern von Microchip, X86-Derivaten von Intel und Controllern auf Basis des 8051.
Erstaunlicherweise sind all diese Controllerfamilien auch nach einem Vierteljahrhundert noch im Einsatz. Natürlich handelt es sich dabei nicht um die ursprünglichen Implementationen oder Bauformen wie DIL oder PLCC. Die dahinterstehende Technologie ist jedoch weiterhin aktuell und findet ihren Niederschlag in modernen Komponenten und Projekten.

Fortschritt

Im Bereich der Embedded Systeme geht der Trend heute zu immer leistungsfähigeren CPUs, mit denen neue Einsatzfelder für eingebettete Systeme erschlossen werden können. Längst haben sich Hochsprachen wie C und C++ auch in der hardwarenahen Programmierung etabliert.

Einchiplösungen mit integriertem USB, Ethernet, SPI, UART, CAN und vielen weiteren Standardschnittstellen sind weit verbreitet, und die Grenzen zwischen klassischen Computern und eingebetteten Systemen verschwimmen zunehmend. Hersteller wie ST und Freescale bieten ein umfassendes Portfolio von Prozessoren an, die auf der gleichen Architektur basieren, sich aber deutlich in Ausstattung und Bauteilgröße unterscheiden.

telos setzt neben klassischen Mikrocontrollern und CPUs auch Digitale Signalprozessoren für Mess- und Steueraufgaben ein.

Energie

Moderne und leistungsfähigere Plattformen schaffen nicht nur neue Möglichkeiten, sondern auch neue Herausforderungen. Mobile Geräte sind ein ungebrochener Trend der letzten Jahre, was die Notwendigkeit mit sich bringt, den Energieverbrauch solcher Systeme aktiv zu minimieren. Dies umfasst alle Bereiche, vom Hardwaredesign mit restriktiven Abschaltfunktionen für stromhungrige Peripherie bis hin zu Software, die gezielt Rechenleistung nur bei Bedarf anfordert.

In solchen Fällen steht nicht die absolute Rechenleistung eines Mikroprozessors im Vordergrund, sondern seine Fähigkeit, nicht benötigte Funktionen möglichst granular abzuschalten.

Betriebssysteme

Werden Anwendungen komplexer, ist ein Betriebssystem meist unverzichtbar.

Es gibt eine Reihe von klassischen Echtzeitbetriebssystemen wie CMX, FreeRTOS oder MQX. Unsere Erfahrung bei telos zeigt, dass viele Projekte durch den Einsatz von Linux erheblich leichter realisiert werden können. Dies ermöglicht eine einfache Migration von und hin zu Desktopsystemen und reduziert die Portierungskosten von Anwendungen.

Vorteile von Linux

  • Linux ist kostenlos und steht unter der GNU GPL.
  • Es existieren robuste und erprobte Entwicklungswerkzeuge für alle denkbaren Plattformen und Programmiersprachen.
  • Alle Quelltexte von Linux sind frei verfügbar.
  • Linux ist ein vollwertiges Serverbetriebssystem inklusive Multitasking, Speicherschutz und Rechteverwaltung.
  • Linux verfügt von Haus aus über einen robusten und gut getesteten Netzwerkstack sowie diverse unterstützende Werkzeuge und Protokolle, die in anderen Systemen nicht, nur in Ansätzen oder nur kostenpflichtig vorhanden sind.

Echtzeit Linux

Linux ist, wie die meisten anderen Multitasking-Betriebssysteme, standardmäßig nicht echtzeitfähig. Das bedeutet, dass das Betriebssystem keine maximale Zeit garantiert, nach der ein Prozess spätestens Rechenzeit erhält. Dies ist in vielen Bereichen nicht wichtig, kann aber bei Embedded Systemen, die eine Anlage steuern, problematisch sein.

Stellen Sie sich eine Anlage vor, die ein Fass befüllen soll. Das Embedded System öffnet das Ventil, und die Flüssigkeit fließt in das Fass. Nach einiger Zeit meldet ein Füllstandssensor, dass das Fass voll ist. Wenn der Steuerprozess erst nach 10 Sekunden wieder Rechenzeit erhält, ist es zu spät: das Fass läuft über.

Um Linux für solche Steuerungsaufgaben einsetzen zu können, gibt es diverse Echtzeiterweiterungen wie Xenomai.

telos blickt auf mehr als 20 Jahre Erfahrung in der Portierung und Nutzung von Linux in eingebetteten Systemen zurück. Dies umfasst sowohl die Entwicklung von Treibern und Plattformanpassungen als auch die Entwicklung komplexer und datenintensiver Anwendungen mit Echtzeitanforderungen.