|
|
ARMDie Firma ARM stellt selbst keine Prozessoren/Controller her, sondern entwickelt nur sogenannte "IP-Cores", die von Herstellern wie Atmel, Infineon, NXP, TI und vielen anderen lizenziert werden. Diese Hersteller ergänzen den Core um Speicher und Peripherie. Der Vorteil dieses Modells ist, dass dadurch sehr viele Prozessoren mit unterschiedlichster Ausstattung verfügbar sind, die alle mit dem selben Befehlssatz (und damit dem selben Compiler) programmierbar sind. In diesem Artikel geht es NUR um die ARM Cortex-M Microcontroller, nicht jedoch um ARM Cortex-A Prozessoren. [Bearbeiten] BefehlssatzAllen ARM-Cores gemeinsam ist die 32 Bit RISC-Architektur. Manche ARM-Cores besitzen neben dem 32 Bit ARM-Befehlssatz noch einen zusätzlichen, kleineren 16 Bit-Befehlssatz (Thumb-Modus, erkennbar am T in der Bezeichnung, z. B. ARM7TDMI). Der Vorteil des Thumb-Befehlssatzes ist der geringere Platzbedarf des Codes; der Nachteil ist die etwas niedrigere Geschwindigkeit. Die ARMv7M-Architektur (man beachtet das v), also z. B. Controller mit Cortex-M3-Kern, unterstützen ausschließlich den Thumb2-Befehlssatz. [Bearbeiten] ARM Cortex MSeit wenigen Jahren sind ARM-basierte Mikrocontroller erhältlich, die Aufgrund der vergleichbar einfachen Beschaltung und mit einer deutlich größeren Power eine echte Alternative zu 8-Bit-Controllern darstellen. Es gibt folgende Varianten dieses Mikrocontroller "Kerns", aufgeführt vom Energieeffizientesten zum Leistungsfähigsten: [Bearbeiten] ARM Cortex M0Als günstigere Variante gibt es die Cortex-M0 Cores mit deutlich kleinerem Befehlssatz, wie z.B. den LPC1xxx. Diese werden beispielsweise in folgenden Controllern eingesetzt:
Für die M0-Familie ist für den LPC1xxx bereits eine Code-Base und ein preisgünstiges Entwicklungskit vorhanden. [Bearbeiten] ARM Cortex M0+Inzwischen gibt es auch eine optimierte Version des Cortex-M0 - die Cortex-M0+ Cores. Diese können (optional) einige Features der Cortex-M3 Serie beeinhalten, wie z.B eine MPU:
[Bearbeiten] ARM Cortex M3Eine sehr aktuelle Variante des ARM ist die Cortex-M3 Familie die LPC1xxx, als eine echte Konkurrenz zu 8- und 16-Bit Mikrocontrollern wie dem AVR und MSP430 gedacht ist. Der Cortex-M3 enthält einige Verbesserungen gegenüber dem ARM7TDMI-Kern und ist bereits dabei diesen zu ersetzen. Controllerfamilien dieser Klasse sind:
Für den LPC1xxx ist bereits eine Code-Base und ein preisgünstiges Entwicklungskit vorhanden. [Bearbeiten] ARM Cortex M4Als hoch performante Variante gibt es dann noch die Cortex-M4 Cores welche teilweise mit einer FPU ausgestattet sind. Diese werden beispielsweise in folgenden Controllern eingesetzt:
[Bearbeiten] ARM7Eine schon etwas ältere Controller-Familie ist der ARM7TDMI. Core. Controllerfamilien dieser Klasse sind:
Mehr Informationen zur ARM-Architektur finden sich in der Wikipedia, weiterführende Links in der Linksammlung. [Bearbeiten] Compiler[Bearbeiten] BasicVon Mikroe gibt es Basic http://www.mikroe.com/mikrobasic/arm/ [Bearbeiten] PascalVon Mikroe gibt es Pascal http://www.mikroe.com/mikropascal/arm/ [Bearbeiten] GCCEiner der beliebtesten Compiler für ARM-Prozessoren ist der GCC. Er kann sowohl ARM- als auch Thumb-Code erzeugen. Eine unvollständige Liste einiger Distributionen folgt: [Bearbeiten] Fertige GCC Binaries für Windows:- WinARM (wird derzeit nicht gepflegt) - GNUARM (Linux, Windows, wird derzeit nicht gepflegt), - Yagarto (Windows, mit Eclipse-Integration), - GNU Tools for ARM Embedded Processors (bereitgestellt von ARM selbst auf launchpad.net). [Bearbeiten] Fertige GCC Binaries für Linux (und MacOS X):- ARM GCC toolchain for Linux and Mac OS X - GNUARM (Linux, Windows, wird derzeit nicht gepflegt) - CodeSourcery CodeBench Lite (alter Name: Codesourcery G++ lite, für Linux, Windows) - GNU Tools for ARM Embedded Processors (bereitgestellt von ARM selbst auf launchpad.net).
Die im Netz häufig anzutreffende summon-arm Toolchain hat einen der seltenen Compiler-Bugs [4] und sollte daher nicht verwendet werden, wenn man floatingpoint-Typen einsetzen möchte. Egal ob mit oder ohne FPU. Beim Einsatz des gcc in Verbindung mit in C geschriebenem startup-Code bei den Optimierungslevels "-O2" und "-O3" muss zusätzlich "-fno-gcse" gesetzt werden, da ansonsten die von der CPU benötigte NVIC-Tabelle(n) und zugehörige Funktionen u.U. nicht so aussehen wie sie sollten. [Bearbeiten] IDEsKostenlose Entwicklungsumgebungen:
Kommerzielle Entwicklungsumgebungen (zum Teil kostenlos mit Einschränkungen) für ARM-basierte Mikrocontroller sind z. B. :
[Bearbeiten] JTAG/SWDAlle ARM-basierten Prozessoren verwenden ein einheitliches JTAG-Interface, über das Debugging und Speicherzugriff erfolgen kann. Nicht standardisiert sind allerdings die Verfahren zum Beschreiben des Flash-ROMs, deshalb muss man beachten ob die verwendete JTAG-Software Programmierroutinen für den jeweiligen Controller besitzt. Es gibt Mikrocontroller (z.B. EFM32 von Energy Micro) welche NUR über SWD (Serial Wire Debugg) programmiert werden können. [Bearbeiten] Günstige Beispiele zum StartenEin einfacher JTAG-Adapter für den Parallelport ist der "Wiggler"-kompatible, den man selbst bauen kann oder z. B. im Embedded Projects Shop für € 10,00 bestellen kann. Als Software lässt sich unter Windows und Linux OpenOCD (zusammen mit GDB) oder Crossworks ARM verwenden. Für USB gibt es hier einen ebenfalls OpenOCD-kompatiblen JTAG-Adapter zum Preis von ca 45€. Von NXP sind preiswerte Entwicklungskits (ca. 25€ für Evaluation-Board incl. USB-JTAG Programmer und Debugger) erhältlich z.B. Watterott. Siehe dazu auch die Dokumentation von NXP zu den LPCXpresso-Entwicklungskits (PDF), oder diese Beschreibung. Von ST gibt es günstige Entwicklungskits (ca. 20€), mit integriertem ST-Link (Debugger). Zum Beispiel das STM32F4 Discovery Board welches z.B. bei Thinkembedded erhältlich ist. Von Energymicro gibt es Starter Kits mit integriertem J-Link (Debugger) ab ca. 50 € z.B. das EFM32 Tiny Gecko Starter Kit bei Mouser Der J-Link-"Emulator" von Segger wird von vielen Softwarepaketen unterstützt und ist für den "nicht-kommerziellen" Einsatz von Studenten, Funkamateuren und Hobby-Bastler für ca. €50.- erhältlich (J-Link-Edu). Sein Umfang ist dabei auf das Flashen des Speichers und das Debuggen beschränkt. Die Trace-Option wie sie bei der PRO-Variante zur Verfügung steht, ist nicht vorhanden. Für den Preis (05/2013) bekommt man jedoch ein ausgewachsenes Werkzeug mit breiter Unterstützung und der Möglichkeit sowohl SWD als auch JTAG in einem Gerät vereint zu haben. Der ULINK2 von Keil/ARM ist ebenfalls ein wirklich gutes Gerät. Leider ist er nicht ganz so günstig und seine Zusammenarbeit beschränkt sich auf die Arm/Keil IDE µVision. Er benötigt jedoch keine speziellen USB-Treiber sondern nutzt geschickt die Funktionalität der HID-Treiber des Betriebssystems. Das macht ihn sofort auf jedem Windows-Betriebssystem einsatzbereit. Als Alternative zum Beschreiben des Flash über JTAG ist oft ein serieller Bootloader im Controller enthalten. Bei ST werden sie über einen speziellen Pin der MPU aktiviert und sind dank Kompression und das intelligente entfernen redundanter Information, bei der Übertragung genauso schnell wie JTAG/SWD Adapter. [Bearbeiten] CMSIS - ARM Cortex Software LibariesCMSIS - Cortex Microcontroller Software Interface Standard Der ARM Cortex Microcontroller Software Interface Standard (CMSIS) ist ein herstellerunabhängiger Hardware Abstraction Layer für die Cortex-M-Prozessor -Serie. Die CMSIS ermöglicht konsistente und einfache Software-Schnittstellen für den Prozessor und die Peripherie, und vereinfacht damit die Software-Wiederverwendung. Die CMSIS besteht aus folgenden Komponenten:
Der Standard ist für Cortex-M-Mikrocontroller skalierbar: Von der kleinsten 4 KB MCU bis zu MCUs mit anspruchsvoller Kommunikations-Peripherie wie Ethernet oder USB. Der Speicherbedarf für die Core Peripheral Funktionen bedarf weniger als 1 KB-Code und weniger als 10 Bytes RAM. Beispiele:
Mehr Informationen unter: [Bearbeiten] Freie Software[Bearbeiten] ARM/XSCALE/CORTEX Instruction Set SimulatorDie Firma Lauterbach bietet unter der Artikelnummer LA-8809 einen Instruction Set Simulator für ARM Cores an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenen Debugsymbole. Der Simulator unterstützt alle gängigen ARM Derivate und lädt alle üblichen Debugformate, wie die des RealView, IAR und TI Compilers, oder der freien GCC Tools. Zum Simulator gibt es entsprechende zugehörige Debugtools, die allerdings käuflich zu erwerben sind. Weblinks: [Download area mit ARM/XSCALE/CORTEX Simulator]
[Bearbeiten] Siehe auch
[Bearbeiten] Weblinks
[Bearbeiten] Literatur
[Bearbeiten] Artikel aus der Kategorie ARMARM • ARM Bitbanding • ARM GCC toolchain for Linux and Mac OS X • ARM MP3/AAC Player • ARM Selektor • ARM-DevCpp • ARM-Simulation • ARM-elf-GCC-Tutorial • AT91-TWI • AT91SAM • AT91SAM7S mit OpenOCD programmieren • AT91SAM9260 • CentiPad • Cortex-A • Cortex-M3 • DMA • EFM32 • Einstieg in die ARM Entwicklung • JTAG • LPC2000 • Mikocontroller Lib • STM32 • TNKernel • UsbDisplay • Using arm-elf-run • XMC4500 • XMCxxxx
|