Accesul mapat cu memorie CYPRESS la Ghidul utilizatorului SPI F-RAM AN229843

1 Introducere
Memoriile non-volatile Cypress SPI F-RAM pot fi utilizate într-o varietate de moduri. În primul rând, setul lor de instrucțiuni este compatibil cu EEPROM serial clasic și memoriile Flash. Această caracteristică permite dezvoltatorilor să opereze dispozitive F-RAM, cum ar fi o parte EEPROM sau Flash, utilizând driverele software existente.
Pe de altă parte, dispozitivele F-RAM posedă caracteristici RAM și avantajetages: pot fi citite și scrise instantaneu, octet cu octet, fără a fi nevoie de ștergere sau interogare precum dispozitivele Flash. Controlerele SPI moderne avansate pot genera secvențele de comandă necesare din mers în hardware și acceptă accesul mapat cu memorie prin pointeri. Acest lucru face ca dispozitivele seriale F-RAM să arate ca RAM-ul normal pentru aplicații.
Cele două modele de utilizare sunt prezentate și comparate în detaliu în secțiunile următoare.
2 EEPROM/Acces la stil flash
Dacă F-RAM serial este utilizat ca un dispozitiv EEPROM sau Flash, atunci fluxul de control tipic este:
- Deschideți un dispozitiv special file
- Setați file decalat la o anumită poziție
- Emiteți un apel de citire sau scriere.
Pașii 2 și 3 se repetă ori de câte ori este necesar.
Adăugarea suportului F-RAM la driverele EEPROM/Flash existente este de obicei simplă. În multe cazuri, este suficient să adăugați doar un nou ID de dispozitiv la lista de dispozitive acceptate în codul sursă al driverului pentru ca dispozitivele să funcționeze. Comenzile SPI pentru citirea și scrierea datelor sunt compatibile între EEPROM/Flash și F-RAM, iar comenzile de ștergere sunt pur și simplu ignorate de dispozitivul F-RAM. Majoritatea aplicațiilor nu se bazează pe valoarea implicită a memoriei proaspăt șterse (de exemplu, 0xFF), așa că acest comportament este ok. În cazuri speciale în care o fac, regiunea de memorie ștearsă poate fi setată în mod explicit la valoarea implicită așteptată de către funcția de ștergere. În plus, codul de interogare utilizat în driverele software EEPROM/Flash pentru a detecta sfârșitul operațiunilor programului nu afectează F-RAM. Pentru astfel de drivere de software, dispozitivele F-RAM par să fie terminate imediat cu orice program sau operație de ștergere și controlul revine după o singură iterație de sondare. Alternativ, sondarea ar putea fi complet dezactivată pentru F-RAM în drivere.
În Linux, ca exemplu concretample, metoda de acces necesită ca utilizatorul să deschidă un dispozitiv special cu tehnologie de memorie (MTD) sau un dispozitiv special EEPROM file și lansează două apeluri de sistem pentru fiecare citire sau scriere. Mai întâi, un apel de sleek() pentru a poziționa file descriptor la offset-ul dorit și a doua emite fie un apel de sistem read() sau write() pentru a citi sau scrie datele. Pentru blocuri mari de date, apelurile de sistem asociate și cheltuielile lor generale sunt nesemnificative și pot fi neglijate. Debitul este parametrul crucial în astfel de cazuri. Pentru dimensiuni mici de date (de example, variabile de 1-16 octeți), totuși, supraîncărcarea apelului de sistem cauzează latențe vizibile.
Ceea ce face lucrurile mai complicate pentru aplicații este necesitatea de a aloca și gestiona bufferele care sunt trecute la funcțiile de citire și scriere. Foarte des, datele sunt copiate înainte și înapoi de mai multe ori în această metodă de acces, către și din bufferele din aplicație și apoi din nou din buffer-uri către FIFO-urile controlerului SPI din driverul de dispozitiv și invers. Aceste operațiuni de copiere au un impact negativ asupra debitului pe sistemele rapide.
3 Acces mapat memorie
Bufferele de date gestionate de utilizator și mișcarea manuală a datelor nu sunt necesare pentru accesul mapat cu memorie (cunoscut și ca I/O mapat cu memorie sau MMIO). În această metodă de acces, aplicațiile pot citi și scrie pe F-RAM pur și simplu prin dereferențierea indicatorilor către obiecte de date de dimensiunea dorită.
Asistența software este necesară doar în timpul inițializării pentru a verifica dispozitivul și mai târziu pentru a configura o mapare a adresei adecvate pentru aplicație. Odată ce această mapare a fost stabilită, toate accesele de citire și scriere rulează complet în hardware. Acest lucru duce la un nivel de performanță mai bun în comparație cu accesul clasic EEPROM/Flash. În primul rând, latențele sunt mai scurte, rezultând rezultate semnificativ mai bune pentru datele de dimensiuni mici.
În plus, accesul mapat în memorie simplifică codul aplicațiilor. Datele nu trebuie să fie copiate înainte și înapoi între buffere, iar apelurile de sistem nu sunt necesare pentru a accesa memoria F-RAM după inițializare.
În cele din urmă, funcțiile avansate, cum ar fi execuția codului direct din SPI F-RAM (XIP) sunt posibile numai cu o configurație mapată cu memorie. Deși aplicațiile numai pentru citire sunt posibile și cu SPI Flash într-o configurație mapată cu memorie, scrierile mapate eșuează pe aceste dispozitive din cauza cerințelor lor de interogare și ștergere.
O provocare ar putea fi faptul că codul de configurare specific controlerului trebuie adăugat la driverele software. Codul generic de șofer este cu greu posibil.
4 Un studiu de caz
Pentru a investiga beneficiile de performanță ale accesului mapat cu memorie, un SoC NXP i.MX8QXP cu un Cypress Exelon Ultra CY15B104QSN F-RAM este folosit pentru a oferi o platformă modernă de analiză comparativă.
Sistemul de operare în acest caz este Linux (kernel 4.14.98) care rulează Cypress SPI Memories Driver versiunea stivă v19.4. Acest driver software acceptă atât MTD clasic, cât și accesul mapat la memorie. CY15B104QSN funcționează în modul QPI la o frecvență de ceas SPI de 100 MHz SDR. Astfel, debitul teoretic maxim pentru operațiunile de citire și scriere este limitat la 50 MiB/s1.
Controlerul i.MX8QXP FlexiSpot acceptă accesări mapate cu memorie printr-un mic tabel configurabil. Acest Look Up Table (LUT) poate conține până la 32 de secvențe pentru a sintetiza tranzacțiile cu magistrala SPI din mers în hardware. Registrele de index din controler pot fi setate pentru a informa procesorul ce secvență(e) să execute pentru citirea și scrierea mapate cu memorie, de exempluample, dacă un pointer este dereferențiat. Ar putea fi o singură secvență sau un set de secvențe multiple, de example, dacă o comandă Write Enable plus o comandă Program trebuie să fie emisă pentru o operație de scriere. Pentru citirea și scrierea QPI pe F-RAM, pot fi utilizate următoarele intrări/secvențe LUT:

Nota că CY15B104QSN are un bit WREN (Activare scriere) lipicios în registrul de stare. Odată ce acest bit a fost setat, dispozitivul nu mai are nevoie de comenzi explicite Write Enable care preced fiecare operație de scriere în memorie. Astfel, este utilizată doar a doua secvență a perechii de secvențe listate pentru calea de scriere.
O altă tehnică de optimizare folosită este preîncărcarea care se poate face automat de către controlerul i.MX8QXP FlexSPI. Această caracteristică afectează și accelerează calea de citire pentru toate metodele de acces. Întotdeauna încarcă blocuri de date de 2 kB din F-RAM în unele tampoane hardware. Solicitările de citire din software sunt apoi servite din aceste buffere.
Tabelul 1 rezumă rezultatele măsurate și arată beneficiile de performanță ale accesului direct mapat la memorie. În special, latențele sunt mult mai scurte în comparație cu metoda standard de acces în stilul Flash (cu mai mult de 20 de ori). Latențele extrem de scurte profită de caracteristica de nonvolatilitate instantanee a F-RAM și ajută în situațiile în care puterea sistemului este pierdută brusc. Accesul mapat la memorie devine o cerință gratuită în acele cazuri, scurtând intervalul de timp în care datele sunt în pericol.

În acest benchmark, rezultatele debitului sunt măsurate prin citirea sau scrierea întregului dispozitiv. Pentru cazul mapat cu memorie, memcpy() este apelat pentru a copia toate datele matricei principale din F-RAM în DRAM-ul normal al sistemului sau invers. Vezi Anexa A pentru unele optimizări specifice ARMv8-A memcpy(). Cu preîncărcarea hardware dezactivată, debitele de citire sunt de aceeași ordine cu cele de scriere.
Latentele denotă întârzierea după ce o operație de scriere sau citire a fost emisă de aplicația software până când datele sunt transferate fizic pe magistrala SPI. În acest benchmark, latențele sunt măsurate prin emiterea de operațiuni mici de citire și scriere de 1 octet.
5 Memorarea în cache a procesorului
În mod implicit, memoria cache a CPU este dezactivată pe majoritatea platformelor pentru întreg spațiul de memorie I/O. Acest lucru impune accesele de memorie ordonate și decombinate și este o necesitate, de example, pentru a completa FIFO-uri hardware sau pentru a programa sau șterge dispozitivele Flash.
Pentru memoriile F-RAM, totuși, cache-urile CPU ar putea fi activate în combinație cu accesul mapat la memorie pentru a împinge nivelul de performanță mai departe. Cu memoria cache a CPU, dimensiunea naturală a exploziei pe magistrala SPI pentru citiri și scrieri este de o linie de cache (64 de octeți pe i.MX8QXP). Acest lucru face o mai bună utilizare a lățimii de bandă a magistralei SPI disponibile în comparație cu o serie de transferuri mai mici. Cu toate acestea, în timpul unei căderi de energie, datele se pot pierde dacă se află într-o linie cache care nu a fost încă scrisă înapoi pe F-RAM. În timp ce pentru memoriile RAM normale acest comportament este perfect acceptabil, pentru F-RAM nu este.
Activarea unei scheme de memorare în cache de citire simplă (adică cu o politică de scriere în cache) este sigură pentru F-RAM, deoarece datele sunt scrise imediat înapoi în matricea F-RAM în această configurație.
Dacă aplicația are puncte de sincronizare clare (de example, salvând imagini complete ale camerei), atunci chiar și o politică de rescriere poate fi activată. Operațiunile de scriere mai mici pot fi combinate cu această schemă pentru a construi scrieri foarte eficiente în linia cache de 64 de octeți. Totuși, la punctele de sincronizare ale codului sursă trebuie adăugate instrucțiuni de întreținere a barierei și a cache-ului, în acest caz pentru a șterge cache-ul din când în când. Astfel de instrucțiuni fac ca datele care s-au acumulat în memoria cache a CPU să fie scrise înapoi în mod explicit și astfel elimină riscul pierderii datelor.
6 Concluzie
Majoritatea controlerelor SPI de astăzi acceptă accesul mapat cu memorie la dispozitivele externe. Prin urmare, cu aceste controlere, accesul mapat cu memorie a devenit o opțiune viabilă de luat în considerare și clienții pot beneficia de aceasta, în special în cazul F-RAM.
Accesul mapat cu memorie la F-RAM are avantaje clare de performanță și simplifică codul aplicației în comparație cu metoda clasică de acces serial EEPROM/Flash. Este universal, flexibil și integrează F-RAM fără probleme într-un sistem modern.
Analizând și optimizând cu atenție codul aplicației, o combinație de acces mapat la memorie cu memoria cache a CPU poate îmbunătăți și mai mult atât debitul, cât și latența.

Anexa A. Optimizat 16-byte memcpy() pentru ARMv8-A
Implementarea implicită memcpy() pentru ARMv8-A în Linux utilizează instrucțiuni de asamblare perechi de încărcare și perechi de stocare care mută doi registre de 8 octeți simultan. Din păcate, aceste instrucțiuni declanșează două rafale SPI de 8 octeți pe magistrală în loc de o singură rafală de 16 octeți. Pentru a îmbunătăți situația, memcpy() poate fi optimizat pentru a utiliza un registru FP/SIMD de 16 octeți plus instrucțiunile de încărcare/stocare corespunzătoare, așa cum se arată mai jos. Această modificare creează exploziile SPI de 16 octeți dorite pe magistrală.

Istoricul documentelor
Titlul documentului: AN229843 – Acces mapat cu memorie la SPI F-RAM Număr document: 002-29843

Asistență mondială în vânzări și proiectare
Cypress menține o rețea mondială de birouri, centre de soluții, reprezentanți ai producătorilor și distribuitori. Pentru a găsi biroul cel mai apropiat de tine, vizitează-ne la Cypress Locations.
Produse
Microcontrolere Arm® Cortex® cypress.com/arm
Automobile cypress.com/automotive
Ceasuri și tampoane cypress.com/clocks
Interfață cypress.com/interface
Internetul lucrurilor cypress.com/iot
Memorie cypress.com/memory
Microcontrolere cypress.com/mcu
PSoC cypress.com/psoc
CI de gestionare a energiei cypress.com/pmic
Atingeți Senz cypress.com/touch
Controlere USB cypress.com/usb
Conectivitate wireless cypress.com/wireless
Soluții PSoC®
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP | PSoC 6 MCU
Comunitatea dezvoltatorilor Cypress
Comunitate | Cod Examples | Proiecte | Videoclipuri | Bloguri | Antrenamentul | Componente
Suport tehnic
cypress.com/support
Toate celelalte mărci comerciale sau mărci comerciale înregistrate la care se face referire aici sunt proprietatea deținătorilor respectivi.

Cypress Semiconductor
O companie Infineon Technologies 198 CapampCurtea ionică
San Jose, CA 95134-1709
© Cypress Semiconductor Corporation, 2020. Acest document este proprietatea Cypress Semiconductor Corporation și a filialelor sale („Cypress”). Acest document, inclusiv orice software sau firmware inclus sau la care se face referire în acest document („Software”), este deținut de Cypress în conformitate cu legile și tratatele privind proprietatea intelectuală din Statele Unite și din alte țări din întreaga lume. Cypress își rezervă toate drepturile în temeiul unor astfel de legi și tratate și nu acordă, cu excepția cazurilor specificate în mod specific în acest paragraf, nicio licență sub brevetele, drepturile de autor, mărcile comerciale sau alte drepturi de proprietate intelectuală. Dacă Software-ul nu este însoțit de un acord de licență și altfel nu aveți un acord scris cu Cypress care reglementează utilizarea Software-ului, atunci Cypress vă acordă prin prezenta o licență personală, neexclusivă, netransferabilă (fără dreptul de sublicență). ) (1) conform drepturilor sale de drepturi de autor asupra Software-ului (a) pentru Software-ul furnizat sub formă de cod sursă, să modifice și să reproducă Software-ul exclusiv pentru utilizarea cu produse hardware Cypress, numai pe plan intern în cadrul organizației dvs. și (b) pentru a distribui Software-ul sub formă de cod binar extern pentru utilizatorii finali (direct sau indirect prin revânzători și distribuitori), exclusiv pentru utilizarea pe unitățile de produse hardware Cypress și (2) în conformitate cu acele revendicări ale brevetelor Cypress care sunt încălcate de Software (așa cum sunt furnizate de Cypress, nemodificat) pentru a realiza, utiliza, distribui și importa Software-ul exclusiv pentru utilizarea cu produse hardware Cypress. Orice altă utilizare, reproducere, modificare, traducere sau compilare a Software-ului este interzisă.
ÎN MĂSURA PERMISĂ DE LEGEA APLICABILĂ, CYPRESS NU OFERĂ NICIUN FEL DE GARANȚIE, EXPRESĂ SAU IMPLICITĂ, CU PRIVIRE LA ACEST DOCUMENT SAU LA ORICE SOFTWARE SAU HARDWARE ÎNSOȘIT, INCLUSIV, DAR FĂRĂ A SE LIMITA LA, GARANȚIA IMPLICITĂ PENTRU GARANTIAȚIILE ȘI GARANTIAȚIEI DE FIRMATĂ .
Niciun dispozitiv de calcul nu poate fi absolut sigur. Prin urmare, în ciuda măsurilor de securitate implementate în produsele hardware sau software Cypress, Cypress nu va avea nicio răspundere care decurge din orice încălcare a securității, cum ar fi accesul neautorizat la sau utilizarea unui produs Cypress. CYPRESS NU DECLARA, GARANTĂ SAU GARANTĂ CĂ PRODUSELE CYPRESS SAU SISTEMELE CREATE FOLOSIND PRODUSE CYPRESS, VA FI FĂRITE DE CORUPȚIE, ATAC, VIRUSĂ, INTERFERENȚĂ, HACKING, PIERDERE SAU FURT DE DATE SAU ALTĂ INTRUZIE DE SECURITATE ). Cypress declină orice răspundere legată de orice încălcare a securității și, prin aceasta, îl eliberați pe Cypress de orice reclamație, daune sau altă răspundere care decurge din orice încălcare a securității. În plus, produsele descrise în aceste materiale pot conține defecte de proiectare sau erori cunoscute sub numele de errate care pot determina abaterea produsului de la specificațiile publicate. În măsura permisă de legea aplicabilă, Cypress își rezervă dreptul de a face modificări acestui document fără o notificare ulterioară. Cypress nu își asumă nicio răspundere care decurge din aplicarea sau utilizarea oricărui produs sau circuit descris în acest document. Orice informații furnizate în acest document, inclusiv orice sampInformațiile de proiectare sau codul de programare sunt furnizate doar în scopuri de referință. Este responsabilitatea utilizatorului acestui document să proiecteze, să programeze și să testeze în mod corespunzător funcționalitatea și siguranța oricărei aplicații făcute din aceste informații și a oricărui produs rezultat. „Dispozitiv cu risc ridicat” înseamnă orice dispozitiv sau sistem a cărui defecțiune ar putea cauza vătămări corporale, deces sau daune materiale. ExampDispozitivele cu risc ridicat sunt armele, instalațiile nucleare, implanturile chirurgicale și alte dispozitive medicale. „Componentă critică” înseamnă orice componentă a unui Dispozitiv cu risc ridicat a cărei eșec de funcționare poate fi de așteptat în mod rezonabil să cauzeze, direct sau indirect, defecțiunea Dispozitivului cu risc ridicat sau să îi afecteze siguranța sau eficacitatea. Cypress nu este responsabil, în totalitate sau parțial, și, prin prezenta, îl eliberați pe Cypress de orice reclamație, daune sau altă răspundere care decurge din orice utilizare a unui produs Cypress ca componentă critică într-un dispozitiv cu risc ridicat. Veți despăgubi și veți despăgubi pe Cypress, directorii, ofițerii, angajații, agenții, afiliații, distribuitorii și cesionații săi din și împotriva tuturor pretențiilor, costurilor, daunelor și cheltuielilor, care decurg din orice reclamație, inclusiv pretenții pentru răspunderea pentru produse, vătămări corporale. sau deces, sau daune materiale rezultate din orice utilizare a unui produs Cypress ca componentă critică într-un dispozitiv cu risc ridicat. Produsele Cypress nu sunt destinate sau autorizate pentru utilizare ca componentă critică în niciun dispozitiv cu risc ridicat, cu excepția cazului în care (i) fișa de date publicată de Cypress pentru produs afirmă în mod explicit Cypress a calificat produsul pentru utilizare într-un anumit tip de risc ridicat. Dispozitiv sau (ii) Cypress v-a acordat în prealabil autorizație scrisă de a utiliza produsul ca Componentă Critică în Dispozitivul cu risc ridicat și ați semnat un acord separat de despăgubire.
Cypress, sigla Cypress, Spansion, sigla Spansion și combinațiile acestora, WICED, PSoC, CapSense, EZ-USB, F-RAM și Traveo sunt mărci comerciale sau mărci comerciale înregistrate ale Cypress în Statele Unite și în alte țări. Pentru o listă mai completă a mărcilor Cypress, vizitați cypress.com. Alte nume și mărci pot fi revendicate ca proprietate a proprietarilor respectivi.
Documente/Resurse
![]() |
CYPRESS Memory Mapped Acces la SPI F-RAM AN229843 [pdfGhid de utilizare CYPRESS, Memorie mapată, Acces, la, SPI, F-RAM, AN229843 |




