Grunderna i inbäddat minne: EEPROM kontra FRAM kontra eMMC kontra SD-kort

Av Jacob Beningo

Bidraget med av DigiKeys nordamerikanska redaktörer

En stor del av varje microcontroller-baserat inbäddat system är minne. Till exempel behöver utvecklare tillräckligt med RAM-minne för att spara alla flyktiga variabler, skapa buffertar och hantera olika programstackar. Lika viktigt som RAM är för ett inbäddat system är att utvecklare också behöver en plats där de lagrar programkod, icke-flyktig data och konfigurationsinformation.

Problemet är att alternativen för icke-flyktigt minne utökas, vilket gör det svårt att fastställa rätt minne för en tillämpning.

Den här artikeln ger en introduktion till de olika teknikerna. Därefter används exempel från leverantörer som ON Semiconductor, Adesto Technologies, Renesas, ISSI, Cypress Semiconductor, Advantech, GigaDevice Semiconductor och Silicon Motion för att hjälpa utvecklare att förstå egenskaperna för varje minnestyp. Här diskuteras även var respektive teknik bäst tillämpas, så att utvecklare kan använda dem effektivt.

EEPROM och FRAM i inbäddade system

Den första, och vanligaste, minnesenheten att lägga till i ett inbäddat system är EEPROM. Det här är ett icke-flyktigt minne som ofta används för att lagra systemkonfigurationsparametrar för en inbäddad tillämpning. Till exempel kan en enhet som är ansluten till ett nätverk, såsom en CAN-buss, lagra CAN-ID:t i EEPROM.

EEPROM har flera egenskaper som gör det till ett bra val för utvecklare av inbäddade system:

  • Tar liten plats fysiskt
  • Relativt billigt
  • Typiska bithastigheter från 100 kilobit per sekund (kbit/s) till 1 000 kbit/s
  • Standardiserat elgränssnitt
  • Stöder normalt I2C- och SPI-gränssnitt

En snabb sökning på EEPROM på Digi-Keys webbplats visar för närvarande nio EEPROM-leverantörer med över 5 800 EEPROM-varianter. Till exempel är CAT24C32WI-GT3 från ON Semiconductor en 32 kbit (4 kbyte) EEPROM-enhet som levereras i ett 8-stifts SOIC-paket som kan anslutas till I2C-bussen i hastigheter på upp till 1 megahertz (MHz) (figur 1).

Bild av CAT24C32WI-GT3, en 1 kbit EEPROM från ON SemiconductorFigur 1: CAT24C32WI-GT3 är en 1 kbit EEPROM från ON Semiconductor som kan anslutas till en microcontroller via en I2C- eller SPI-port för att lagra konfigurations- och programdata. (Bildkälla: ON Semiconductor)

Det intressanta med EEPROM är att det ibland ingår i den faktiska microcontrollern. Till exempel har 32-bitars R7FS128783A01CFM#AA1-microcontrollern från Renesas 4 kbyte onboard-EEPROM som utvecklare kan använda.

Det förutsätter att konfigurationsbehoven är inom 4 kbyte. Om inte så måste utvecklarna antingen använda en extern enhet eller emulera ytterligare EEPROM med hjälp av microcontrollerns flashminne.

Trots EEPROM:s popularitet har det vissa potentiella nackdelar:

  • Normalt begränsat till 1 000 000 raderings-/skrivcykler
  • Skrivcykler som är cirka 500 nanosekunder (ns)
  • Flera instruktioner behövs för att skriva en cell
  • Datalagring på minst 10 år (på senare tid är 100 år eller mer vanligare)
  • Känsligt för strålning och höga drifttemperaturer

EEPROM fungerar bra i många tillämpningar men för sådana som kräver hög tillförlitlighet, till exempel i fordons-, läkemedels- och rymdsystemindustrin, använder utvecklare hellre en minneslösning som är robustare, till exempel FRAM.

FRAM står för ferroelektriskt RAM-minne och har flera fördelar jämfört med EEPROM-minne:

  • Det är snabbare (skrivcykler tar mindre än 50 ns)
  • Har fler skrivcykler (uppåt 1 biljon mot 1 miljon för EEPROM)
  • Lägre effekt (kräver 1,5 volt för drift)
  • Mer strålningstålig

FRAM är tillgängligt i liknande minnesstorlekar som EEPROM. Till exempel kan Cypress Semiconductors FRAM-familj vara inom intervallet 4 kbit till 4 Mbit. FM25L16B-GTR har 16 kbit (figur 2). Det levereras i ett 8-stifts SOIC-paket och fungerar i upp till 20 MHz.

Bild av Cypress FRAM-familjenFigur 2: Cypress FRAM-familjen har flera olika minnesstorlekar från 4 kbit till 4 Mbit som kan anslutas till en microcontroller via SPI för att lagra konfigurations- och programdata. FM25L16B-GTR (på bilden) fungerar i upp till 20 MHz. (Bildkälla: Cypress Semiconductor)

På den övre skalan har Cypress Semiconductors CY15B104Q-LHXIT 4 Mbit och stöder gränssnittshastigheter på upp till 40 MHz (figur 3). Några intressanta funktioner i det här FRAM-minnet är:

  • 151 års datalagring
  • 100 biljoner läs-/skrivcykler
  • Är en direkt ersättare till seriell flash och EEPROM

Som man kan misstänka är FRAM dyrare än EEPROM, vilket är anledningen till varför det är viktigt att noga väga miljöfaktorerna i enhetens driftsmiljö vid val av rätt minne för en tillämpning.

Bild av Cypress CY15B104Q-LHXIT som är en 4 Mbit-enhetFigur 3: CY15B104Q-LHXIT är en 4 Mbit-enhet som fungerar i upp till 40 MHz. Det är en del av Cypress FRAM-familjen som är inom intervallet 4 kbit till 4 Mbit. (Bildkälla: Cypress Semiconductor)

Flash, eMMC och SD-kort i inbäddade system

Flashminne i ett inbäddat system kan användas för flera ändamål. För det första kan externt flash användas för att utöka det interna flashminnet och på så sätt öka det tillgängliga minnet för programkod. Det görs vanligen med SPI-flashmoduler som GD25Q80CTIGR från GigaDevice Semiconductor (figur 4). GD25Q80CTIGR kan användas till att utöka det interna minnet med 8 Mbit, förutsatt att microcontrollern kan stödja det, och allt sker via SPI-gränssnittet.

Bild av GD25Q80CTIR-flashminne från GigaDevice Semiconductor LimitedFigur 4: GD25Q80CTIR-flashminnet från GigaDevice Semiconductor Limited kan användas till att utöka internt flashminnesutrymme med 8 Mbit via SPI-porten. (Bildkälla: GigaDevice Semiconductor Limited)

För det andra kan externt flash kan användas till att lagra konfigurationsinformation eller programdata istället för att använda ett EEPROM eller FRAM. Ett externt flashchip kan användas istället och på så sätt minska materialkostnaderna eller för att utöka internt minne för lagrade data från tillämpningen. En microcontroller-kringenhet och en minneskarta kan konfigureras till att omfatta det här externa flashminnet så att det är enklare för utvecklaren att få åtkomst utan att specifikt behöva göra anpassade anrop till en drivenhet som skulle krävas för samverkan med ett EEPROM- eller FRAM-minne.

Som ett exempel på en extern flashenhet som kan användas för det här ändamålet är AT25SF161 från Adesto Technologies (figur 5). Den använder ett SPI-gränssnitt (QSPI). QSPI är ett tillägg till det normala SPI-protokollet som tillåter mer datagenomströmning för systemet. Det här är extremt intressant för utvecklare som behöver lagra eller hämta stora mängder data under en enda transaktion.

QSPI fungerar genom att ta bort processorinblandning i QSPI-kringenheten och ändra gränssnittet från de vanliga fyra stiften (MOSI, MISO, CLK och CS) till sex stift (CLK, CS, IO0, IO1, IO2, IO3). Det gör att fyra stift kan användas för in- och utgång jämfört med SPI:s traditionella två stift.

Bild av Adesto Technologies externa flashminne AT25SF161Figur 5: Adesto Technologies externa flashminne AT25SF161 kan användas till att utöka internt flashminne. Det har ett QSPI-gränssnitt för snabbare lagring och hämtning av data. (Bildkälla: Adesto Technologies)

Slutligen kan flash användas till att lagra programdata och nyttolastinformation. Till exempel skulle ett GPS-system inte försöka lagra alla GPS-kartor lokalt på processorn. Istället skulle det använda en extern minneslagringsenhet som ett SD-kort eller en eMMC-enhet. De här lagringsmedierna kan anslutas till en microcontroller via SPI eller ett dedikerat SDIO-gränssnitt som samverkar effektivt med det externa minnet.

Till exempel kan IS21ES04G-JCLI-eMMC från ISSI anslutas direkt till ett SDIO-gränssnitt på microcontroller för att kunna lägga till 32 Gbit flashlagring på enheten (figur 6).

Bild av ISSI eMMC-flashmodul med 32 Gbit minneFigur 6: ISSI eMMC-flashmodul har 32 Gbit minne som kan anslutas till en värd via SPI eller SDIO. (Bildkälla: ISSI)

Utifrån ett elgränssnittsperspektiv är SD-kort och eMMC-enheter samma sak. Det vill säga: de har samma vanliga stift som används till att ansluta enheterna till en microcontroller, men de levereras i vitt skilda paket. De två minnestyperna kan vara ganska olika varandra. Jämfört med SD-kort har eMMC allmänt sett följande skillnader:

  • Robustare och har mindre troligt fysiska skador
  • Snabbare interaktion
  • Dyrare
  • Löds på kortet och är inte borttagbart

Om användaren inte behöver ta bort minnet är användningen av eMMC en robustare lösning men är beroende av den slutliga tillämpningen. Hur som helst behöver en utvecklare välja minne noggrant eftersom alla minnen inte har samma egenskaper.

Ett delsystem som till exempel placeras i en bil kan kräva att minnet är beprövat och certifierat att vara tillförlitligt för en högre standard än standardflashenheter. I så fall skulle en utvecklare leta efter ett minne kvalificerat för bilar, som SM668GE4-AC 4 Gbyte eMMC-modulen från Silicon Motion.

När det gäller SD-kort måste utvecklarna vara extra uppmärksamma på vad de köper, eftersom, liksom eMMC, inte alla SD-kort har samma egenskaper. Utvecklarna måste noga undersöka kortets hastighetsklass och drifttemperatur. Till exempel är SD-kort märkta för 0 till 70 ˚C, vilket inte är lämpligt för hemelektronik.

Det finns även hastighetsklasser associerade med varje kort som beskriver den maximala gränssnittshastigheten som kan förväntas. Till exempel innebär en klass 2-märkning att ett kort är långsamt för en tillämpning som lagrar bilder jämfört med ett kort med en klass 10-märkning som har utformats för HD-video, till exempel SQF-MSDM1-4G-21C SQFlash 4 Gbyte microSD-kortet från Advantech.

Bild av Advantech SQF-MSDM1-4G-21C SQFlash microSD-kortFigur 7: Advantech SQF-MSDM1-4G-21C SQFlash microSD-kort har 4 Gbyte minne och har en högkvalitativ klass 10-hastighetsmärkning. (Bildkälla: Advantech Corp)

Tips för val av minne

Att välja rätt minnestyp och gränssnitt för en inbäddad produkt kan vara utmanande. Här är några tips som utvecklare måste tänka på vid val av rätt minne för en tillämpning:

  • Tydligt identifiera driftförhållanden för minnet, till exempel:
    • Förväntade raderings-/skrivcykler
    • Miljöförhållanden och -faktorer som temperatur, vibrationer och strålning
    • Databelastningskrav
  • Dokumentera den minsta, önskade och högsta bithastigheten för att framgångsrikt använda minnet för tillämpningen
  • Välj det minnesgränssnitt som bäst uppfyller den dokumenterade önskade bithastigheten
  • I svåra miljöförhållanden som fordons- eller rymdsystem ska ett minne med fordonsklassning eller som är strålningståligt väljas
  • Använd ett break-out-kort för att testa det valda minnet genom att integrera det med microcontroller-utvecklingssatsen

Med hjälp av dessa tips kan utvecklare välja rätt minne för den inbäddade tillämpningen.

Slutsats

Dagens utvecklare har en mängd olika enheter med icke-flyktigt minne som kan användas till att lagra olika typer av data – från programkod till konfigurationsinformation. Utvecklare måste noga utvärdera sina tillämpningsbehov och sedan noga välja minnestyp och gränssnitt för att balansera behoven gentemot kostnaderna.

 
DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Om skribenten

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo är konsult inom inbäddad programvara. Han har publicerat över 200 artiklar om utveckling av inbäddad programvara, och är en eftertraktad talare och teknisk utbildare med tre examina, däribland en master i teknik från University of Michigan.

Om utgivaren

DigiKeys nordamerikanska redaktörer