MICROCHIP TB3308 Gestió de problemes de coherència de la memòria cau en temps d'execució mitjançant el manteniment de la memòria cau
Introducció
El problema de la coherència de la memòria cau és inevitable a les aplicacions que s'executen en microcontroladors (MCU) que tenen regions de memòria cacheable, que utilitzen un accés directe a la memòria (DMA) per a les operacions de transferència de dades. Això es deu al fet que la CPU realitza una operació de lectura/escriptura des de la memòria cau mentre el DMA transfereix dades entre el perifèric i la memòria física.
Un dels mètodes per gestionar la coherència de la memòria cau requereix que l'aplicació gestioni la memòria cau en temps d'execució mitjançant les operacions de manteniment de la memòria cau. MPLAB® Harmony v3 proporciona interfícies de programa d'aplicacions (API) de manteniment de la memòria cau per a dispositius PIC32MZ.
Aquest document explica com una aplicació pot gestionar problemes de coherència de la memòria cau en temps d'execució mitjançant API de gestió de memòria cau amb MPLAB Harmony v3.
Nota: Els conceptes tractats en aquest document són comuns per a tots els MCU PIC32MZ. El PIC32MZ EF s'utilitza com a exampl per discutir els conceptes.
Descripció
La figura següent il·lustra el problema de coherència de la memòria cau tal com s'observa quan el DMA llegeix de la SRAM a la MCU PIC32MZ EF.
Figura 1-1. Transferència de memòria a perifèric (lectures DMA de SRAM)
L'aplicació envia una sol·licitud per transferir el valor del buffer de dades TxBuffer 'ABCDEFGH' al perifèric. La CPU omple el buffer d'escriptura DMA (TxBuffer) amb les dades que s'han d'escriure "ABCDEFGH" al perifèric.
Tanmateix, a causa de la política de memòria cau definida Write Back and Write Allocate, és possible que el buffer d'escriptura DMA (TxBuffer) no s'escrigui immediatament a la memòria principal i les dades escrites poden romandre a la memòria cau de dades. El buffer d'escriptura DMA (TxBuffer) de la memòria principal encara conté el valor antic de '12345678'.
Quan el DMA s'activa per iniciar la transferència de memòria a perifèric, el DMA llegeix el buffer (TxBuffer) de la memòria principal com a "12345678". Com a resultat, el DMA acaba transferint dades obsoletes al perifèric.
La figura següent il·lustra el problema de coherència de la memòria cau observat quan el DMA escriu a la SRAM.
Figura 1-2. Transferència de perifèric a memòria (escriptures DMA a SRAM)
L'aplicació envia una sol·licitud per rebre dades al RxBuffer amb un valor de '12345678' des del perifèric. El DMA omple el RxBuffer amb un valor de "12345678" a la SRAM. Tanmateix, la memòria cau de dades no s'actualitza i continua conservant les dades anteriors. Quan la CPU llegeix el RxBuffer, acaba llegint el valor anterior contingut al buffer com a "ABCDEFGH".
Gestió de la coherència de la memòria cau
Els dos mètodes per gestionar els problemes de coherència de la memòria cau s'il·lustren a transferència de memòria a perifèric (lectures DMA de SRAM) i transferència de perifèric a memòria (escriptures DMA a SRAM). Aquests mètodes impliquen que l'aplicació gestioni la memòria cau en temps d'execució mitjançant les operacions de manteniment. Les operacions inclouen la capacitat de realitzar aquestes accions:
Invalideu la memòria cau: Marca les línies de la memòria cau com a no vàlides. L'accés posterior obliga a copiar les dades de la memòria principal a la memòria cau.
Netegeu la memòria cau: Escriu les línies de memòria cau, que estan marcades com a brutes, de nou a la memòria principal. Per gestionar la coherència de la memòria cau que s'explica a Transferència de memòria a perifèric (Lectures DMA de SRAM), realitzeu les accions següents:
- L'aplicació omple el buffer de dades d'escriptura (TxBuffer) amb un valor "ABCEDFGH". A causa de la política de memòria cau per defecte (Escriptura enrere i Escriptura assignada), les dades escrites poden estar a la memòria cau.
Figura 1-3. Omple la memòria intermèdia d'escriptura - Netegeu el buffer de dades d'escriptura (TxBuffer) amb el valor "ABCDEFGH" a la memòria principal trucant a l'API de memòria cau neta.
Figura 1-4. Esborra la memòria intermèdia d'escriptura - L'aplicació envia una sol·licitud per transferir dades del TxBuffer amb un valor de 'ABCDEFGH' al perifèric.
Figura 1-5. Escriu al perifèric
Per gestionar la coherència de la memòria cau tal com s'explica a Transferència de perifèrics a memòria (Escriptures DMA a SRAM), seguiu aquests passos:
- L'aplicació crida a l'API Invalidate cache per marcar les línies de la memòria cau com a no vàlides.
Figura 1-6. Invalida la memòria cau - L'aplicació envia una sol·licitud per rebre dades al RxBuffer amb un valor de '12345678' des del perifèric.
- El DMA omple el RxBuffer amb un valor de "12345678" a la SRAM.
- Com que la línia de memòria cau corresponent al RxBuffer està en un estat no vàlid, un accés de lectura per part de la CPU fa que el RxBuffer es copie de la memòria principal a la memòria cau de dades.
Figura 1-7. Gestionar la coherència de la memòria cau de transferència de perifèric a memòria
Implementació
Configuració
En un projecte MPLAB Harmony v3 per al PIC32 MZ EF, les operacions de manteniment de la memòria cau estan habilitades per MPLAB Harmony v3 Configurator (MHC) o MPLAB Code Configurator (MCC). A MHC o MCC, la configuració de configuració es pot trobar a gràfic del projecte > Sistema > Configuració MIPS > Cache.
Figura 2-1. Configuració de la memòria cau MHC
API de manteniment de la memòria cau de dades
MPLAB Harmony v3 proporciona les següents API de manteniment de la memòria cau de dades:
Taula 2-1. API de manteniment de la memòria cau de dades
Nom | Descripció |
DCACHE_INVALIDATE (anul·lat) | Invalida tota la memòria cau de dades abans d'activar-la. |
DCACHE_CLEAN_BY_ADDR (adreça uint32_t, mida_t sz) | Torneu a escriure i invalideu un interval d'adreces a la memòria cau de dades. |
DCACHE_INVALIDATE_BY_ADDR (adreça uint32_t, mida_t sz) | Invalideu un interval d'adreces a la memòria cau de dades. |
DCACHE_CLEAN_INVALIDATE_BY_ADDR (adreça uint32_t, mida_t sz) | Torneu a escriure i invalideu un interval d'adreces a la memòria cau de dades. |
Notes:
- Les API de manteniment de la memòria cau d'instruccions i dades específiques de l'MCU estan disponibles com a biblioteca de perifèrics (PLIB) plib_cache.c. Consulteu l'aplicació PLIB exampli a:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance. - Quan utilitzeu les API de neteja i invalidació de memòria cau per adreces:
- adreça: Ha d'estar alineat amb el límit de la mida de la línia de la memòria cau. Això vol dir que l'adreça del buffer DMA s'ha d'alinear amb el límit de 16 bytes.
- mida d: Ha de ser un múltiple de la mida de la línia de la memòria cau. Això vol dir que la mida del buffer DMA ha de ser un múltiple de 16 bytes.
Example
El següent codi example demostra l'ús de les API de manteniment de la memòria cau de dades juntament amb les API de la biblioteca de perifèrics MPLAB Harmony v3 DMA per llegir i escriure dades a través de la interfície UART.
Per obtenir el codi font detallat, consulteu l'aplicació PLIB exampli a:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance.
Nota: Els problemes de coherència de la memòria cau que s'han comentat anteriorment també es poden gestionar en el moment de l'enllaç mitjançant l'atribut de variable coherent al buffer de dades en disputa.
unsigned int __attribute__((coherent)) buffer[1024];
En aquest codi, el compilador assigna (en el moment de l'enllaç) l'element 1024 a la regió de memòria no cacheable KSEG1.
Referències
Els documents següents s'enumeren com a recursos. Per obtenir informació addicional sobre la coherència de la memòria cau i els productes de Microxip relacionats, consulteu el Microxip Webo poseu-vos en contacte amb un representant local de vendes de Microxip.
- Ús de la memòria cau L1 en dispositius PIC32MZ
- PIC32MZ EF Manteniment de la memòria cau PLIB Example
- El paquet MPLAB Harmony v3 Quick Docs ofereix pàgines d'ajuda autònomes perquè els usuaris comencin a desenvolupar aplicacions als MCU SAM i PIC32 de 32 bits de Microchip. Baixeu el repositori quick_docs i comenceu amb index.html file disponible a la carpeta de documents.
La versió en línia està disponible a: microchip-mplab-harmony.github.io/quick_docs/. - Aterratge MPLAB Harmony v3 web pàgina: www.microchip.com/mplab/mplab-harmony
El Microxip Weblloc
Microxip ofereix suport en línia a través del nostre weblloc a www.microchip.com/. Això weblloc s'utilitza per fer filei informació fàcilment disponible per als clients. Alguns dels continguts disponibles inclouen:
- Suport al producte - Fulls de dades i errates, notes d'aplicació i sampprogrames, recursos de disseny, guies d'usuari i documents de suport de maquinari, últimes versions de programari i programari arxivat
- Suport tècnic general - Preguntes freqüents (FAQ), sol·licituds d'assistència tècnica, grups de discussió en línia, llista de membres del programa de socis de disseny de Microchip
- Negoci de Microxip - Selector de productes i guies de comandes, últimes notes de premsa de Microxip, llistat de seminaris i esdeveniments, llistats d'oficines de vendes de Microxip, distribuïdors i representants de fàbriques
Servei de notificació de canvis de producte
El servei de notificació de canvis de producte de Microchip ajuda a mantenir els clients al dia dels productes de Microchip. Els subscriptors rebran una notificació per correu electrònic sempre que hi hagi canvis, actualitzacions, revisions o errates relacionades amb una família de productes o una eina de desenvolupament especificada d'interès.
Per registrar-se, aneu a www.microchip.com/pcn i seguiu les instruccions de registre.
Atenció al client
Els usuaris dels productes Microxip poden rebre assistència a través de diversos canals:
- Distribuïdor o representant
- Oficina local de vendes
- Enginyer de solucions integrades (ESE)
- Suport tècnic
Els clients han de contactar amb el seu distribuïdor, representant o ESE per obtenir assistència. Les oficines de vendes locals també estan disponibles per ajudar els clients. En aquest document s'inclou una llista d'oficines de vendes i ubicacions.
El suport tècnic està disponible a través de weblloc a: www.microchip.com/support
Funció de protecció de codi de dispositius de microxip
Tingueu en compte els detalls següents de la funció de protecció del codi als productes Microxip:
- Els productes de microxip compleixen les especificacions contingudes a la seva fitxa de dades particular de microxip.
- Microxip creu que la seva família de productes és segura quan s'utilitza de la manera prevista, dins de les especificacions de funcionament i en condicions normals.
- Microxip valora i protegeix de manera agressiva els seus drets de propietat intel·lectual. Els intents d'infringir les funcions de protecció del codi del producte Microxip estan estrictament prohibits i poden infringir la Llei de drets d'autor de Digital Millennium.
- Ni Microchip ni cap altre fabricant de semiconductors poden garantir la seguretat del seu codi. La protecció del codi no vol dir que estem garantint que el producte sigui "irrompible". La protecció del codi està en constant evolució. Microxip es compromet a millorar contínuament les funcions de protecció del codi dels nostres productes.
Avís Legal
Aquesta publicació i la informació que s'hi inclou només es poden utilitzar amb productes Microchip, inclòs per dissenyar, provar i integrar productes Microchip amb la vostra aplicació. L'ús d'aquesta informació de qualsevol altra manera viola aquests termes. La informació sobre les aplicacions del dispositiu només es proporciona per a la vostra comoditat i pot ser substituïda per actualitzacions. És la vostra responsabilitat assegurar-vos que la vostra aplicació compleix les vostres especificacions. Poseu-vos en contacte amb l'oficina local de vendes de Microxip per obtenir assistència addicional o, per obtenir assistència addicional a www.microchip.com/en-us/support/design-help/client-support-services.
AQUESTA INFORMACIÓ ÉS PROPORCIONADA PER MICROCHIP "TAL CUAL". MICROCHIP NO FA REPRESENTACIONS NI GARANTIES DE CAP TIPUS, JA SIGUI EXPRESSES O IMPLÍCITES, ESCRITES NI ORALS, LEGALS.
O D'UN ALTRE MOD, RELACIONATS AMB LA INFORMACIÓ, INCLOSANT, PER EXEMPLAR, LES GARANTIES IMPLÍCITES DE NO INFRACCIÓ, COMERCIABILITAT I IDONEITAT PER A UN FINS PARTICULAR, O GARANTIES RELACIONATS AMB EL SEU ESTAT, QUALITAT O RENDIMENT.
EN CAP CAS, MICROCHIP SERÀ RESPONSABLE DE CAP PÈRDUA INDIRECTA, ESPECIAL, PUNITIVA, INCIDENTAL O CONSEQUENTAL, DANNY, COST O DESPESA DE QUALSEVOL TIPUS RELACIONATS AMB LA INFORMACIÓ O EL SEU ÚS, SEGUI QUE SIEMPRE CAUSAT, FINS I TOT QUÈ SIGUI AIXÒ. POSSIBILITAT O ELS DANYS SÓN PREVISIBLES. EN LA MÀXIMA MESURA PERMETIDA PER LA LLEI, LA RESPONSABILITAT TOTAL DE MICROCHIP EN TOTES LES RECLAMACIONS DE QUALSEVOL MANERA RELACIONADAS AMB LA INFORMACIÓ O EL SEU ÚS NO SUPERARÀ L'IMPORT DE LES TARIFES, SI N'HEU, QUE HEU PAGAT DIRECTAMENT A MICROCHIP PER A LA INFORMACIÓ.
L'ús de dispositius Microxip en aplicacions de suport vital i/o seguretat és totalment a risc del comprador, i el comprador es compromet a defensar, indemnitzar i excloure Microxip de qualsevol dany, reclamació, demanda o despeses derivades d'aquest ús. No es transmet cap llicència, implícita o d'una altra manera, sota cap dret de propietat intel·lectual de Microxip tret que s'indiqui el contrari.
Marques comercials
El nom i el logotip del Microxip, el logotip del Microxip, Adaptec, AnyRate, AVR, logotip d'AVR, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMDs, maXlu, maXTouch, MediaLB, megaAVR, Microsemi, logotip de Microsemi, MOST, logotip MOST, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, logotip PIC32, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, logotip SST, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron i XMEGA són marques registrades de Microchip Technology Incorporated als EUA i altres països.
AgileSwitch, APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper Speed Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, logotip de ProASIC Plus, Quiet- Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath i ZL són marques registrades de Microchip Technology Incorporated als EUA
Supressió de claus adjacents, AKS, Analog-for-the-Digital Age, Qualsevol condensador, AnyIn, AnyOut, Augmented Switching, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic Average Matching, DAM , ECAN, Espresso T1S, EtherGREEN, GridTime, IdealBridge, Programació en sèrie en circuit, ICSP, INICnet, Paral·lelització intel·ligent, Connectivitat entre xips, JitterBlocker, Knob-on-Display, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, logotip de MPLAB Certified, MPLIB, MPLINK, MultiTRAK, NetDetach, NVM Express, NVMe, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REALICE , Ripple Blocker, RTAX, RTG4, SAM-ICE, Serial Quad I/O, simpleMAP, SimpliPHY, SmartBuffer, SmartHLS, SMART-IS, storClad, SQI, SuperSwitcher, SuperSwitcher II, Switchtec, SynchroPHY, Total Endurance, TSHARC, USBCheck, VariSense, VectorBlox, VeriPHY, ViewSpan, WiperLock, XpressConnect i ZENA són marques comercials de Microchip Technology Incorporated al
EUA i altres països.
SQTP és una marca de servei de Microchip Technology Incorporated als EUA
El logotip d'Adaptec, Frequency on Demand, Silicon Storage Technology, Symmcom i Trusted Time són marques registrades de Microchip Technology Inc. a altres països.
GestIC és una marca comercial registrada de Microchip Technology Germany II GmbH & Co. KG, una filial de Microchip Technology Inc., a altres països.
Totes les altres marques comercials esmentades aquí són propietat de les seves respectives empreses.
© 2021, Microchip Technology Incorporated i les seves filials. Tots els drets reservats.
ISBN: 978-1-5224-9447-8
Sistema de gestió de la qualitat
Per obtenir informació sobre els sistemes de gestió de la qualitat de Microchip, visiteu www.microchip.com/quality.
Vendes i servei a tot el món
AMÈRICES
Oficina Corporativa
2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200
Fax: 480-792-7277 Suport tècnic:
www.microchip.com/support
Web Adreça:
www.microchip.com
Atlanta
Duluth, GA
Tel: 678-957-9614
Fax: 678-957-1455 Austin, TX
Tel: 512-257-3370 Boston
Westborough, MA
Tel: 774-760-0087
Fax: 774-760-0088 Chicago
Itasca, IL
Tel: 630-285-0071
Fax: 630-285-0075 Dallas
Addison, TX
Tel: 972-818-7423
Fax: 972-818-2924 Detroit
Novi, MI
Tel: 248-848-4000 Houston, TX
Tel: 281-894-5983 Indianàpolis
Noblesville, IN
Tel: 317-773-8323
Fax: 317-773-5453
Tel: 317-536-2380
Los Angeles
Mission Viejo, CA
Tel: 949-462-9523
Fax: 949-462-9608
Tel: 951-273-7800 Raleigh, NC
Tel: 919-844-7510
Nova York, NY
Tel: 631-435-6000
San Jose, CA
Tel: 408-735-9110
Tel: 408-436-4270 Canadà - Toronto
Tel: 905-695-1980
Fax: 905-695-2078
ASIA/PACÍFIC
Austràlia - Sydney
Tel: 61-2-9868-6733 Xina – Pequín
Tel: 86-10-8569-7000 Xina – Chengdu
Tel: 86-28-8665-5511 Xina – Chongqing Tel: 86-23-8980-9588 Xina – Dongguan
Tel: 86-769-8702-9880 Xina – Guangzhou Tel: 86-20-8755-8029 Xina – Hangzhou
Tel: 86-571-8792-8115 Xina – Hong Kong SAR Tel: 852-2943-5100 Xina – Nanjing
Tel: 86-25-8473-2460 Xina – Qingdao
Tel: 86-532-8502-7355 Xina – Xangai
Tel: 86-21-3326-8000 Xina – Shenyang
Tel: 86-24-2334-2829 Xina – Shenzhen
Tel: 86-755-8864-2200 Xina – Suzhou
Tel: 86-186-6233-1526 Xina – Wuhan
Tel: 86-27-5980-5300 Xina – Xian
Tel: 86-29-8833-7252 Xina – Xiamen
Tel: 86-592-2388138 Xina – Zhuhai
Tel: 86-756-3210040
ASIA/PACÍFIC
Índia - Bangalore
Tel: 91-80-3090-4444 Índia – Nova Delhi
Tel: 91-11-4160-8631 Índia – Pune
Tel: 91-20-4121-0141 Japó – Osaka
Tel: 81-6-6152-7160 Japó – Tòquio
Tel: 81-3-6880- 3770 Corea – Daegu
Tel: 82-53-744-4301 Corea – Seül
Tel: 82-2-554-7200 Malàisia – Kuala Lumpur Tel: 60-3-7651-7906 Malàisia – Penang
Tel: 60-4-227-8870 Filipines – Manila Tel: 63-2-634-9065 Singapur
Tel: 65-6334-8870 Taiwan – Hsin Chu
Tel: 886-3-577-8366 Taiwan – Kaohsiung Tel: 886-7-213-7830 Taiwan – Taipei
Tel: 886-2-2508-8600 Tailàndia – Bangkok Tel: 66-2-694-1351 Vietnam – Ho Chi Minh Tel: 84-28-5448-2100
EUROPA
Àustria – Wels
Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 Dinamarca – Copenhaguen Tel: 45-4485-5910
Fax: 45-4485-2829 Finlàndia – Espoo
Tel: 358-9-4520-820 França – París
Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Alemanya – Garching Tel: 49-8931-9700 Alemanya – Haan
Tel: 49-2129-3766400 Alemanya – Heilbronn Tel: 49-7131-72400 Alemanya – Karlsruhe Tel: 49-721-625370 Alemanya – Munic Tel: 49-89-627-144-0 Fax: 49-89-627-144 -44 Alemanya – Rosenheim Tel: 49-8031-354-560 Israel – Ra'anana
Tel: 972-9-744-7705 Itàlia – Milà
Tel: 39-0331-742611 Fax: 39-0331-466781 Itàlia – Pàdua
Tel: 39-049-7625286 Països Baixos – Drunen Tel: 31-416-690399 Fax: 31-416-690340 Noruega – Trondheim Tel: 47-72884388 Polònia – Varsòvia
Tel: 48-22-3325737 Romania – Bucarest Tel: 40-21-407-87-50 Espanya – Madrid
Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Suècia – Gothenberg Tel: 46-31-704-60-40 Suècia – Estocolm Tel: 46-8-5090-4654 Regne Unit – Wokingham
Tel: 44-118-921-5800 Fax: 44-118-921-5820
Documents/Recursos
![]() |
MICROCHIP TB3308 Gestió de problemes de coherència de la memòria cau en temps d'execució mitjançant el manteniment de la memòria cau [pdfGuia de l'usuari TB3308 Gestió de problemes de coherència de la memòria cau en temps d'execució mitjançant el manteniment de la memòria cau, TB3308, gestió dels problemes de coherència de la memòria cau en temps d'execució mitjançant el manteniment de la memòria cau, temps d'execució mitjançant el manteniment de la memòria cau, manteniment de la memòria cau |