Das optimale System-on-Chip für eine Anwendung auszuwählen ist beileibe keine einfache Aufgabe. Auf dem Markt sind zwar viele Systeme mit den verschiedensten Funktionen und Schnittstellen verfügbar, aber oft fehlt dem ansonsten perfekten SoC genau die eine Schnittstelle, die für die Anwendung unerlässlich ist. Andere SoCs bringen viel kostspieligen und unnötigen Ballast mit. Zusätzliche Schnittstellen diskret aufzubauen ist auch eine teure und aufwendige Lösung. Für viele industrielle Schnittstellen und Feldbusse setzt schon die Standardarchitektur auf zusätzliche Hardware, zum Beispiel ein spezielles ASIC oder eine Lösung mit Controller, PLD oder FPGA.

Bild 1: Neben dem ARM-Core verwendet TI auch zwei RISC-Cores auf vielen seiner SoCs. Diese PRUs eignen sich für Echtzeitaufgaben und industrielle Protokolle.

Bild 1: Neben dem ARM-Core verwendet TI auch zwei RISC-Cores auf vielen seiner SoCs. Diese PRUs eignen sich für Echtzeitaufgaben und industrielle Protokolle.Texas Instruments

Vielseitiger Spezialist

Einen anderen Lösungsansatz für diese Anwendungsfälle bieten aktuelle SoCs von Texas Instruments durch den Einsatz des sogenannten PRU-ICSS (Bild 1). Mit Hilfe des „Programmable Real-Time Unit Subsystem and Industrial Communication Subsystem“ lassen sich Feldbusse implementieren, zum Beispiel Ethercat oder Profinet, oder zusätzliche Standardschnittstellen sowie kundenspezifische Schnittstellen oder Protokolle wie Varan realisieren. Zusätzliche Hardware ist dazu nicht nötig. Ebenso eignet sich die PRU-ICSS-Einheit zur Ansteuerung von Schrittmotoren, Auswertung von Quadraturencodern oder eine schnelle Messwerterfassung und Filterung.

Die PRUs garantieren deterministische Abläufe und minimale Latenzzeiten, die auf einem ARM- oder x86-System nicht möglich wären. Durch die Integration des PRU-ICSS sind die Chips geringfügig teurer als reine ARM-SoCs, mit dem konsequenten Einsatz der Technik können die Kosten für das Gesamtsystem aber erheblich sinken. Durch den Wegfall von ASICs oder weiteren Controllern reduzieren sich auch die Komplexität des Gesamtsystems und der Platzbedarf des Boards.

Programmierbare Echtzeit-Einheit

PRUs sind universell einsetzbare Coprozessoren, die TI in Cortex-A8- und Cortex-A9-System-on-Chip-Designs integriert (Bild 1). Die Abkürzung steht für „Programmable Realtime Unit“ und deutet schon die Echtzeitfähigkeit dieser Prozessoren an. Die Erweiterung ICSS steht für „Industrial Communications Subsystem“. Der Halbleiterkonzern verweist damit auf die besondere Eignung der PRU-Prozessoren für die Realisierung industrieller Schnittstellen. Das ICSS ist eine Einheit bestehend aus zwei PRU-Cores, Speicherbereichen, Timern und Peripheriemodulen, die über einen eigenen Bus verbunden sind.

Eckdaten

  • Ti integriert in viele ARM Cortex-A8- und Cortex-A9-SoCs spezielle Hardware-Beschleuniger für Echtzeitaufgaben.
  • TI selbst liefert viele Bibliotheken für Industrial-Protokolle.
  • Die PRU-ICSS-Hardware ist frei programmierbar, wird vom Host-Betriebssystem wie eine Pripherieeinheit mit eigener Firmware behandelt.
  • Die Kommunikation zwischen Host und PRU läuft über Shared-Memory.
  • Kurz Industrie-Elektronik unterstützt diese Funktion auf seinen Boards und nutzt sie in vielen Entwicklungsprojekten.

Die PRU ist als 32-Bit-RISC-Prozessor realisiert, der mit 200 MHz getaktet wird. Er verfügt über eigenes Befehls- und Daten-RAM auf dem Chip sowie über einen eigenen Interrupt-Controller. Jede PRU verarbeitet ihre Befehle innerhalb eines Taktzyklus, ohne Verwendung einer Pipeline-Architektur. Zur Kommunikation mit dem ARM-Core oder weiteren PRUs dienen Shared-Memory-Bereiche innerhalb des SoCs. Außerdem ist die PRU in der Lage, Interrupts für den ARM-Prozessor und DMA-Events zu generieren.

Aufgaben verteilen

Während auf dem ARM-System ein ausgewachsenes Betriebssystem läuft, beispielsweise Linux, können die PRUs parallel dazu echtzeitfähigen Code abarbeiten. Diese Architektur entlastet die ARM-Cores und hat viele Vorteile sowohl für die Echtzeitverarbeitung als auch für das Betriebssystem. Bei den aktuellen AM437x-Systemen hat TI vier PRU-Cores auf dem SoC integriert. Für komplexe Anwendungen lassen sich mehrere PRUs kombinieren, zum Beispiel eine PRU zur Ansteuerung der Hardware und eine weitere zur Datenaufbereitung und Kommunikation mit dem ARM-System.

Die Software auf den PRUs hat Zugriff auf die umfangreichen Peripheriemodule des SoC. Um extrem kurze Latenzzeiten des RISC-Codes zu erreichen, sind die PRUs direkt an die I/O-Schnittstellen angebunden. Bei einem ARM Cortex-A-System hingegen erfolgt die Kommunikation mit der Außenwelt über mehrere Caches (L1, L2) und den internen Bus (Bild 1). Für den Zugriff auf einen einfachen GPIO-Pin sind deshalb schon mehr als 40 Taktzyklen nötig.

Bild 2: Über den 32-Bit-Bus der PRUs sind viele Peripheriegeräte direkt erreichbar, um eine Reaktion in wenigen Nanosekunden zu ermöglichen.

Bild 2: Über den 32-Bit-Bus der PRUs sind viele Peripheriegeräte direkt erreichbar, um eine Reaktion in wenigen Nanosekunden zu ermöglichen.Texas Instruments

An die PRUs sind alle Peripherieschnittstellen des Chips sehr viel direkter angebunden, wodurch Zugriffe in wenigen Taktzyklen gelingen (Bild 2). Zusätzlich sind einige Schnittstellen mit direkter Anbindung an die PRUs in das ICSS integriert. Verfügbar sind unter anderem UARTs, Ethernet, Capture-Module sowie bis zu 32 I/O-Pins. Durch die direkte Ansteuerung dieser Schnittstellen ist ein Zugriff innerhalb eines PRU-Taktes möglich. Bei den I/O-Pins liegt die Reaktionszeit bei 10 ns.

Fertige Bibliotheken

Für verschiedene Feldbusse liefert TI bereits PRU-basierte und für das jeweilige Bussystem zertifizierte Lösungen. Außerdem stehen Schnittstellen wie Soft-UART oder Soft-CAN kostenlos zur Verfügung. Die Leistungsfähigkeit demonstrieren auch die zahlreichen mittlerweile entstandenen Open-Source-Projekte für PRU-Firmware. Neben Lösungen zur Kommunikation über verschiedene Schnittstellen gibt es auch Software, die die Schrittmotoren eines 3D-Druckers ansteuert oder einen 100 MHz schnellen Logic-Analyzer mit 14 Kanälen umsetzt.

PRUs bieten auch eine schöne Möglichkeit, exotische Schnittstellen oder Kommunikationsprotokolle, wie sie von vielen Industriekonzernen und Maschinenbauern verwendet werden, unabhängig vom eigentlichen ARM-System zu implementieren. In der Regel werden hier Standardschnittstellen wie Ethernet, CAN oder RS485 um spezielle Funktionalitäten oder Protokolle erweitert, um das Echtzeitverhalten oder die Robustheit zu verbessern. Durch den schnellen Zugriff der PRUs auf die Peripheriemodule sind viele Lösungen, die bisher einen PLD oder FPGA erfordern, nun in Software möglich.

Für die PRU entwickeln

Die PRUs lassen sich in Assembler oder C programmieren. Während bei den ersten Systemen nur die Implementierung einiger Schnittstellen durch TI oder qualifizierte Partner geplant war, ist der Compiler mittlerweile frei verfügbar. TI hat seinen PRU-Compiler und weitere Tools in die Entwicklungsumgebung „Code Composer Studio“ integriert; die Werkzeuge stehen aber auch standalone für Linux zur Verfügung.

Um auf Betriebssystemebene Code in die PRU-Cores zu laden, zu starten und über Shared-Memory zu kommunizieren, sind Funktionen in den Linux-Kernel und in das von TI angebotene RTOS integriert. Linux verwaltet die PRUs über das „Remote Processor Framework“, das auch für viele andere Systeme mit unterschiedlichen Cores auf einem Chip eingesetzt wird.

Die Pinkonfiguration der jeweiligen Schnittstelle sollte immer strikt vom Code der PRU getrennt bleiben und im Board-Support-Package des jeweiligen Systems liegen. Dadurch hat man die Möglichkeit, die Implementierung einer kundenspezifischen Schnittstelle unabhängig vom verwendeten System bereitzustellen. Aus Sicht des Betriebssystems handelt es sich bei PRU-Code um eine Firmware, die eine weitere Funktion des SoC bereitstellt.

Gemeinsam stärker

Wer eine Funktion betriebssystemunabhängig implementiert, kann den PRU-Code separat testen und bei Bedarf auch zertifizieren. Die Firmware ist dann unabhängig vom Board oder auch SoC nutzbar. Für komplexe Aufgaben kann es aber notwendig sein, sowohl die PRU als auch den ARM-Core zu nutzen. In diesem Fall erledigt der PRU-Code die zeitkritischen Funktionen und der ARM-Core übernimmt den restlichen Kommunikationsstack.

Ein Beispiel hierfür ist die Profibus-Implementierung von TI. Sie verwendet eine PRU für die schnelle Ansteuerung der RS485-Schnittstelle. Die höheren Schichten des Profibus-Stacks sind größtenteils auf Betriebssystemebene realisiert. Das Betriebssystem muss hierfür aber ebenfalls sehr kurze Reaktionszeiten garantieren.

Bild 3: Auf dem EPC35 hat Kurz Industrie-Elektronik den Cortex-A8-SoC AM335x von Texas Instruments verwendet und unterstützt auch dessen PRU-ICSS-Funktion.

Bild 3: Auf dem EPC35 hat Kurz Industrie-Elektronik den Cortex-A8-SoC AM335x von Texas Instruments verwendet und unterstützt auch dessen PRU-ICSS-Funktion.Kurz Industrie-Elektronik

Prozessoren und Varianten

Mit der AM1x-SoC-Familie hat TI die PRU-Unterstützung für ARM-Cores etwa ab 2011 eingeführt. Inzwischen sind mit AM335x und AM437x weitere SoC-Linien verfügbar und es stehen zahlreiche neue Peripheriemodule für das PRU-ICSS zur Verfügung. Weitere Systeme mit ARM Cortex-A15 und mit 64-Bit-ARM-Cores stehen auf der Roadmap. Dass Texas Instruments von dieser Lösung überzeugt ist, zeigt sich auch daran, dass der Chiphersteller bei AM437x und kommenden Systemen keine Varianten mehr ohne PRU anbietet.

Durch verschiedene Varianten skalieren die Chips sehr gut auf die tatsächlich notwendige Funktionalität und Rechenleistung. Bei der jeweils größten Ausbaustufe der SoCs mit PRU ist eine Lizenz für Ethercat im Preis inbegriffen. Da TI diese Produkte für den industriellen Einsatz auslegt, können die Kunden eine lange Verfügbarkeit dieser Lösungen erwarten. Eine über PRU-Code implementierte Schnittstelle ist unabhängig von weiteren externen Bauteilen und die Investition bleibt nutzbar, solange es das System-on-Chip gibt.

Bild 4: Das EPC45 setzt auf den Cortex-A9-Prozessor AM437x von TI. Mit 32-Bit-DDR3-800-SDRAM leistet das System bis zu 40 % mehr als der Vorgänger AM335x und braucht dabei weniger Energie.

Bild 4: Das EPC45 setzt auf den Cortex-A9-Prozessor AM437x von TI. Mit 32-Bit-DDR3-800-SDRAM leistet das System bis zu 40 % mehr als der Vorgänger AM335x und braucht dabei weniger Energie.Kurz Industrie-Elektronik

Verfügbare Boards

Kurz Industrie-Elektronik hat seit einiger Zeit CPU-Module mit den PRU-fähigen SoCs von Texas Instruments im Programm. Das Modul EPC35 mit AM335x ist seit zirka drei Jahren im Einsatz (Bild 3). Das EPC45-Modul verwendet die neue AM437x-Serie und wurde Anfang 2015 vorgestellt (Bild 4). Weitere CPU-Module mit den kommenden Systemen von TI sind momentan in Planung.

Die Einsatzmöglichkeiten des PRU-ICSS wurden bei Kurz Industrie-Elektronik intensiv untersucht und getestet. Der Anbieter sieht sich damit als leistungsfähiger Entwicklungspartner für den Einsatz dieser Technik. Neben der Verwendung der EPCxx-CPU-Module sind auch vollständig kundenspezifische Baugruppen möglich. Kurz gibt das Know-how auch in Schulungen und Machbarkeitsanalysen weiter.