Speicher in Embedded-Systemen auf MCU-Basis benötigen einerseits genügend RAM, um alle flüchtigen Variablen zu speichern, Puffer zu erstellen und verschiedene Anwendungsstapel zu managen. Neben RAM braucht ein Embedded-System aber auch einen Speicherort für den Anwendungscode, nicht flüchtige Daten und Konfigurationsdaten. Hier die richtige Lösung zu finden, kann für Entwickler eine echte Herausforderung darstellen.

Wenn es um eine Speicherkomponente für ein Embedded-System geht, ist die erste und häufigste Überlegung der Einsatz eines EEPROM-Speichers. Das ist ein nicht flüchtiger Speicher, der häufig für das Speichern von Systemkonfigurationsparametern für eine Embedded-Anwendung zum Einsatz kommt. Ein Gerät, das über CAN-Bus in ein Netzwerk eingebunden ist, kann beispielsweise die CAN-ID im EEPROM speichern.

CAT24C32WI-GT

Bild 1: CAT24C32WI-GT3 ist ein 1-Kbit-EEPROM von ON Semiconductor, der über einen I2C- oder SPI-Port an einen Mikrocontroller angeschlossen werden kann. On Semiconductor

Das EEPROM hat verschiedene Eigenschaften, die diesen Speichertyp für Entwickler von Embedded-Systemen zu einer guten Wahl machen: Der Speicher benötigt wenig Platz, ist relativ preiswert und hat typische Bitraten, die von 100 bis 1000 kbit/s reichen. Außerdem verfügt er über eine standardisierte Schnittstelle und unterstützt in der Regel I2C- und SPI-Schnittstellen.

Eckdaten

Heutzutage steht Entwicklern eine große Auswahl an nicht flüchtigen Speicherkomponenten zur Verfügung, auf denen Daten vom Anwendungscode bis hin zu Konfigurationsinformationen gespeichert werden können. Für die Entwickler heißt das, dass sie ihre Anwendungsanforderungen eingehend prüfen und anschließend sorgfältig den Speichertyp und die Schnittstelle auswählen müssen. Im Beitrag werden Merkmale einzelnen Speichertypen anhand von Beispielen von Anbietern wie ON Semiconductor, Adesto Technologies, Renesas, Issi, Cypress Semiconductor, Advantech, Gigadevice Semiconductor und Silicon Motion erläutert und aufgezeigt, wo diese eingesetzt werden sollten.

Der CAT24C32WI-GT3 von ON Semiconductor beispielsweise ist eine EEPROM-Komponente mit 32 kBit (4 kByte) in einem 8-poligen SOIC-Paket, das sich mit Geschwindigkeiten von bis zu 1 MHz an den I2C-Bus anschließen lässt (Bild 1).

Das Interessante an EEPROM ist, dass es mitunter in den eigentlichen Mikrocontroller integriert ist. Der 32-Bit-Mikrocontroller R7FS128783A01CFM#AA1 von Renesas bietet beispielsweise 4 kByte Onboard-EEPROM, den Entwickler nutzen können. Das setzt voraus, dass das System für die Konfigurationsdaten nicht mehr als 4 kByte benötigt. Falls nicht, müssen Entwickler entweder ein externes Gerät verwenden oder mithilfe des Flash-Speichers des Mikrocontrollers zusätzlichen EEPROM emulieren.

Nachteile EEPROM und Vorteile FRAM

Trotz der weiten Verbreitung von EEPROM gibt es einige potenzielle Nachteile: Die Speicher sind in der Regel auf eine Million Lösch-/Schreibzyklen begrenzt, sind anfällig für Strahlung und hohe Betriebstemperaturen und brauchen Anweisungen, um eine Zelle bei Schreibzyklen von rund 500 ns zu beschreiben. EEPROMs funktionieren in vielen Anwendungen gut, aber bei Anwendungen, die eine hohe Ausfallsicherheit erfordern (beispielsweise Fahrzeug-, Medizin- oder Raumfahrttechnik), sollten Entwickler auf eine robustere Speicherlösung setzen, wie zum Beispiel FRAM.

FRAM (Ferroelectric Random Access Memory) bietet gegenüber EEPROM mehrere Vorteile: FRAMs sind schneller (Schreibzyklen dauern weniger als 50 ns), ermöglichen mehr Schreibzyklen, haben einen geringeren Leistungsbedarf (nur 1,5 Volt für den Betrieb) und sind weniger anfällig für Strahlung.

FM25L16B-GTR von Cypress Semiconductor

Bild 2: Die FRAM-Familie von Cypress bietet Speicher verschiedener Größen von 4 Kbit bis 4 Mbit, die über SPI an einen Mikrocontroller angeschlossen werden können. Cypress Semiconductor

FRAM ist in ähnlichen Speichergrößen wie EEPROM erhältlich. Die FRAM-Familie von Cypress Semiconductor reicht beispielsweise von 4 kBit bis 4 MBit. Der FM25L16B-GTR bietet 16 kBit (Bild 2). Untergebracht ist der Speicher in einem 8-poligen SOIC-Paket und lässt sich mit bis zu 20 MHz betreiben. Der CY15B104Q-LHXIT, der das obere Ende der Serie bildet, bietet 4 MBit und unterstützt Schnittstellengeschwindigkeiten von bis zu 40 MHz (Bild 3). Dieser FRAM-Speicher bietet unter anderem eine Speichererhaltungszeit von 151 Jahren und einen direkten Einsatz für seriellen Flash und EEPROM. Weil FRAM teurer als EEPROM ist, sind bei der Auswahl des richtigen Speichers für eine Anwendung die Umgebungsfaktoren, unter denen ein Gerät arbeitet, sorgfältig abzuwägen.

Flash in Embedded-Systemen

Flash-Speicher lassen sich in Embedded-Systemen für verschiedene Zwecke nutzen. Mit externem Flash-Speicher lässt sich der interne Flash-Speicher erweitern, um den verfügbaren Speicher für den Anwendungscode zu erhöhen. Das erfolgt üblicherweise mit SPI-Flash-Modulen wie dem GD25Q80CTIGR von Gigadevice-Semiconductor. Mit dem GD25Q80CTIGR ließe sich der interne Speicher um 8 MBit erweitern, sofern der Mikrocontroller dies über die gesamte SPI-Schnittstelle unterstützt.

CY15B104Q-LHXIT

Bild 3: Der CY15B104Q-LHXIT ist eine 4-Mbit-Komponente mit einer Schnittstellengeschwindigkeit von bis zu 40 MHz. Cypress Semiconductor

Darüber hinaus lässt sich ein externer Flash-Speicher statt EEPROM oder FRAM für das Speichern von Konfigurations- oder Anwendungsdaten verwenden. Durch Einsatz eines externen Flash-Chips können Stücklistenkosten sinken oder der interne Speicher für gespeicherte Daten aus der Anwendung kann größer ausfallen. Eine Mikrocontroller-Peripheriekomponente und eine Speicherzuordnung lassen sich so konfigurieren, dass sie diesen externen Flash-Speicher einschließen, damit der Entwickler einfacher darauf zugreifen kann, ohne dass dazu benutzerdefinierte Aufrufe an einen Treiber erfolgen müssen. Dies wäre für die Etablierung der Schnittstelle zum EEPROM oder FRAM erforderlich.

Ein Beispiel für eine externe Flash-Komponente, die für diesen Zweck zum Einsatz kommen könnte, ist der AT25SF161 von Adesto Technologies (Bild 4). Sie nutzt eine QSPI-Schnittstelle (Queued SPI). QSPI ist eine Erweiterung des SPI-Standardprotokolls, die für das System einen höheren Datendurchsatz ermöglicht. Das ist interessant für Entwickler, die bei einer einzelnen Transaktion große Datenmengen speichern oder abrufen müssen.

QSPI funktioniert so, dass es den Eingriff der CPU in das QSPI-Peripheriegerät unterbindet und die Schnittstelle von den standardmäßigen vier Pins (MOSI, MISO, CLK und CS) auf sechs Pins (CLK, CS, IO0, IO1, IO2, IO3) umstellt. Das ermöglicht die Verwendung von vier Pins für die Ein- und Ausgabe statt der herkömmlichen zwei Pins bei SPI.

Außerdem lässt sich Flash für das Speichern von Anwendungs- und Nutzdaten verwenden. So ist es bei einem GPS-System beispielsweise nicht ratsam, alle GPS-Karten lokal auf dem Prozessor zu speichern. Dafür sollte externes Speichermedium wie eine SD-Karte oder ein eMMC-Gerät zum Einsatz kommen. Diese Speichermedien lassen sich über SPI oder eine dedizierte SDIO-Schnittstelle, die eine effiziente Verbindung mit der externen Speicherkomponente ermöglicht, an einen Mikrocontroller anbinden.

eMMC und SD-Karten in Embedded-Systemen

AT25SF161

Bild 4: Die externen Flash-Speicherkomponenten des Typs AT25SF161 von Adesto Technologies können genutzt werden, um den internen Flash-Speicher zu erweitern. Adesto Technologies

Aus Sicht der elektrischen Schnittstelle sind SD-Karten und eMMC-Geräte identisch. Das heißt, es kommen dieselben Pins für den Anschluss der Geräte an einen Mikrocontroller zum Einsatz, auch wenn sich die Pakete mit Sicherheit unterscheiden. Trotzdem können beide Speichertypen starke Unterschiede aufweisen. Im Vergleich zu SD-Karten sind EMMCs in der Regel robuster sowie weniger anfällig für physische Beschädigung, bieten eine schnellere Interaktion, sind auf die Platine gelötet und nicht entfernbar, aber gleichzeitig auch kostenintensiver.

Der eMMC IS21ES04G-JCLI von Issi lässt sich beispielsweise direkt an eine SDIO-Schnittstelle des Mikrocontrollers anschließen und erweitert das Gerät so um 32 GBit Flash-Speicher (Bild 5).

Solange der Benutzer den Speicher nicht entfernen muss, bietet die Verwendung von eMMC also eine robustere Lösung. Das hängt jedoch auch von der Endanwendung ab. Auf jeden Fall muss ein Entwickler seinen Arbeitsspeicher sorgfältig auswählen, da nicht alle Arbeitsspeicher gleich sind. So kann es beispielsweise vorkommen, dass der Speicher für ein Subsystem, das in ein Fahrzeug eingebaut ist, eine Zertifizierung nach einem höheren Standard als Flash-Standardkomponenten haben muss. In diesem Fall müsste der Entwickler nach einem Speicher mit Zulassung für den Fahrzeugbau suchen.

Wenn es um SD-Karten geht, müssen Entwickler genau darauf achten, welche sie verwenden, weil es wie bei eMMC auch bei SD-Karten große Unterschiede gibt. Entwickler müssen auf die Geschwindigkeitsklasse und die Betriebstemperatur der Karte achten. Die meisten SD-Karten sind beispielsweise auf Temperaturen von 0 bis +70 °C ausgelegt, was für Unterhaltungselektronik ausreicht.

Das eMMC-Flash-Modul von ISSI

Bild 5: Das eMMC-Flash-Modul von Issi bietet 32 Gbit Speicher, die sich über SPI oder SDIO an einen Host anbinden lassen. Issi

Zudem fällt jede Karte in eine Geschwindigkeitsklasse, die die maximal zu erwartende Schnittstellengeschwindigkeit angibt. Klasse 2 heißt beispielsweise, dass eine Karte für das Speichern von Bildern zu langsam wäre. Eine Karte der Klasse 10 wie die 4-GByte SQFlash-Micro-SD-Karte SQF-MSDM1-4G-21C von Advantech ist hingegen für HD-Video ausgelegt.

Tipps und Tricks für die Speicherauswahl

SQFlash-microSD-Karte SQF-MSDM1-4G-21C von Advantech

Bild 6: Die SQFlash-Micro-SD-Karte SQF-MSDM1-4G-21C von Advantech bietet 4 Gbyte Speicher und eine Geschwindigkeitkeitsbewertung der Klasse 10. Advantech

Die Auswahl des richtigen Speichertyps und der richtigen Schnittstelle für ein Embedded-Produkt kann schwierig sein. Zunächst sollten die Nutzer die exakten Betriebsbedingungen für den Speicher ermitteln. Hierzu zählen die erwarteten Lösch-/Schreibzyklen, Umgebungsbedingungen und Faktoren wie Temperatur, Vibrationen und Strahlung und die Anforderungen an das Laden von Daten. Außerdem sind die gewünschte und die maximale Bitrate, die für die erfolgreiche Verwendung des Speichers für die Anwendung erforderlich ist, zu bestimmen. Auch die Frage nach dem Speicherschnittstellentyp, der sich für die ermittelte gewünschte Bitrate am besten eignet, gilt es zu klären. Sofern der Speicher in rauen Umgebungsbedingungen wie Automobil- oder Raumfahrtsystemen zum Einsatz kommt, sollte der Nutzer darauf achten, dass die entsprechende Kfz-Zulassung oder Strahlungstoleranz gegeben ist. Abschließend ist es ratsam, die ausgewählte Speicherkomponente mithilfe einer Breakout-Karte und Integration in das Mikrocontroller-Entwicklungskit zu testen. Wenn Entwickler diese Tipps beherzigen, sollte sicher sein, dass sie den richtigen Speicher für ihre Embedded-Anwendung auswählen.