Zuletzt angesehen: hardware
de

XMC Tutorial für C/C++ und UML

ARM, Advanced RISC Machine

Die standardisierte 32-Bit ARM-Architektur der Firma ARM Ltd. aus Cambridge bildet die Basis für jeden ARM-Prozessor. Im Laufe der Jahre hat sich die ursprüngliche ARM-Architektur rasant entwickelt. Die neueste Version des ARM bildet die ARMv8 Architektur. Diese zeigt schon deutlich in Richtung 64-Bit Architekturen. Vielleicht werden Sie sich jetzt fragen, wozu sie solche Leistung brauchen. Aber selbst Hobbyprojekte wie Quadcopter oder eine Hexapod können recht schnell an die Leistungsgrenze eines 8/16- Biter stoßen.

ARM Controller sind dem Wesen nach RISC (Reduced Instruction Set Computer) und unterstützen die Realisierung einer breiten Palette von Anwendungen. Inzwischen gilt ARM als führende Architektur in vielen Marktsegmenten und kann getrost als Industriestandard bezeichnet werden. Den Erfolg der ARM-Architektur kann man sehr gut an den aktuellen Trends bei Smart-Phone, Tablett und Co. ablesen. Mehr als 40 Lizenznehmer bieten in ihrem Portfolio ARM-basierende Controller an. Vor allem Effizienz, hohe Leistung, niedriger Stromverbrauch und geringe Kosten sind wichtige Attribute der ARM-Architektur.

Cortex-M

Die Cortex-M zielen direkt auf das Marktsegment der mittleren eingebetteten Systeme. Dieses wird bisher von 8-Bit und 16-Bit Controllern dominiert. Dabei scheut ARM auch nicht den direkten Vergleich mit der kleineren Konkurrenz bezüglich Effizienz, Verbrauch und Preis. Die Botschaft heißt: 32-Bit Leistung muss nicht hungriger nach Ressourcen sein, als ein 8-Bit Controller und ist auch nicht teurer. Natürlich vergleicht man sich besonders gern mit den guten alten 8051ern und zeigt voller Stolz seine Überlegenheit bei 32-Bit Multiplikationen. Bei aller Vorsicht bezüglich der Werbeargumente kann es jedoch als sicher gelten, dass der Cortex-M einige Marktverschiebungen in Gang gesetzt hat. Die folgende (mit Sicherheit nicht vollständige) Darstellung soll die Skalierung der Cortex-M Familie verdeutlichen.

Der Formfaktor dieser 32-Bit Controller lässt sich durchaus mit den größeren Mega und X-Mega Controllern der AVR-Familie von Atmel oder anderer 8/16 Bit Controller vergleichen. Für den blutigen Anfänger unter den Bastlern könnte jedoch die SMD-Bauweise eine nicht unerhebliche Einstiegshürde darstellen.

Die Standardisierung des ARM betrifft nicht nur die Hardware, sondern auch die gemeinsamen Aspekte aller ARM-Applikationen. Die ARM-Lizenznehmer halten sich strikt an die Architektur des ARM-Kerns und fügen nur ihre spezifische Peripherie hinzu. Alle den Kern betreffenden Softwarefunktionen lassen sich somit herstellerübergreifend standardisieren.

CMSIS

CMSIS - Cortex Microcontroller Software Interface Standard, ist ein herstellerunabhängiges Hardware Abstraction Layer für die Cortex-M Prozessoren und umfasst folgende Standards:

  • CMSIS-CORE (Prozessor und Standardperipherie),
  • CMSIS-DSP (DSP Bibliothek mit über 60 Funktionen),
  • CMSIS-RTOS API (API für Echtzeitbetriebssysteme),
  • CMSIS-SVD (Systembeschreibung in XML),

Damit sind grundlegende Funktionen aller ARM Controller kompatibel und lassen sich herstellerunabhängig und portabel verwenden. In der später vorgestellten Entwicklungsumgebung steht Ihnen eine umfangreiche Hilfe zum CMSIS zur Verfügung.

XMC

Die Firma Infineon bietet in ihrem breiten Produktspektrum ebenfalls Mikrocontroller auf der Basis der ARM Cortex-M Architektur an. Dabei lassen sich derzeit in der XMC Familie zwei Grundrichtungen erkennen:

  • kleine Steuerungen, XMC1000-Serie, Cortex M0, bisher 8/16-Bit Domäne, skalierbar bis zu
  • High-Performance Systeme mit der XMC4000-Serie, Cortex M4, 32-Bit Domäne

Infineon bietet, wie jeder Hersteller, für verschiedene Anwendungsfälle Referenzhardware zum Kennenlernen und Testen an. Beispiele für solche XMC-Evaluierungsbords sind:

Alle weiteren Ausführungen in diesem Tutorial beziehen sich auf das XMC4500 Relax Kit von Infineon.

XMC4500 Relax Kit

Das XMC4500 ist zwar nicht eines der Neuesten, aber eines der preiswertesten und leistungsfähigsten Evaluierungsboards von Infineon. Es ermöglicht dem Anwender, besonders die Hochleistungs-Eigenschaften des Cortex-M4 zu erkunden und trotzdem Anwendungen einfach zu entwickeln. Mit dem im nächsten Abschnitt vorgestellten myXMC Zusatz-Board verfügen der Anfänger und der Umsteiger über alles, was für den schnellen Einstieg in die XMC-Programmierung, aber auch für anspruchsvolle Anwendungen, erforderlich ist.

  • XMC4500 Mikrocontroller (basierend auf ARM Cortex-M4)
  • Spannungsversorgung über USB mit Micro USB-Kabel
  • Spannungsversorgung regelbar von 5 V bis 3,3 V
  • abnehmbarer on-board Debugger
  • 4 LEDs
    • 1 Power-LED
    • 1 Debugg-LED
    • 2 LEDs, vom Anwender frei verfügbar
  • 3 Taster
    • 1 Reset-Taster
    • 2 Taster, vom Anwender frei verfügbar
  • Schnittstellen
    • 4x SPI-Master
    • 3x I²C
    • 3x I²S
    • 3x UART
    • 2x CAN
    • 17x ADC (12 Bit)
    • 2x DAC
    • 31x PMW auf 2 Pin-Reihen 2×20

Die Bestückung mit simplen Eingabe- und Ausgabegeräten ist auf dem Board mit zwei Tastern und zwei frei verfügbaren LEDs doch eher spartanisch gehalten. In diesem Punkt bringt das Erweiterungsboard genügend Abhilfe. Hervorzuheben ist der abtrennbare JLINK Programmer von Segger. Mit diesem können über den nachrüstbaren SWD-Pfostenstecker (Serial Wire Debugging) andere XMC programmiert und debuggt werden. Doch zunächst einige wichtige Aspekte zum Inneren des XMC-Cotrollers.

Für das Verständnis des XMC Controllers sind einige grundlegende Strukturmerkmale wichtig. Neben dem Programmier- und Debug-Interface, den getrennten Programm- und Daten-Speichern, sind für den Anfänger, aber auch für Umsteiger, folgende Bausteine von besonderer Bedeutung:

  • SCU (System Control Unit)
    Dieser Baustein übernimmt eine Reihe von Aufgaben, wie zum Beispiel die Energieverwaltung und Taktkontrolle. Wir werden die SCU vor allem nutzen, um einzelne Bausteine über deren Resetlogik ein- oder auszuschalten bzw. zurückzusetzen.
  • ERU (Event Request Unit)
    In Zusammenarbeit mit den GPIO-Ports, der internen Peripherie und dem NVIC, übernimmt die ERU vielfältige Aufgaben zur automatischen Signal Auswertung und Weiterleitung.
  • NVIC (Nested Vectored Interrupt Controller)
    Die Interrupts des Cortex M sind gegenüber dem AVR oder auch älteren ARM Architekturen nüchtern als erwachsen zu bezeichnen. Was jedoch auch deren Nutzung für den Programmierer nicht unbedingt einfacher macht. Der NVIC ist die Schaltstelle für alle Interrupts und muss vom Programmierer in Kombination mit den Konfigurationen von ERU, interner und externer Ereignisquelle sowie der Programmierung der ISR sauber gehandhabt werden.

Im Tutorial werden diese Bausteine öfter eine Rolle spielen. Es ist einfach im Sinne des Lernens durch Wiederholung zweckmäßig, schon jetzt davon gehört zu haben.

myXMC-Board-4500

Das myXMC-Board-4500 fungiert als Add-On und ist eine ideale Ergänzung zum Board „XMC4500 Relax Kit“. Sie erweitern mit diesem Add-On in einfacher Art und Weise die Möglichkeiten Ihres XMC4500 Relax Kit. Zusätzliche digitale und analoge Ein- und Ausgabegeräte sowie die Möglichkeit einer optionalen USB-USART Bridge für die Kommunikation mit dem PC, komplettieren Ihre Experimentier- und Lernplattform. Desweiteren verfügt dieses Add-On über eine Schnittstelle für weitere myAVR Add-Ons.

Besonderheiten: Das myXMC-Board-4500 ist besonders darauf ausgelegt, Kennern der myAVR-Produkte und der 8-Bit AVR-Controller, den Umstieg und Anfängern den Einstieg in die Programmierung von 32-Bit ARM-Mikrocontrollern zu erleichtern.

Das myXMC-Board-4500 verfügt über einige typische, von der myAVR-Serie bekannte Ein- und Ausgabegeräte, wie zum Beispiel Potentiometer, Schalter, Frequenzwandler und LEDs. Ebenfalls ist auf dem Board ein analoger Lichtsensor zur Verwendung unterschiedlicher Helligkeitsgrade installiert. Der Formfaktor orientiert sich an den bewährten didaktischen Prinzipien der myAVR Lernsysteme.

Eigenschaften:

  • Schnittstelle für XMC4500 Relax Kit
  • Schnittstelle für myAVR Produkte
  • typische Ein- und Ausgabegeräte (2 Taster, 3 LEDs, 1 Speaker, 2 Potentiometer )
  • zusätzlich ein analoger Fotosensor zum Experimentieren mit unterschiedlichen Helligkeitsgraden
  • Raster für flexible Anwendung (2.54mm)
  • myUSBtoUART
  • als Bausatz geeignet, alle SMD-Teile bereits bestückt
  • Leiterplatte gebohrt, verzinnt, Industriefertigung, robust, bedruckt
  • einfache Handhabung

Low Level Peripherie Treiber

Es handelt sich hier um ein komplettes Firmware-Paket, bestehend aus Gerätetreiber für alle Standard-Peripheriegeräte der XMC 32-Bit-Flash-Mikrocontroller-Familie. Das Paket enthält eine Sammlung von Routinen, Datenstrukturen und Makros sowie deren Beschreibungen und eine Reihe von Beispielen für jedes Peripheriegerät.

Die Firmware-Bibliothek ermöglicht im Anwenderprogramm die Verwendung jedes Gerätes ohne die speziellen Einzelheiten der Register und Bitkombinationen zu kennen. Es spart viel Zeit, die sonst bei der Codierung anhand des Datenblattes aufgewendet werden muss. Die XMC Peripherie Bibliothek umfasst 3 Abstraktionsebenen und beinhaltet:

  1. Ein vollständiges Register Adress-Mapping mit allen Bits, Bit-Feldern und Registern, in C deklariert.
  2. Eine Sammlung von Routinen und Datenstrukturen für alle peripheren Funktionen, als einheitliche API.
  3. Eine Reihe von Beispielen für alle gängigen Peripheriegeräte.

Durch die im nächsten Abschnitt vorgestellte Entwicklungsumgebung werden die Bibliotheken für das CMSIS und die Peripherie-Treiber gleich mit installiert.

Die Hardware beschaffen

Das Tutorial macht nur dann wirklich Sinn, wenn man die vorgestellten Beispiele und Übungen auch nachvollziehen kann. Die Hardware gibt es preiswert im Netz, gern empfehle ich:

  • oder gleich als Komplettpaket, Hardware, Software, Kabel, Lehrbuch, alles dabei!

Nächstes Thema

hardware.txt · Zuletzt geändert: 2016/01/07 11:46 von mark