www.wikidata.de-de.nina.az
Der Cortex M3 ist ein Modell aus der Arm Cortex M Familie Armv7 M fur Mikroprozessoren von ARM Die Armv7 Architektur wurde ab dem Jahr 2004 eingefuhrt 1 und kann als Nachfolger fur die ARMv6 Architektur im Bereich der Mikrocontroller betrachtet werden ARM Cortex M3 von MVSILICON LogoInhaltsverzeichnis 1 Hintergrund 2 Prinzipieller Aufbau 3 Sprungvorhersage 4 Thumb2 5 Einfach gehaltenes Programmiermodell 6 Peripherie 7 Vectored Interrupt Controller 8 Registersatz 9 Silizium 10 Arm Cortex Microcontroller Software Interface Standard CMSIS 11 Weblinks 12 EinzelnachweiseHintergrund BearbeitenArm Architekturen sind im Laufe der Zeit immer komplexer geworden Der erste populare Arm Prozessor war und ist immer noch der ARM7 gefolgt vom ARM9 und ARM11 in unterschiedlichsten Ausfuhrungen Die Einsatzgebiete fur diese drei Prozessorfamilien lassen sich in etwa folgendermassen einteilen ARM7 Dies war ein Selbstlaufer im Bereich der Mikrocontroller Ursprunglich nicht fur den Einsatz in Mikrocontrollern vorgesehen hat sich dieser Prozessor dort etabliert Eingesetzt werden ARM7 basierte Mikrocontroller dort wo etwas mehr Rechenleistung erforderlich ist als z B ein 8 Bit Prozessor liefern kann ARM9 Bietet weit mehr Rechenleistung als ARM7 und wird u a in Echtzeitsystemen eingesetzt Hier kommen Mechanismen wie z B MMU und MPU zum Einsatz ARM11 High End Anwendungen im Bereich eingebetteter Systeme die sehr viel Rechenleistung erfordern Seine neue Architektur teilte ARM in drei Zweige auf um Nachfolger fur alle drei Bereiche zu schaffen Diese Aufteilung sollte einen noch breiteren Einsatz der neuen Architektur en in der Welt der Embeddedsysteme ermoglichen Cortex A Application betriebssystembasierte Anwendungen Cortex R Realtime Echtzeit anwendungen Cortex M Microcontroller Cores fur Mikrocontroller Die Cortex M3 Architektur kann somit als Nachfolger fur den ARM7 betrachtet werden und stellt mehr Rechenleistung als dieser bei geringerer Komplexitat des Programmiermodells sowie kleinerer Chipflache zur Verfugung Andere Untergruppen wie z B der M1 sind z B fur die Implementierung auf einem FPGA verfugbar Prinzipieller Aufbau BearbeitenDer Entwurf der von ARM entwickelten Cortex M3 Architektur zielt auf den Einsatzbereich der klassischen 8 und 16 Bit Mikrocontroller durch einen leistungsfahigeren aber zugleich vom Programmiermodell her weniger komplexen Prozessor Wie alle vorherigen Arm Architekturen hat auch der M3 intern eine 32 Bit Architektur arbeitet aber ausschliesslich mit dem neuen Thumb2 Befehlssatz Andere ARM Cores konnen zwischen ARM und Thumb Befehlssatz umschalten Herzstuck des Cortex M3 Prozessors ist der Cortex M3 Kern mit dreistufiger Pipeline basierend auf der Harvard Architektur Es existieren also zwei getrennte Bussysteme und zwei getrennte Speicher zum Laden von Daten und Befehlen d h der Prozessor kann gleichzeitig sowohl Daten als auch Befehle lesen bzw Daten in den Speicher zuruckschreiben Nach aussen hin Programmiermodell ist der Cortex M3 allerdings ein Von Neumann Modell das bedeutet dass sein ganzer gemeinsam benutzter Adressraum linear programmiert werden kann Bei einem 32 Bit Prozessor ist der verfugbare Adressraum mit 232 Adressen fur einen Mikrocontroller uberdimensional gross Daher konnen beide Speicher in einem gemeinsamen Adressraum angesprochen werden Die Programmierung wird somit erleichtert da Daten welche im Flash Programmspeicher abgelegt werden zum Beispiel Konstanten ohne zusatzlichen Aufwand direkt linear adressiert werden konnen In den Kern des Cortex M3 wurden einige neue Features integriert So gehoren ein echter Nested Vectored Interrupt Controller eine Art Sprungvorhersage und Multiplikation in nur einem Takt dazu Sprungvorhersage BearbeitenZum Laden eines Befehls werden nur 16 Bit benotigt das Speicherinterface ist aber 32 Bit breit und es werden immer zwei Befehle gleichzeitig geladen fetch Ein Befehl wird jeweils zwischengespeichert Im Falle eines Sprungs ist erst in der Exec Stufe vgl Pipelines bekannt ob der Sprung durchgefuhrt werden soll oder nicht Wenn nicht wird wie gehabt weitergearbeitet Wenn ja wird der gepufferte Befehl in die Pipeline geladen und damit weitergearbeitet Somit geht bei der dreistufigen Pipeline nur ein Takt anstelle von zwei verloren Thumb2 BearbeitenDer Prozessorkern arbeitet ausschliesslich mit dem neuen Befehlssatz Thumb2 wodurch er um einiges effizienter arbeitet als altere ARM Prozessoren mit Thumb bezogen auf die Ausfuhrungszeit und mit um etwa 30 2 kompakterem Code operiert als altere ARM Prozessoren im ARM Mode Der Thumb2 Befehlssatz umfasst sowohl 16 als auch 32 Bit Befehle die darauf ausgelegt sind moglichst effizient mit Compilern zu arbeiten d h z B C C Code umzusetzen aber naturlich auch unter Assembler verwendet werden konnen Fast alle klassischen ARM Befehle sind wie Thumb nur 16 Bit lang Das ermoglicht das Laden zweier Befehle in nur einem Takt Weitere grosse Neuerungen in Thumb2 sind z B native bitfield manipulation Hardware Division und If Then Anweisungen Letztere ermoglichen eine bedingte Ausfuhrung von Code ohne Sprunge Einfach gehaltenes Programmiermodell BearbeitenZur Programmierung einfacher Aufgaben werden keine genauen Kenntnisse des internen Aufbaus und der Struktur des Kerns und auch keine Assemblerkenntnisse zum Programmieren benotigt Die Programmierung von Interrupthandlern wird durch das hardwarebasierte Interruptschema erleichtert Peripherie BearbeitenDer Cortex M3 bringt bereits einige Peripherien mit sich So sind z B ein echter Vectored Interrupt Controller VIC Memory Protection Timer und Debug und Trace Moglichkeiten in den Prozessor integriert Zusatzliche Peripherien wie UART weitere Timer PWM I2C SPI usw werden von den Chipherstellern entwickelt oder als IP Intellectual Property von ARM dazugekauft Diese lassen sich wie gewohnt uber Register ansprechen Vectored Interrupt Controller BearbeitenMit der Implementierung des NVIC verwendet der Cortex M3 eine echte Vektortabelle d h dort stehen Sprungadressen Vektoren statt der zuvor bei ARM basierten Controllern ublichen vollstandigen Befehle Uber sein direktes Interface zum Core konnen diese Vektoren Adressen sehr schnell geladen und angesprungen werden Der Interruptcontroller ist beim Cortex M3 sehr eng mit dem Kern verbunden Der Prozessor sichert den Kontext automatisch Weitere Besonderheiten wie Late Arriving Interrupt und Tail Chaining bei dem eine POP PUSH Sequenz eingespart wird vgl ARM7 ergeben ein sehr effizientes Interruptsystem Allgemein kann jedem Interrupt eine Prioritat zugewiesen werden d h die Prioritat wird nicht uber die Position in der Vektortabelle fest vorgegeben Die Prioritaten konnen in Gruppen organisiert werden Interrupts in verschiedenen Gruppen konnen sich gegenseitig unterbrechen innerhalb einer Gruppe unterbricht ein Interrupt hoherer Prioritat keinen niederpriorigen Das ist wichtig um Deadlocks bei gemeinsam verwendeter Hardware zu vermeiden Registersatz BearbeitenKlassische ARM Cores besitzen einen Satz von uber 37 32 Bit Registern die sich auf verschiedene Modi aufteilen Je nach Modus sind verschiedene Register sichtbar Das erspart das Sichern von Registern z B fur den FIQ Schattenregister R8 bis R14 uberdecken die Register aus dem User Mode Der Cortex M3 besitzt nur noch einen Satz von Registern R0 bis R12 SP LR PC und CPSR und einen zusatzlichen Stackpointer SP Beim Sprung in eine ISR sichert der Core automatisch die acht Register PC CPSR LR R0 bis R3 und R12 Silizium BearbeitenARM ist ein Fabless Unternehmen stellt also selbst keine Chips her sondern entwickelt Prozessorarchitekturen auch Peripherie und lizenziert diese an andere Firmen Das Startup Unternehmen Luminary Micro nahm die erste Implementierung von Cortex M3 in einen Mikrocontroller vor Luminary Micro ist ebenfalls ein Fabless Unternehmen und Hersteller der Stellaris Mikrocontrollerfamilie LM3S811 LM3S828 u a Eine Vielzahl von Peripherien wurde auf dem Chip implementiert neben den gangigen Elementen wie UART Timer etc findet sich z B eine komplexe 3 Phasen Motorsteuerung Die STM32 Familie von STMicroelectronics basiert ebenfalls auf dem Cortex M3 Kern von ARM und umfasst viele Peripherieelemente zum Beispiel zur 3 Phasen Motorsteuerung Hall bzw Inkrementalgeber Interface DMA 12 Bit ADC sowie einiges an Standardperipherien Aspekte dieser Implementierung sind z B das vom Core getrennte Debug Modul das auch bei fehlerhafter Programmierung des Clock Trees den Zugriff auf den Core ermoglicht sowie eine Clock Security Schaltung die einen Ausfall der externen Takts z B des Quarzes bemerkt und auf einen internen Oszillator umschalten kann ohne dass der Core absturzt Ein sauberes Programmiermodell fur die Peripherals und ein System aus Headerfiles fur das Registermapping das eine einfache Programmierung des Cores auch ohne Driver Library ermoglicht runden diesen Mikrocontroller ab Arm Cortex Microcontroller Software Interface Standard CMSIS BearbeitenUm eine gemeinsame Basis fur die Programmierung von Cortex M basierten Mikrocontrollern zu ermoglichen wurde am 12 November 2008 von ARM eine Standard HAL veroffentlicht Sie ist in Zusammenarbeit mit den Partnern der Industrie entstanden und bietet auf dem Layer1 der Abstraktion der Register sowie deren Abbildung auf das Speicherlayout eine gemeinsame einfach zu verwendende Programmierbasis Bisher gab es zu der Vielzahl von Implementationen jeweils eigene Ansatze des Programmiermodells von defines auf einzelne Register bis hin zu komplexen Strukturen Die HAL verwendet das Konzept der komplexen Strukturen wobei fur jedes Peripheral eine Struktur existiert welche die Register des jeweiligen Peripherals komplett abbildet Die Strukturen werden an die Adressen der Peripherals gemappt was den Zugriff Peripheral Register Value bzw value Peripheral Register ermoglicht Ein Layer 2 ein sehr effizienter Layer aus Inline Funktionen bietet weitere Helferfunktionen zum einfachen NVIC Handling sowie ein SystemTick Timer Setup welches auf die Belange von Echtzeitbetriebssystemen abgestimmt ist Weblinks BearbeitenWhitepaper von ARM zum Cortex M3 PDF Datei 345 kB Einzelnachweise Bearbeiten Cortex M Arm Limited abgerufen am 29 November 2020 englisch ARM Architecture Reference Manual Thumb 2 Supplement ARM Limited Dezember 2004 abgerufen am 8 November 2022 englisch Normdaten Sachbegriff GND 1129794318 lobid OGND AKS Liste der ARM ProzessorenARM1 Familie ARMv1 ARM1 ARM2 Familie ARMv2 ARM2 ARMv2a ARM250 ARM3 Familie ARMv2a ARM2a ARM6 Familie ARMv3 ARM60 ARM600 ARM610 ARM7 Familie ARMv3 ARM700 ARM710 ARM710a ARM7100 ARM7500 ARM7500FE ARM7TDMI Familie ARMv4T ARM7TDMI ARM7TDMI S ARM710T ARM720T ARM740T ARMv5TEJ ARM7EJ S StrongARM Familie ARMv4 SA 110 SA 1110 ARM8 Familie ARMv4 ARM810 ARM9TDMI Familie ARMv4T ARM9TDMI ARM920T ARM922T ARM940T ARM9E Familie ARMv5TE ARM946E S ARM966E S ARM968E S ARM996HS ARMv5TEJ ARM926EJ S ARM10E Familie ARMv5TE ARM1020E ARM1022E ARMv5TEJ ARM1026EJ S ARM11 Familie ARMv6 ARM1136J S ARM1136JF S ARMv6T2 ARM1156T2 S ARM1156T2F S ARMv6KZ ARM1176JZ S ARM1176JZF S ARMv6K ARM11 MPCore Cortex A Familie ARMv7 A Cortex A5 Cortex A7 Cortex A8 Cortex A9 Cortex A12 Cortex A15 Cortex A17 ARMv8 A Cortex A35 Cortex A53 Cortex A57 Cortex A72 Cortex A73 Cortex M Familie ARMv6 M Cortex M0 Cortex M0 Cortex M1 ARMv7 M Cortex M3 Cortex M4 ARMv8 M Cortex M23 Cortex M33 Cortex M35P ARMv8 1 M Cortex M55 Cortex R Familie ARMv7 R Cortex R4 Cortex R4F Abgerufen von https de wikipedia org w index php title Arm Cortex M3 amp oldid 234189709