ARM9-Mikrocontroller für High-End-Grafik

ARM9-Mikrocontroller für High-End-GrafikToshiba

Heute erwarten Kunden, dass sie ihre Embedded-Geräte einfach vernetzen und per attraktiver Benutzerschnittstelle bedienen können. Dieser Trend gilt für Consumer-Geräte ebenso wie für industrielle und medizintechnische Einrichtungen. Um ein zuverlässiges Design in kurzer Zeit zu erhalten, greifen immer mehr Entwickler auf Betriebssysteme zurück. Das OS soll komplexe, aber grundlegende Aufgaben integrieren, etwa die Kommunikation über Ethernet oder USB. Das und viel mehr leistet Linux: Dieses anerkannte, modulare, skalierbare und konfigurierbare OS belegt nur wenig Speicherplatz und eignet sich somit auch für Embedded-Anwendungen. Es ist lizenzfrei und bietet als Open-Source-OS vollen Zugriff auf den Quellcode und die dazugehörigen Tools.

Komplexe Aufgaben leicht gemacht

Embedded-Profis haben die Applikationsentwicklung rund um ein OS oft als unnötig und sogar unerwünscht betrachtet, da ihre Designs Prozessor-Zyklen und Speicherkapazität mit großer Sorgfalt verwalten. Features wie das Decodieren von Media-Dateien, Sicherheitsfunktionen, industrielle Netzwerke, USB, Ethernet, Datenlogger, M2M-Kommunikation, Web-Clients und -Server und einfallsreich entwickelte Benutzerschnittstellen In-House zu entwickeln, wäre jedoch enorm aufwändig.

Auf einen Blick

Moderne Embedded-Designs brauchen sehr viele Funktionen, die ein Betriebssystem abdeckt. Wer Toshiba-Mikrocontroller einsetzt und das passende BSP verwendet, spart obendrein bei der Suche und Auswahl der passenden Komponenten, Treiber, Bibliotheken und Cross-Development-Werkzeuge.

Vermeintlich einfache Vorgänge wie das Lesen von Ports fordern in Wahrheit komplexe Code-Sequenzen. Diesen Code neu zu schreiben, ist fehlerträchtig und langwierig. Trotzdem führt das Ergebnis kaum zu einem Aha-Effekt beim Endprodukt. Bestehenden Code wiederzuverwenden ist die naheliegende Antwort. Wurde der Code jedoch für eine andere CPU/MCU entwickelt, muss ihn der Entwickler für den Einsatz im neuen Design modifizieren. Updates und Code-Pflege geraten damit zum Problem.

Ein Embedded-OS übernimmt solche grundlegenden, aber komplexe Aufgaben. Auf dieser Basis kann der Entwickler schnelle, bequeme und weit verbreitete Schnittstellen implementieren, genauso wie fortschrittliche Grafik, um die Optik und Usability zu verbessern. Darüber hinaus lassen sich solche Funktionen effizient einbinden – in Sachen Zeitaufwand und Entwicklungsressourcen. Das Entwicklerteam erhält mehr Spielraum, um wirklich differenzierende Merkmale zu implementieren.

Linux für Embedded

Linux wird als OS für Embedded-Anwendungen immer beliebter. Sein quelloffener Kernel-Code bietet Entwicklern hohe Flexibilität und das OS ist modular sowie skalierbar mit geringer Speicherbelegung, was die Anforderungen an die Systemressourcen minimiert. Darüber hinaus ist Linux bekannt für seine zuverlässigen Netzwerk-, Internet- und USB-Funktionen zu handhaben, die in einem Embedded-Design ohne OS nur schwer zu verwalten wären. Komponenten wie ein Web-Server und USB-Host/Device-Treiber sind kostenlos erhältlich. Das Lesen einer Schnittstelle, etwa eines I²C-Ports, verläuft ebenfalls effizient. Dank Hardware-unabhängiger APIs bleibt einmal geschriebener Code auch in späteren Design-Änderungen verwendbar.

Umfangreiche Unterstützung bei der Entwicklung funktionsreicher grafischer Benutzeroberflächen (GUIs) liegt ebenfalls vor, einschließlich Open-Source-Grafikbibliotheken wie GTK und Qt, High-Level-Funktionen wie OpenGL und Zugriff auf eine Vielzahl handelsüblicher Tools zum Erstellen der GUI und Rendering-Fonts. Erfordert die Anwendung ein Dateisystem, um beispielsweise die NTFS-Partition eines USB-Sticks zu lesen, lässt sich dies leichter mit Linux bewerkstelligen als mit einem anderen Embedded-OS – und das ohne Programmieraufwand. Linux ist auf eine Vielzahl von Prozessoren portiert worden, einschließlich den verbreiteten ARM-Architekturen.

Die Kehrseite der Flexibilität ist, dass das Zusammenstellen aller notwendigen Informationen und Software-Komponenten eventuell viel Zeit kostet. Treiber für Mikrocontroller-Peripherie oder Touchscreen-Controller zu finden, kann sich als besondere Herausforderung erweisen.

Open-Source-Plus

Toshiba Electronics Europe hat sich mit dem Softwarespezialisten Kernel Concepts zusammengeschlossen, um die Embedded-Linux-Entwicklung auf Basis der ARM9-Mikrocontroller-Familie TMPA9xx voranzutreiben (Bild 1). Beide Unternehmen bieten ein komplettes BSP (Board Support Package) mit Bootloader, Treiber für die integrierte Peripherie der TMPA9xx-MCU, inklusive LCD-, Touchscreen- und SD-Host-Controller, sowie alle erforderlichen Komponenten zur Verwaltung der MCU-Schnittstellen, wie I²C, USB-Device- und Host-Controller, UART und GPIOs.

Bild 1: Für dieses TMPA9x-basierte Embedded-System bieten Toshiba und die Partner-Firma Kernel Concepts ein passendes BSP mit allen Tools und Treibern.

Bild 1: Für dieses TMPA9x-basierte Embedded-System bieten Toshiba und die Partner-Firma Kernel Concepts ein passendes BSP mit allen Tools und Treibern.Toshiba

Das BSP basiert auf der Linux-Distribution µCross von Kernel Concepts. Hinzu kommen eine Cross-Development-Toolchain (GCC), ein Root-Dateisystem mit Paketmanagement und Quellcode für vorkompilierte Pakete, sowie ein SDK, das GUI-Entwicklungstools wie GTK+, Qt oder Qt/Embedded unterstützt.

Der Bootloader des BSP ermöglicht das Hochladen von Software auf das Board oder die serielle Peripherie der MCU und unterstützt die NAND-Flash-Optimierung, einschließlich Wear-Levelling, Bad-Page-Handling und Organisation in mehrere Partitionen. Im Vergleich zu einer unabhängigen Bootloader-Entwicklung kann dies zwei bis drei Wochen an Arbeit einsparen.

Um die Entwicklung weiter zu vereinfachen und zu beschleunigen, wurde die Lösung so optimiert, dass sich die Software auf dem Host-PC fast identisch wie auf der Zielhardware verhält. Das komplette Root-Dateisystem (Bild 2) ist innerhalb des Entwicklungssystems auf einem NFS-Laufwerk gehostet. Änderungen sind daher im lokalen System sehr einfach, bevor man in ein binäres Format wechselt, das als Dateisystem-Image zum Export auf das Target-Board dient.

Bild 2: Mit einem eigenen Tool erstellen die Entwickler das Root-Dateisystem für ihr Zielsystem. In diesem Dateisystem sind schon alle nötigen Strukturen und Komponenten hinterlegt.

Bild 2: Mit einem eigenen Tool erstellen die Entwickler das Root-Dateisystem für ihr Zielsystem. In diesem Dateisystem sind schon alle nötigen Strukturen und Komponenten hinterlegt.Toshiba

Damit lassen sich kleine Änderungen lokal vornehmen – ohne jedes Mal das gesamte System auf das Board herunterladen zu müssen. Dies beschleunigt den Projektabschluss. Das Entwicklerteam kann sich auf einen reibungslosen Übergang der Applikation vom Host auf das Target verlassen; unangenehme Überraschungen im späteren Projektverlauf werden vermieden und bei der Hardware-Integration kann man sich auf die Behebung kleinerer Fehler konzentrieren. Dies ist vor allem in Projekten mit vielen Hardware-Abhängigkeiten vorteilhaft.

Das Beste aus beiden Welten

Im Geiste der Open-Source-Entwicklung ist die Embedded-Linux-Lösung für Toshibas TMPA9x-Reihe öffentlich verfügbar – mittels GIT-Server, um den Zugriff auf verschiedene Kernel-Versionen zu garantieren. Entwickler können damit frei entscheiden, was einen sicheren Zugriff auf bekannt sichere ebenso wie neueste Versionen ermöglicht. Fehlerbehebungen und Patches, einschließlich jener, die Entwickler des Kunden beisteuern, sind ebenfalls über den GIT-Server erhältlich.

Dieser Ansatz kombiniert die Flexibilität von Open-Source-Projekten mit der Sicherheit, dass professionell unterstützte Software zur Verfügung steht. Das Ergebnis sichert Wahlfreiheit, beseitigt Designrisiken und vermindert die Gefahr von Verzögerungen. Entwickler erzielen somit kosteneffiziente Ergebnisse und erhalten klar differenzierte Produkte innerhalb der geforderten Markteinführungszeiten.