Embedded-Entwicklung Intuitive Systemdesign-Tools

Embedded-Entwicklung
Intuitive Systemdesign-Tools

Da es immer wichtiger wird, die Markteinführungszeit zu verkürzen und mehrere Features in ein und demselben System zu kombinieren, wächst die Bedeutung effizienter Tools für das Embedded-System-Design. Häufig weiß der Anwender nicht einmal vollständig über die Funktionen des Produkts bzw. Tools Bescheid und muss dennoch dessen Features maximal ausreizen. Gefragt ist deshalb ein intuitives Systemdesign-Tool, das die detaillierten Aspekte und Informationen abstrahiert und sich mehr auf die System-Ebene konzentriert.
Zum Beispiel gibt es Chips mit komplexen Architekturen, die praktisch alle analogen und digitalen Peripheriefunktionen zusammen mit programmierbaren Elementen in sich vereinen. Für den Anwender ist es hier unter Umständen nicht einfach, die zugehörigen Konfigurationsregister sowie weitere elementare Aspekte des Bausteins zu lesen und zu verstehen.

Wunsch-Features von Embedded-System-Tools der nächsten Generation

Komplexe SoC-Bausteine (System-on-Chip) sind der Schlüssel und die treibende Kraft für die nächste Systemgeneration, die vorwiegend in Consumer-Elektronik, im Automotive-Bereich und in der Medizintechnik zum Einsatz kommt. Dies hat eine Änderung des Design-Flows erforderlich gemacht. Im Kern geht es schließlich nach wie vor um die Applikation und nicht um Randfaktoren wie die Tools oder eine neue Architektur. Dementsprechend richtet sich das Hauptaugenmerk des Designers auf die Verkürzung der Markteinführungszeit, die Realisierung eines fehlerfreien Designs und die effiziente Nutzung der Ressourcen. Ein Flussdiagramm oder Blockschaltbild ist stets der erste Schritt im Systemdesign und bildet den kürzesten Weg zwischen dem Designer und dem gestellten Problem. Die Analyse des Problems und die Effektivität der Lösung lassen sich an dem vom Designer angefertigten Blockschaltbild klar ablesen. Die analogen und digitalen Blöcke auf dieser Ebene mitsamt den zusätzlichen flexiblen Elementen bieten mehrere Alternativen zur Lösung des Problems.

Der erste Schritt zum Systemdesign

Sobald das Schaltbild nach zahlreichen Iterationen als bester Kompromiss für die gestellten Vorgaben feststeht, kommen die verschiedenen Features der verwendeten Blöcke und Module ins Spiel. Dazu gehört der Software-Teil des Designs und der Umgang mit der Vielzahl unnötiger Registereinstellungen. Die Alternative hierzu wären Funktionsaufrufe, die diese maschinennahen Aktivitäten automatisch für den Designer ausführen. In diesem Fall müsste keine Arbeitszeit für Detailfragen vergeudet wird. Bibliothekskomponenten sollten solche Features bieten. Zu jeder Komponente muss es eine Dokumentation geben, die die interne Implementierung illustriert und die verwendeten APIs auflistet.

Hierarchisch gegliederte Modellierung

Eine hierarchisch gegliederte Modellierung ist eine gute Möglichkeit, komplexe Funktionsblöcke in die verfügbaren Bibliotheks-Komponenten zu untergliedern. Ein Modul auf der obersten Abstraktionsebene lässt sich aus mehreren Bibliotheks-Blöcken zusammensetzen, die zur Implementierung einer bestimmten Funktionalität verdrahtet werden. Unüblich ist dagegen noch die Entwicklung eigener Komponenten und deren weitere Instanziierung während des Designzyklus. Dies ist notwendig, wenn ein Designunternehmen die Wiederverwendung von Design-Elementen in den Vordergrund stellt und eine Komponente mehrfach verwenden möchte – sei es im selben Projekt oder in mehreren Designs. Als nächstes folgen die Debugging-Features zum Testen des Systems in unterschiedlichen Umgebungen. Ideal wäre es, wenn für Programmierung und Debugging dieselbe Schnittstelle (z. B. JTAG) genutzt werden könnte, womit die Stiftleiste sogar zu Tools von Fremdunternehmen kompatibel wäre. Single Wire Debug bietet sich als Alternative für Applikationen an, die die meisten Features des JTAG-Interface benötigen, aber mit weniger Pins auskommen müssen.

Tools abgestimmt auf marktgängige SoCs

SoCs der nächsten Generation haben komplexe Architekturen, weil sie programmierbare analoge und digitale Peripheriefunktionen auf einem Chip vereinen. Der Versuch, eine Applikation durch das Verstehen und Konfigurieren von Konfigurationsregistern zu entwickeln, gestaltet sich hierbei höchst kompliziert. Wenn man auf komplexe Bauelemente setzt, in denen nahezu jedes Element programmiert werden muss, sollte man stattdessen ein Tool verwenden, das einem diese anstrengende Aufgabe abnimmt und zum Entwickeln der Applikation eine einfacher zu bedienende Benutzeroberfläche bereithält.

An der Denkweise des Designers orientiert

Cypress Semiconductor bietet mit PSoC Creator ein Tool nach neuestem Stand der Technik an, mit dem der Anwender das Beste aus diesen Chips herausholen kann, ohne sich mit der Architektur und den Konfigurationsregistern zu befassen. PSoC Creator orientiert sich an der Denkweise des Designers. Peripheriefunktionen werden aus einem Katalog vordefinierter, getestete Komponenten ausgewählt und in den Schaltplan gezogen. In Verbindung mit den APIs, die es zu jedem Modul gibt, gestaltet sich der Design-Flow wie das Anfertigen eines Blockschaltbilds. Das Spektrum der verfügbaren Module reicht von einfachen Gattern über komplett implementierte digitale und analoge Peripheriefunktionen bis zu ausgefeilten Kommunikations und Applikations-Lösungen wie USB oder CapSense. PSoC Creator erledigt diese Aufgabe sehr gut für die Familien PSoC 3 und PSoC 5. Anstatt sich um Architekturen und Konfigurationsregister zu kümmern, kann ein Designer mit PSoC Creator intuitiv arbeiten und ist nicht gezwungen, den Baustein zu verstehen, bevor er die Applikation entwickeln kann. Die Peripheriefunktionen werden wie eben beschrieben aus einem Katalog entnommen und in das Schaltbild gezogen. Das Angebot umfasst simple Logikgatter, komplett ausgearbeitete analoge und digitale Komponenten (z. B. ADCs, Verstärker, Zähler, LCD-Treiber) sowie anspruchsvolle Funktionen wie USB oder CapSense. Anschließend werden die Taktfrequenzen festgelegt und die Peripheriefunktionen mit Pins verbunden. Zum Abschluss wird ein Blockschaltbild unabhängig vom verwendeten Baustein angefertigt.

Unabhängig vom verwendeten Baustein

Geht es beispielsweise um das Design eines Systems, das Temperaturen erfassen und per RS232 an einen PC übertragen soll, dürfte das Blockschaltbild Ähnlichkeit mit Bild 1 haben. Ein PGA (Programmable Gain Amplifier) verstärkt das Signal zur Weiterleitung an einen ADC, dessen digitaler Ausgangswert per UART ausgegeben wird. In Bild 1 wurden PGA, ADC, UART und die Pins (Pot und Rx) einfach aus der rechts eingeblendeten Bibliothek in den Schaltplan gezogen und anschließend verdrahtet. Die eingebauten Konfigurations-Tools ordnen das Design dem Baustein zu und berechnen die Taktung und das Routing automatisch. Alle Komponenten sind parametriert, um die Implementierungs-Details für den Designer zu abstrahieren. Für die Komponenten werden Werte festgelegt, die ihrer Funktion entsprechen: bei einem UART die Baudrate, bei einem Verstärker die Leistung und Verstärkung und bei einer PWM-Funktion das Tastverhältnis.

Alle Komponenten sind abstrahiert

In Bild 2 ist der Konfigurations-Assistent des ADC zu sehen. Hier müssen lediglich die gewünschte Abtastrate, die Auflösung und der Eingangsbereich spezifiziert werden. Zu jeder Komponente gehört ein Datenblatt, in dem die Funktionalität, die Parameter, die elektrischen Spezifikationen und die APIs beschrieben sind. PSoC Creator kombiniert einen C-basierten Entwicklungsablauf mit automatisch generierten Software-APIs für die Komponenten des Designs. Problemlos ist in einer späteren Phase beispielsweise der Umstieg von 8 auf 32 Bit möglich, ohne dass die Speicherbelegung, die Mnemonics o. ä. berücksichtigt werden müssen. Der besondere Vorteil ist hier, dass das Design abgekoppelt von der anvisierten Chipfamilie entwickelt werden kann. Auch der Umstieg auf einen anderen Baustein ist während der Entwicklung jederzeit möglich, ohne irgendetwas am Projekt zu verändern.

Schneller, einfacher und weniger fehleranfällig

Die APIs sorgen für weniger Programmierfehler und gewährleisten eine korrekte Interaktion mit der Peripherie, was die Softwareentwicklung schneller, einfacher und weniger fehleranfällig macht. Ein zentrales Prinzip von PSoC Creator ist die Wiederverwendung von Designelementen. Indem man ein funktionierendes Design in eine wiederverwendbare Komponente kapselt, gestaltet es sich schneller und einfacher, künftige Designs mit weniger Fehlern und einem übersichtlicheren Schaltplan zu erstellen.

Wiederverwendung von Designelementen

Um eine eigene Komponente zu erstellen, muss nur der Schaltplan gezeichnet werden. Das Tool erstellt anschließend das zugehörige Symbol. Die Komponente wird in eine Bibliothek gelegt und kann von dort wie alle übrigen Komponenten in künftige Designs eingefügt werden. Benutzer können deshalb mit PSoC Creator rasch eigene Designbibliotheken erstellen, sodass der Fokus bei jedem Projekt auf der Innovation und nicht auf der Funktionalität der Vorgängerprodukte liegt. Angenommen, ein Fensterkomparator soll in einem Design oder auch in mehreren Designs häufiger zum Einsatz kommen. Hier bietet sich das Erstellen einer Komponente an, was sich vom Erstellen eines sonstigen Schaltplans nicht unterscheidet. Bild 3 zeigt den Schaltplan. Ist diese Komponente einmal erstellt, ist sie in der Bibliothek verfügbar und kann auf die gleiche Weise genutzt werden wie jede andere Standardkomponente. Bild 4 zeigt ein Design, in dem dieser selbst erstellte Fensterkomparator zum Einsatz kommt. In vielen Anwendungen benötigt der Anwender möglicherweise Varianten existierender Bibliotheks-Komponenten – sei es durch Abwandlung der bestehenden Funktionalität oder Entfernung nicht benötigter Funktionen, um den Ressourcenbedarf zu verringern. Eine Komponente von Grund auf neu zu entwickeln, benötigt unnötig Zeit. Stattdessen bietet sich die Modifikation einer vorhandenen Komponente an. Schaltung und Verilog-Codierung der Komponente können geändert werden, und es kann eigener API-Code hinzugefügt werden.

Modifikation vorhandener Komponenten

Für das Debugging als wichtigste Phase der Produktentwicklung bringt PSoC Creator alle modernen Features eines Cross-Debuggers mit. Zusätzlich zeigt ein spezielles Peripherie-Debug-Fenster den internen Status von On-Chip-Komponenten an. Nützlich ist unter anderem auch die Hover-Funktion. Sie zeigt dem Anwender den Typ, die Adresse und den Wert von Variablen an, über die er mit dem Mauszeiger fährt. Außerdem besteht die Möglichkeit, vor dem Starten des Debuggers Breakpoints im Code zu setzen und zu speichern. Neben den gängigen Execute und Stepping-Funktionen steht eine umfangreiche Palette an Fenstern zur Verfügung, die beispiellose Einblicke in den Betriebszustand des Systems geben. Neben dem C und dem Disassembly-Fenster gibt es Register und Speicher, Call Stack und Locals sowie Memory- und Watch-Fenster. Alle Fenster lassen sich nach Belieben anordnen, um Daten im jeweils gewünschten Format anzuzeigen und direkt zu editieren. Die Familien PSoC 3 und PSoC 5 unterstützten 5-Pin-JTAG sowie die weniger invasive Serial-Wire-Option mit 2 Pins. Ein kompatibler Bestand an Befehls und Daten-Breakpoints stellt unabhängig von der CPU-Architektur eine einheitliche Debugging-Umgebung zur Verfügung.

Autoren:
Umanath R. Kamath, Applications Engineer bei Cypress Semiconductor und Sachin Gupta, Senior Applications Engineer bei Cypress Semiconductor.

Cypress Semiconductor GmbH
www.cypress.com

Das könnte Sie auch Interessieren