Open-Source-Softwareressourcen für eingebettete Systeme
2026-02-21 10:58:11··#1
Lange Zeit hat der Preis die Verbreitung und den Einsatz von Echtzeitbetriebssystemen (RTOS) in der Entwicklung eingebetteter Anwendungen in meinem Land eingeschränkt. Mit der zunehmenden Offenheit von Betriebssystemen haben jedoch immer mehr freie Softwarelösungen mit Quellcode breite Anerkennung und Anwendung gefunden, allen voran Linux. Da Linux nicht echtzeitfähig ist, entstand RTLinux (siehe www.fsmlabs.com). RTLinux ist zwar echtzeitfähig, aber nicht für eingebettete Anwendungen konzipiert. Da auch Linux nicht für eingebettete Anwendungen ausgelegt ist, entstanden spezielle Linux-Distributionen für eingebettete Systeme wie uCLinux (siehe www.uclinux.org). uCLinux vereinfacht Linux, indem es die Funktionen für Mehrbenutzerbetrieb und virtuelles Speichermanagement entfernt und es so für CPUs eingebetteter Anwendungen geeignet macht. Sein Kernel ist deutlich kleiner als der von Linux, aber immer noch etwa 500 KB groß. uCLinux ist für eingebettete Anwendungen konzipiert, aber nicht echtzeitfähig. Ein weiteres bekanntes freies RTOS ist RTEMS (Real-Time Executive for Missile Systems), das ursprünglich in US-amerikanischen Raketensystemen eingesetzt wurde (siehe www.oarcorp.com/RTEMS). OARCorp steht für On-Line Applications Research Corporation. RTEMS ist ein Echtzeitprogramm und wurde ursprünglich nicht für eingebettete Systeme, sondern für Multiprozessorsysteme entwickelt. Die C-Version steht für Real-Time Executive for Multiprocessor Systems (C-Version). Die Ada-Version wurde später auf weitere militärische Anwendungen erweitert, wobei das „M“ von „Missile“ zu „Military“ (Ada-Version) geändert wurde. RTEMS kann zwar in eingebetteten Systemen eingesetzt werden, die Integration in ein On-Chip-System gestaltet sich jedoch aufgrund der strikten Einhaltung des POSIX-API-Standards recht schwierig. Diese Art von freier Software stammt von Unix-Experten, ist leistungsstark und zeichnet sich durch stabile und zuverlässige Performance aus. Obwohl der Quellcode verfügbar ist, erschweren der große Umfang und die zahlreichen Versionen die Einarbeitung für Nicht-Linux-Experten. Zudem ist der zugehörige Kernel mit mehreren hundert Kilobyte sehr groß, was die Reduzierung und Integration in einen Mikrocontroller zur Realisierung eines System-on-a-Chip (SoC) erschwert. Einige Softwareanbieter verpackten Linux neu und brachten es auf den Markt, was zu verschiedenen fragwürdigen Linux-Distributionen wie Bluecat Linux und Yellowdog Linux führte, von denen einige recht teuer waren. Obwohl der Linux-Quellcode Open Source und somit nicht geheimnisvoll ist, erschwert sein schierer Umfang das Studium und die Forschung. Unabhängig davon, ob ein Echtzeitbetriebssystem (RTOS) in der Entwicklung eingebetteter Produkte eingesetzt wird, ist das Erlernen und Beherrschen seiner Prinzipien und Designkonzepte unerlässlich. RTOS, die speziell für eingebettete Anwendungen entwickelt wurden, wie RC/OS und RC/OS-II, sind nicht nur praktisch, sondern auch unschätzbare Einführungslehrbücher. RC/OS ist freie Software; das erste Buch über RC/OS erschien 1992, und Tausende von Ingenieuren weltweit haben RC/OS erfolgreich auf nahezu alle gängigen CPUs portiert und in verschiedenen Bereichen eingesetzt. Aufgrund des anerkannten kommerziellen Werts von RC/OS ist RC/OS-II für Bildungszwecke weiterhin kostenlos, für die kommerzielle Nutzung ist jedoch eine Lizenz erforderlich. 1998 erschien das Buch „C/OS-II: The Real-Time Kernel“. Zwei Jahre zuvor stellte ich auf dem „Embedded Systems 2000 Academic Symposium“ C/OS und C/OS-II vor, was in China großes Interesse weckte. Die chinesische Übersetzung erschien im August 2001. An unserer Hochschule wird das Buch bereits als Lehrbuch in den Kursen „Eingebettete Systeme“ und „Mikrocontroller“ verwendet. Ich wurde zu zahlreichen Konferenzen eingeladen, um Vorträge über C/OS-II zu halten, und einige Unternehmen haben mich gebeten, ihre technischen Mitarbeiter in C/OS-II zu schulen. Obwohl ich mit den verwendeten CPUs nicht vertraut bin, ist das gemeinsame Lernen und die Portierung von C/OS-II auf eine unbekannte CPU eine sehr interessante Erfahrung. C/OS-II ist ein hervorragendes Lehrbuch. Es bietet nicht nur den vollständigen Quellcode eines Echtzeitkernels, sondern auch detaillierte Erläuterungen dieses Codes. Darüber hinaus werden einige grundlegende Konzepte von Echtzeitbetriebssystemen ausführlich beschrieben. Der Schreibstil und die Kommentare im Quellcode sind sehr elegant und standardisiert. Kommerzielle Software ist nicht nur teuer, sondern bietet selbst mitunter keine so detaillierten Erklärungen. C/OS und C/OS-II sind speziell für eingebettete Systeme konzipiert und ihr Code ist größtenteils in C geschrieben. Die hardwarebezogenen Teile der CPU sind in Assemblersprache implementiert und umfassen insgesamt etwa 200 Zeilen. Der Assembler-Anteil ist minimiert, um die Portierung auf andere CPUs zu vereinfachen. Zahlreiche Portierungsbeispiele sind online verfügbar. Anwender mit einem C-Cross-Compiler können C/OS-II in ihre Produkte integrieren. C/OS und C/OS-II sind präemptive, prioritätsbasierte Echtzeit-Multitasking-Kernel. Das bedeutet, dass die Aufgabe mit der höchsten Priorität unter den bereiten Aufgaben immer zuerst ausgeführt wird. Jede Aufgabe hat eine eindeutige Priorität. Es werden maximal 64 Aufgaben unterstützt. Die Ausführungszeit aller von C/OS und C/OS-II bereitgestellten Systemdienstfunktionen ist bekannt. Mit Ausnahme einer Funktion ist die Ausführungszeit aller Funktionen unabhängig von der Anzahl der Aufgaben und überschreitet einen bestimmten festen Wert nicht. Ein weiteres Merkmal von C/OS und C/OS-II ist ihre Anpassbarkeit. Es werden nur die vom Benutzerprogramm benötigten Funktionen eingebettet, und die vom Kernel belegten ROM/RAM-Ressourcen können produktspezifisch angepasst werden. Das Buch „UC/OS-II – Der Echtzeitkernel“ und der zugehörige chinesische Text basieren auf UC/OS-II Version V2.00. Bis Juni 2001 wurde der online erhältliche UC/OS-II-Quellcode auf Version 2.51 aktualisiert. Im ersten Halbjahr dieses Jahres erschien die zweite Auflage von „UC/OS-II – Der Echtzeitkernel“ mit der neuesten Version UC/OS-II, V2.52. Diese Version bietet einige nützliche Neuerungen wie Mutex-Semaphore und Ereignis-Flags. Das neue Buch enthält zahlreiche neue Inhalte zu UC/OS-II, darunter die Einführung der Task-übergreifenden Kommunikation und Synchronisierung. Die neue Auflage wurde von einem auf sechs Kapitel erweitert, insbesondere das Kapitel zur Portierung von UC/OS-II, in dem die Testmethoden für die portierte Version erläutert werden (siehe www.ucos-ii.com). Der Verlag ist derzeit mit dem Erwerb der Urheberrechte in Kontakt, und es wird erwartet, dass die chinesische Übersetzung der neuen UC/OS-II-Ausgabe in Kürze für Leser in China verfügbar sein wird. Das häufigste Feedback zum Erlernen und Anwenden von UC/OS und UC/OS-II lässt sich in zwei Kategorien einteilen: Portierung und UC/OS-II-basierte Anwendungen. Bezüglich der Portierung finden sich online über 40 Beispiele für CPU-Portierungen, darunter 8-Bit-, 16-Bit-, 32-Bit- und sogar 64-Bit-CPUs und DSPs. Laut Rückmeldungen aus verschiedenen Quellen liegt die Schwierigkeit der Portierung nicht in UC/OS-II selbst; die meisten Probleme werden durch Unterschiede in den C-Compilern verursacht. Für Studierende an Universitäten besteht die Schwierigkeit darin, dass fast alle in Mikrocontrollern verwendeten C-Compiler kommerzielle Software sind, von denen einige recht teuer sind. Wir stießen auf das Problem, dass eine bestimmte legale kommerzielle Software einwandfrei funktionierte, der Hersteller jedoch plötzlich insolvent ging und neu erschienene Mikrocontroller sie nicht mehr unterstützten. Die Verwendung des freien Cross-C-Compilers GNU gcc unter Linux als Entwicklungswerkzeug zum Kompilieren und Portieren von C/OS-II ist eine gute Wahl. Seine Bedeutung geht weit über die Kostenersparnis hinaus; das Erlernen der Verwendung freier Software ist ein Prozess, der zum IT-Experten wird. GNU gcc unterstützt nahezu alle gängigen 16-Bit- und 32-Bit-CPUs. Die Benutzerfreundlichkeit freier Software unter Linux und der umfassende Online-Support sind allgemein anerkannt. Die Schwierigkeit bei der Verwendung von GNU gcc liegt nicht im Cross-Compiler selbst, sondern in der Konfiguration der Entwicklungsumgebung. Sobald die Systementwicklungsumgebung eingerichtet ist und man sie beherrscht, lohnt sich die Investition langfristig. Mit demselben Compiler wird die Portierung von C/OS-II zum Kinderspiel. Die häufigsten Fragen zu C/OS-II-Anwendungen betreffen den TCP/IP-Protokollstapel. Obwohl kommerzielle Software verfügbar ist, empfehlen wir für spezifische Embedded-Anwendungen, die nur einen kleinen Teil des TCP/IP-Protokollstapels nutzen, weiterhin die Eigenentwicklung. Jeremy Benthams „TC/PIP Lean Web Servers for Embedded Systems“ (erhältlich unter www.cmpbooks.com) bietet ein Beispiel für den Internetzugang per Einwahlverbindung mit einem 8-Bit-Mikrocontroller. Das Buch erklärt die Entwicklung eines TCP/IP-Protokollstacks und enthält C-Programme (dieses Beispiel verwendet kein TROS). Basierend auf diesem Buch implementierten wir den direkten Internetzugang über einen Ethernet-Interface-Chip mit 8-Bit-, 16-Bit- und 32-Bit-Mikrocontrollern von Motorola. Das Netzwerkprotokoll ist unter www.rfc-editor.org zu finden. Für den 8-Bit-Mikrocontroller 68HC08 umfasst der TCP/IP-Objektcode nur etwa 7 KB. Bei 16-Bit- und 32-Bit-Mikrocontrollern wie dem 68HC11/12, CPU32 und ColdFire ist die Entwicklung solcher Programme mit RTOS-Unterstützung (C/OS-II) äußerst komfortabel. Die CPU, die Aufgaben eines Steuerungssystems übernimmt und gleichzeitig Netzwerkübertragung und -empfang verwaltet, wäre ohne ein Echtzeitbetriebssystem (RTOS) praktisch undenkbar. RTOS sind das Ergebnis jahrelanger Forschung von Informatikexperten. Der Einsatz eines RTOS erhöht nicht nur die Zuverlässigkeit eingebetteter Systeme, sondern gewährleistet auch geringe Latenzzeiten bei kritischen Ereignissen und ermöglicht so theoretisch optimale Echtzeitleistung. RTOS unterstützen Multitasking, indem sie Anwendungen in mehrere Aufgaben unterteilen. Dies vereinfacht die Programmentwicklung, verbessert die Wartbarkeit, Lesbarkeit und Verständlichkeit und steigert somit die Entwicklungseffizienz und verkürzt die Entwicklungszyklen. Der größte Nachteil eines RTOS ist sein Ressourcenverbrauch, da zusätzlicher ROM/RAM-Speicher benötigt wird. Dies kann für Mikrocontroller mit begrenztem Speicher und Single-Chip-Funktionalität einschränkend wirken. Unabhängig davon, ob ein RTOS verwendet wird oder nicht, ist das Erlernen seiner grundlegenden Konzepte unerlässlich. Selbst beim Kauf eines bekannten kommerziellen RTOS kann das Studium des C/OS-II-Kernels hilfreich sein, um dieses effektiv zu nutzen. RTOS ist ein leistungsstarkes Werkzeug zur Entwicklung eingebetteter Systeme und wird in verschiedenen Anwendungsbereichen breite Anwendung finden. Durch das Erlernen und Anwenden von RTOS wird die Mikrocomputer-Technologie unseres Landes ein neues Niveau erreichen.