So managen Sie die erste MCU, die auf Arm Cortex-M33 basiert

| Autor / Redakteur: Rich Miron * / Margit Kuther

LPC55S69-EVK: Development Board für LPC55S6x-MCUs
LPC55S69-EVK: Development Board für LPC55S6x-MCUs (Bild: NXP)

Entwickler müssen für ihre Applikationen oft ein Gleichgewicht zwischen Leistung, geringer Leistungsaufnahme und Sicherheit finden. Dies gelingt mit der Mikrocontrollerfamilie LPC55S6 von NXP.

Entwickler stehen immer wieder vor der Aufgabe, für die verschiedensten Funktionen und Anwendungen ein Gleichgewicht zwischen häufig zueinander im Widerspruch stehenden Anforderungen nach höherer Anwendungsleistung bei niedrigerer Leistungsaufnahme zu finden. Zu diesen Anwendungen zählen unter anderem das Internet der Dinge, die industrielle Automatisierung, medizinische Systeme und Verbrauchergeräte.

Das zunehmende Sicherheitsbedürfnis in solchen Anwendungen erschwert den Entwicklern die Suche nach einer einzigen Mikrocontrollerfamilie, die einer vielseitigen und immer länger werdenden Liste an gegensätzlichen Designanforderungen gerecht werden kann. Um diesen Problemen zu begegnen, hat NXP Semiconductors die Mikrocontrollerfamilie LPC55S6x eingeführt. Die Komponenten kombinieren einen leistungsstarken Universalkern mit effizienten, speziellen Hardware- und Verarbeitungs-Engines.

Erkennen und Erfüllen unterschiedlicher Anforderungen

Vernetzte Produkte haben sich rasch von relativ einfachen Systemen, bei denen sich die anspruchsvollen Entwicklungsanforderungen üblicherweise um kommunikative Aspekte drehten, zu komplexeren Systemen entwickelt. Für jede Anwendung müssen die Entwickler auf etwas anderes achten, um den besonderen Anforderungen eben dieser Anwendung gerecht zu werden. Die Forderung nach höherer Leistung und geringerer Leistungsaufnahme zieht sich jedoch noch immer wie ein roter Faden durch die meisten Anwendungsbereiche.

Intelligente Fabriken beispielsweise erfordern nicht nur leistungsstarke Komponenten mit niedriger Latenz für die Signalverarbeitung, sondern auch eine geringere Leistungsaufnahme, da die Entwickler der Fabriken immer mehr dieser Komponenten auf engem Raum verbauen. Wearables verlangen nicht nur Entwicklungen mit einer geringeren Leistungsaufnahme, um die Batterielebensdauer zu verlängern, sondern setzen immer häufiger auch Signalverarbeitungsfunktionen voraus, die für komplexere Arbeitslasten geeignet sind. In allen Anwendungssegmenten stehen Entwickler unter dem zunehmenden Druck, effizienter auf ernsthafte Bedenken bezüglich der Anfälligkeit dieser Komponenten, ihrer Netzwerke sowie von Unternehmensressourcen für unmittelbare Angriffe oder dauerhafte Bedrohungen durch Cyber-Kriminelle, kriminelle Organisationen oder sogar staatlich unterstützte Gruppen zu reagieren.

Um diesen unterschiedlichen Anforderungen zu entsprechen, mussten die Entwickler bei ihrem Design üblicherweise in einem Punkt Abstriche machen. Sie könnten Einbußen bei der Anwendungsleistung in Kauf nehmen, um durch die Verwendung eines weniger leistungsstarken Prozessors oder eine Verringerung der Taktrate die Leistungsaufnahme zu senken, oder das Tastverhältnis des Prozessors zugunsten von Energiesparmodi verringern.

Um strengen Leistungsanforderungen gerecht zu werden, könnten sie sich zu Lasten einer sehr viel höheren Leistungsaufnahme aber auch für den umgekehrten Ansatz mit leistungsstärkeren Prozessoren, höheren Taktraten und einem höheren Tastverhältnis entscheiden. Für rechenintensivere Anwendungen könnten sie einen dedizierten digitalen Signalprozessor (DSP, Digital Signal Processor) hinzufügen, um die Ausführung des Algorithmus zu beschleunigen. Dies würde jedoch zu komplexeren Designs, steigenden Kosten und einer höheren Leistungsaufnahme des Systems führen. Selbst bei einem akzeptablen Kompromiss zwischen Leistung und Leistungsaufnahme mussten sie üblicherweise kostenintensivere und komplexere Designs in Kauf nehmen, um den Sicherheitsanforderungen gerecht zu werden.

Während sich die Entwickler mit den verschiedensten Anforderungen auseinandersetzen müssen, fordern die Benutzer immer häufiger weniger beziehungsweise gar keine Kompromisse für kritische Anwendungen wie medizinische Geräte, industrielle Automatisierungssysteme oder Zahlungsgeräte für den Einzelhandel. Dank der Mikrocontrollerfamilie LPC55S6x von NXP Semiconductors müssen die Entwickler jedoch kaum noch Kompromisse eingehen. Diese Architektur kombiniert die Flexibilität eines Universalprozessors mit speziellen Verarbeitungs- und Sicherheitsfunktionen, die für neue Anwendungen benötigt werden.

Bild 1: Die Architektur der LPC55S6x-Mikrocontroller erweitert die Verarbeitungsfunktionen des Arm-Cortex-M33-Kerns um spezielle Hardwareblöcke für Signalverarbeitung, Kryptographie, sichere Speicherung und Schlüsselverwaltung und bietet etliche Peripheriebausteine.
Bild 1: Die Architektur der LPC55S6x-Mikrocontroller erweitert die Verarbeitungsfunktionen des Arm-Cortex-M33-Kerns um spezielle Hardwareblöcke für Signalverarbeitung, Kryptographie, sichere Speicherung und Schlüsselverwaltung und bietet etliche Peripheriebausteine. (Bild: NXP Semiconductors)

Hoher Funktionsumfang mit dedizierten Verarbeitungskernen

Die Mikrocontroller LPC55S66 (ein Kern) und LPC55S69 (zwei Kerne) von NXP Semiconductors, die branchenweit ersten Arm-Cortex-M33-basierenden Universal-MCUs, setzen auf die niedrige Latenz und das deterministische Verhalten der Architektur der Arm-M-Serie. Zu den Architekturverbesserungen der LPC55S6x-Komponenten gehören der leistungsstarke Powerquad-DSP-Beschleuniger des Unternehmens, seine Kryptographie-Engine CASPER (Cryptographic Accelerator and Signaling Processing Engine with RAM) sowie ein umfassendes Sicherheitssubsystem. Neben bis zu 640-KB-Flash-Speicher, bis zu 320 KB SRAM und 128 KB ROM bieten die LPC55S6x-Komponenten zahlreiche Funktionselemente, die üblicherweise für jedes Embedded-System erforderlich sind (Bild 1).

Zu diesen Elementen der LPC55S6x-Komponenten zählen unter anderem ein umfassendes Timer-Subsystem, mehrere serielle Schnittstellen, sichere DMA-Controller und bis zu 64 GPIO-Pins. Zusätzlich zu diesen digitalen Subsystemen bieten LPC55S6x-Komponenten einen Mehrkanal-16-Bit-ADC mit SAR, einen analogen Komparator und einen Temperatursensor. Eine On-Chip-PLU (Programmable Logic Unit) ermöglicht Entwicklern die Bildung von kombinatorischer und sequenzieller Logik (inklusive Zustandsmaschinen) aus den 26 Lookup-Tabellen (LUT) mit fünf Eingaben. Entwickler können auf die PLU-Register zugreifen, um die PLU direkt für kleine Logiknetzwerke zu programmieren. Oder sie können NXP-Tools verwenden, um ein größeres Netzwerk zu implementieren, das in der Registertransfersprache Verilog beschrieben ist.

Um Engpässe beim Zugriff auf die zahlreichen Subsysteme zu verhindern, verfügen die LPC55S6x-Komponenten über eine mehrschichtige Busmatrix, die auf der AHB-Architektur (Arm High-Performance Bus) und der AMBA-Architektur (Arm Advanced Microcontroller Bus Architecture) aufbaut. Die AHB-Busmatrix sorgt für eine direkte Verbindung zwischen Bus-Master und Peripheriebausteinen oder Speicher. Dieser Ansatz ermöglicht DMA-Übertragungen, um beispielsweise mit voller Geschwindigkeit fortzufahren, ohne die Leistung des Prozessorzugriffs auf den Speicher zu beeinträchtigen. In der Tat bildet die Möglichkeit, den Wirkungsgrad des Prozessors vor dem Hintergrund verschiedener Designanforderungen zu optimieren, die Grundlage der LPC55S6x-Architektur.

Der LPC55S6x-Prozessor bietet mehrere Energiesparmodi

In der LPC55S6x-Architektur bietet der Cortex-M33-Kern mehrere Funktionen, die den Entwicklern dabei helfen, verschiedene Anforderungen leichter zu erfüllen. Wie andere Komponenten seiner Klasse auch, unterstützt der LPC55S6x-Prozessor mehrere Energiesparmodi. Bei längerer Inaktivität können die Entwickler die Komponente in den Power-Down-Modus versetzen. In diesem Modus wird der SRAM vollständig erhalten und es werden lediglich 15,4 Mikroampere (µA) verbraucht. Im Deep-Power-Down-Modus werden nur noch 4 KB des SRAM mit Strom versorgt und die Leistungsaufnahme liegt bei etwa 0,59 µA. Sleep- und Deep-Sleep-Modus schalten den Prozessor ab und bieten dabei verschiedene Betriebsstufen für Peripheriebausteine und Speicher: Der Sleep-Modus bietet umfassenden Betrieb bei einer Leistungsaufnahme von 2,7 Milliampere (mA), wohingegen die Peripheriebausteine im Deep-Sleep-Modus per Clock-Gating aus- und eingeschaltet werden, um die Leistungsaufnahme auf etwa 110 µA zu senken.

Funktionen für mehr Leistung und Sicherheit

Außer den Energiesparmodi erweitert die LPC55S6x-Architektur die Unterstützung für verschiedene Designanforderungen um integrierte Funktionen zur Verbesserung von Leistung und Sicherheit. Diese in den primären Cortex-M33-Kern integrierten Funktionen umfassen Arm-TrustZone-Sicherheitserweiterungen (SECEXT), eine Memory Protection Unit (MPU), eine Gleitkommaeinheit (FPU, Floating Point Unit) gemäß IEEE 754 und eine Embedded Trace Macrocell (ETM). Zusätzlich enthält der primäre Kern die Kryptographie-Engine CASPER und den Powerquad-Beschleuniger für DSP sowie für SIMD-Operationen (Single Instruction Multiple Data).

Hinweis: Diese zusätzlichen Funktionen sind im zweiten Cortex-M33-Kern des Dual-Core-Mikrocontrollers LPC55S69 nicht enthalten.

Details zum Powerquad-DSP-Beschleuniger

Jedes dieser integrierten Subsysteme und Architekturmerkmale bietet Funktionen mit detaillierten Beschreibungen, die weit über den Umfang dieses Artikels hinausgehen. So ist beispielsweise der Powerquad-DSP-Beschleuniger für sich ein ausgefeilter Coprozessor, der Funktionen zur Signalverarbeitung unabhängig ausführen und währenddessen als Bus-Master auf den Speicher zugreifen kann.

Bild 2: Die Mikrocontrollerfamilie LPC55S6x verwendet den PowerQuad-Coprozessor des Unternehmens, der spezielle Engines zur beschleunigten Ausführung von Algorithmen nutzt, die üblicherweise für Signalverarbeitungsanwendungen benötigt werden.
Bild 2: Die Mikrocontrollerfamilie LPC55S6x verwendet den PowerQuad-Coprozessor des Unternehmens, der spezielle Engines zur beschleunigten Ausführung von Algorithmen nutzt, die üblicherweise für Signalverarbeitungsanwendungen benötigt werden. (Bild: NXP Semiconductors)

Intern kombiniert der Powerquad-Beschleuniger mehrere Register und Schnittstellen mit einer Reihe von Hardware-Engines für wichtige Signalverarbeitungsfunktionen, unter anderem schnelle Fourier-Transformation (FFT), diskrete Kosinustransformation (DCT), unendliche Impulsantwort (IIR), endliche Impulsantwort (FIR)) und dem CORDIC-Algorithmus (COordinate Rotation DIgital Computer), der zur effizienten Berechnung trigonometrischer Funktionen verwendet wird (Bild 2).

Mit dem Powerquad-Beschleuniger können Entwickler komplexe Signalverarbeitungsoperationen ausführen, ohne die Fähigkeit des Host-Prozessors einzuschränken, auf Echtzeitereignisse zu reagieren oder eine längere Abfolge von Operationen abzuschließen. Der Host-Prozessor setzt einfach Powerquad-Register mit der erforderlichen Signalverarbeitungsfunktion und gibt die Speicheradressen für Ausgangs-, Ziel- und Arbeitsspeicherregionen an. Sobald er aufgerufen wurde, agiert der Powerquad-Beschleuniger als echter Coprozessor, der in seiner Rolle als Bus-Master unter Verwendung der AHB-Matrix 128-Bit-Speicherübertragungen ausführt. In der Zwischenzeit kann sich der Host-Prozessor umgehend wieder seinen Hauptverarbeitungsaufgaben widmen, wobei er regelmäßig ein Powerquad-Busy-Bit abfragt oder einfach auf einen Interrupt reagiert, um die Ergebnisse abzufragen, sobald der Powerquad mit seiner Arbeit fertig ist.

Für Entwickler sind die Powerquad-Operationen jedoch zum Großteil transparent. Entwickler nutzen die Standard-API für die DSP-Bibliothek des Arm-Cortex-Microcontroller-Software-Interface-Standards (CMSIS). Die den Powerquad unterstützende Version der Bibliothek von NXP, die im Software Development Kit (SDK) MCUXpresso von NXP Semiconductors enthalten ist, ersetzt mathematische Low-Level-Funktionen, die in die Software implementiert sind, durch Aufrufe der Powerquad-API.

Berechnen einer komplexen Fourier-Transformation

Um etwa eine komplexe FFT zu berechnen, verwenden Entwickler die standardmäßige CMSIS-DSP-Funktion arm_cfft_q31() mit Daten im Q-Format. Dieses Format verwendet bei der Darstellung einer 32-Bit-Festpunktzahl ein Bit für das Vorzeichen und 31 Bit für den Exponenten. In einer reinen Softwareimplementierung führt das Aufrufen der Funktion arm_cfft_q31() dazu, dass wiederum die CMSIS-DSP-FFT-Schmetterlingsfunktion arm_radix4_butterfly_q31() und die Endfunktion arm_cfft_radix4by2_q31() – beziehungsweise ihre inversen Versionen für komplexe inverse FFTs – der Software aufgerufen werden.

Bild 3: Das Software-Entwicklungskit MCUXpresso beschleunigt die Ausführung gebräuchlicher DSP-Algorithmen erheblich und behält dabei die Kompatibilität mit High-Level-Aufrufen der DSP-Bibliothek des Arm CMSIS bei, indem es CMSIS-DSP-Low-Level-Funktionen transparent durch Aufrufe des PowerQuad-Beschleunigers ersetzt.
Bild 3: Das Software-Entwicklungskit MCUXpresso beschleunigt die Ausführung gebräuchlicher DSP-Algorithmen erheblich und behält dabei die Kompatibilität mit High-Level-Aufrufen der DSP-Bibliothek des Arm CMSIS bei, indem es CMSIS-DSP-Low-Level-Funktionen transparent durch Aufrufe des PowerQuad-Beschleunigers ersetzt. (Bild: NXP Semiconductors)

Bei Verwendung der DSP-Bibliothek und des Powerquad-Beschleunigers von NXP jedoch führt das normale Aufrufen von arm_cfft_q31() stattdessen zum Aufrufen von PQ_TransformCFFT(), wodurch dieselbe Berechnung in der Hardware durchgeführt wird. Das führt nicht nur dazu, dass der Cortex-M33-Kern entlastet wird, sondern auch zu einer schnelleren Ausführung von DSP-Funktionen (Bild 3).

Ein weiterer Coprozessor, die Kryptografie-Engine CASPER, entlastet den Hauptprozessor auf ähnliche Weise von der hohen Rechenlast im Zusammenhang mit asymmetrischen kryptographischen Algorithmen. CASPER führt Algorithmen wie den RSA (Rivest–Shamir–Adleman)-, den Diffie-Hellman-, den ECC (Elliptic-Curve-Cryptography)- und den ECDSA- (Elliptic-Curve-Digital-Signature) Algorithmus bis zu achtmal schneller aus als die entsprechende Kryptografiesoftware auf dem Cortex-M33-Kern. Um die Ausführung symmetrischer Algorithmen zu beschleunigen, verfügen die LPC55S6x-Mikrocontroller außerdem über Hardwareblöcke für AES-256 (Advanced Encryption Standard 256) und SHA-2 (Secure Hash Algorithm 2).

Die Kombination aus diesen Hardwareblöcken und der CASPER-Engine bietet den Entwicklern hardwarebasierenden Support für die Kryptografiealgorithmen, die üblicherweise zur Authentifizierung und Datenverschlüsselung verwendet werden. Dies ist für den Schutz des Datenaustauschs zwischen vernetzten Produkten erforderlich. Dabei reicht der Support der LPC55S6x-Familie für Sicherheitsfunktionen weit über den Support für grundlegende Kryptografiealgorithmen hinaus, um die hardwarebasierenden Sicherheitsfunktionen bereitstellen zu können, die für umfassende Lebenszyklussicherheit erforderlich sind.

Systementwicklung verschiedenster Hardkonfigurationen

Mit dem Evaluierungskit LPC55S69-EVK können sich Entwickler rasch einen Überblick über die Kryptografie-Engines, DSP und die allgemeinen Verarbeitungsfunktionen der MPC55S6x-Mikrocontroller verschaffen. Das zur Beschleunigung der Entwicklung mit diesen Komponenten entwickelte LPC55S69-EVK bietet einen LPC55S69-Mikrocontroller mit zwei Kernen, den Beschleunigungsmesser MMA8652FCR1, LEDs, Tasten, eine Debug-Schnittstelle sowie Support für mehrere Erweiterungsoptionen wie Arduino UNO, MikroElektronica Click und die Digilent PMod-Zusatzhardware.

Abbildung 4: Das um einen LPC55S69-Dual-Core-Mikrocontroller herum aufgebaute Evaluierungskit LPC55S69-EVK von NXP Semiconductors bietet mehrere Jumper und Steckleisten, die den Entwicklern die problemlose Vorbereitung verschiedener Konfigurationen und die Untersuchung von Leistungsdetails wie beispielsweise des Stromverbrauchs des Mikrocontrollers ermöglichen.
Abbildung 4: Das um einen LPC55S69-Dual-Core-Mikrocontroller herum aufgebaute Evaluierungskit LPC55S69-EVK von NXP Semiconductors bietet mehrere Jumper und Steckleisten, die den Entwicklern die problemlose Vorbereitung verschiedener Konfigurationen und die Untersuchung von Leistungsdetails wie beispielsweise des Stromverbrauchs des Mikrocontrollers ermöglichen. (Bild: NXP)

Mehrere Jumper und Steckleisten ermöglichen Entwicklern die problemlose Vorbereitung verschiedener Hardwarekonfigurationen und die genaue Untersuchung der Leistungsdetails (Bild 4). Wenn es den Entwicklern beispielsweise um den Stromverbrauch geht, können sie den Versorgungsstrom des LPC55S69 ganz einfach messen, indem sie ein Voltmeter zur Messung des Spannungsabfalls an der Steckleiste P12 verwenden.

Für die Entwicklung können Anwender MCUXpresso verwenden, das eine integrierte Entwicklungsumgebung und SDK eint. MCUXpresso nutzt spezielle Hardware des LPC55S6x, etwa die bereits erwähnte Powerquad-Funktion. Des Weiteren wird das LPC55S69-EVK von IAR- und Keil-IDEs unterstützt. Zusätzlich bietet NXP kostenlose Softwarepakete mit Beispielcode an, die wichtige Softwaredesignmuster zur Verwendung der LPC55S6x-Funktionen demonstrieren.

Fazit: Entwickler müssen für die verschiedensten Anwendungen wie das IoT, die industrielle Automatisierung, medizinische Systeme und Verbrauchergeräte ein Gleichgewicht zwischen Leistung, geringer Leistungsaufnahme und Sicherheit finden. Wie hier beschrieben, bietet der leistungsstarke Universalkern der Mikrocontrollerfamilie LPC55S6x mit speziellen Hardware- und Verarbeitungs-Engines den Entwicklern eine Möglichkeit, den Anforderungen hinsichtlich leistungsstarker Spezialfunktionen gerecht zu werden, ohne dabei die Leistungsaufnahme übermäßig ansteigen zu lassen.

* Rich Miron ist Applications Engineer bei Digi-Key.

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46083089 / Embedded Systeme)