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 setzen wird. 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 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.

STM32

Die Firma ST-Microelectonics bietet in ihrem breiten Produktspektrum ebenfalls Mikrocontroller auf der Basis der ARM Cortex-M Architektur an. Dabei lassen sich vier Anwendungsfelder erkennen, auf die die STM32-Familie abzielt.

  • Entry-Level-MCU, STM32-F0, Cortex M0, bisher 8/16-Bit Domäne
  • Mainstream-MCU, STM32-F1, Cortex M3, bisher 16-Bit Domäne
  • High-Performance MCU, STM32-F2/3/4, Cortex M3/4, 32-Bit Domäne
  • Spezialanwednungen, STM32-W/L, Cortex M3

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

Alle weiteren Ausführungen in diesem Tutorial beziehen sich auf das STM32F4 Discovery von ST-Microelectronics.

STM32F4 Discovery

Das STM32F4 DISCOVERY ist derzeit eines der neuesten Evaluierungsboards von ST. Es ermöglicht dem Anwender besonders die Hochleistungs-Eigenschaften des Cortex-M4 zu erkunden und trotzdem Anwendungen einfach zu entwickeln. Mit dem unten vorgestellten Zusatz-Board mySTM32-Board-F4D verfügen der Anfänger und der Umsteiger über alles, was für den schnellen Einstieg in die ARM-Programmierung, aber auch für anspruchsvolle Anwendungen erforderlich ist.

  • Mikrocontroller STM32F407VGT6 im LQFP100 Gehäuse mit
    • 32 Bit ARM Cortex M4 Kern
    • 1 MByte FLASH
    • 192 KByte RAM
    • 168 MHz
  • LIS302DL: ST MEMS 3-Achs Beschleunigungssensor, Typ versionsabhängig
  • MP45DT02: ST MEMS ungerichtetes digitales Mikrofon
  • CS43L22: Audio Digital-Analog-Konverter mit integriertem Verstärker
  • 8 LEDs
    • 1 für USB Kommunikation
    • 1 Power-LED für 3,3 V
    • 4 durch den Anwender nutzbare LEDs
    • 2 LEDs für USB on-the-go
  • 2 Taster
    • 1 für Reset
    • 1 frei verfügbar für Anwender
  • onBoard Programmer ST-LINK V2

Die Bestückung mit simplen Ein- und Ausgabegeräten ist auf dem Board mit einem Taster und vier frei verfügbaren LEDs doch eher spartanisch gehalten. In diesem Punkt bringt das Erweiterungsboard genügend Abhilfe. Interessant für anspruchsvollere Anwendungen sind natürlich die Audio-Features und der Lagesensor auf dem Board. Hervorzuheben ist ebenfalls der integrierte ST-LINK/V2 Programmer. Mit diesem können über den vorhandenen SWD-Pfostenstecker (Serial Wire Debugging) andere STM32 programmiert und debuggt werden. Doch zunächst einige wichtige Aspekte zum Inneren des ARM-Cotrollers.

Für das Verständnis des ARM-Cortex 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, vom AVR folgende Bausteine von besonderer Bedeutung:

  • RCC (Real-Time Clock Control)
    Dieser Baustein liefert den Takt für jede einzelne Komponente, die benutzt werden soll. Im Gegensatz zum AVR ist faktisch die gesamte Peripherie nach dem RESET zunächst ausgeschaltet. Jeder einzelne Baustein muss durch Zuweisen eines Taktsignals erst eingeschaltet werden, bevor man diesen initialisieren und dann benutzen kann.
  • AHB (Advanced High-performance Bus)
    ARM Controller besitzen mindestens einen sehr schnellen Haupt-Bus mit Busmatrix. Über diesen leistungsfähigsten Bus im System werden ausgewählte extrem schnelle Bausteine, wie die GPIO-Ports und die Peripherie, über ihre eigenen Bussysteme angesprochen. Kleinere Cortex-M verfügen über eine light-Variante des AHB, größere können auch mal zwei oder drei davon haben (AHB1, AHB2, AHB3).
  • APB (Advanced Peripheral Bus))
    Die Peripherie, wie Timer, ADC, USART usw. werden über ein eigenes Bus-Interface angesprochen. Die gerätespezifische Nutzung von Port-Pins wird als alternativ function bezeichnet. Je nach Geräteklasse sind diese einem schnellen oder auch langsameren Peripherie-Bus zugeordnet. Mit dem gesamte System von Busmatrix, AHB und APB ist es möglich, recht flexibel einzelne Geräte auf sehr verschiedene Pins des Controllers aufzuschalten.
  • NVIC (Nested Vectored Interrupt Controller)
    Die Interrupts des 32-Bit ARM sind gegenüber dem AVR 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 RCC, AHB, APB und der 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.

{{:stmfd4-1.jpg|}

mySTM32-Board-F4D

Das mySTM32-Board-F4D fungiert als Add-On und ist eine ideale Ergänzung zum Board „STM32F4-Discovery“. Sie erweitern mit diesem Add-On in einfacher Art und Weise die Möglichkeiten Ihres STM32F4-Discovery. Zusätzliche digitale und analoge Ein- und Ausgabegeräte sowie eine USB-USART Bridge für die Kommunikation mit dem PC komplettieren ihre Experimentier- und Lernplattform. Darüber hinaus sind weitere optionale Schnittstellen implementiert, so z.B. für Infrarot-Sender und -Empfänger. Desweiteren verfügt dieses Add-On über eine Schnittstelle für myAVR Produkte. Somit bietet Ihnen das mySTM32-Board-F4D die Chance, die neue 32-Bit Technologie in Kombination mit vorhandenen myAVR Produkten einzusetzen.

Besonderheiten: Das mySTM32-Board-F4D 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 mySTM32-Board-F4D 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 STM32F4-Discovery
  • Schnittstelle für myAVR Produkte
  • einfache Handhabung
  • typische Ein- und Ausgabegeräte (Taster, LEDs, usw.)
  • analoger Fotosensor zum Experimentieren mit unterschiedlichen Helligkeitsgraden
  • MircoSD-Kartenhalter
  • Raster für flexible Anwendung (2.54mm)
  • USB-UART-Bridge
  • optionale Schnittstelle: Infrarot Sender und Empfänger
  • optionale Schnittstelle: CAN Bus

»>

STM32 Peripherie Treiber

Es handelt sich hier um ein komplettes Firmware-Paket, bestehend aus Gerätetreiber für alle Standard-Peripheriegeräte der STM32F4 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 STM32F4xx 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. Sie finden diese auf der STM32F DISCOVERY Webseite unter http://www.st.com/stm32f4-discovery und die Beispiele als Firmware-ZIP.

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:

Nächstes Thema

hardware.txt · Zuletzt geändert: 2016/03/22 09:26 (Externe Bearbeitung)