MICROCHIP TB3308 Manexando problemas de coherencia da caché durante o tempo de execución usando o mantemento da caché
Introdución
O problema de coherencia da caché é inevitable en aplicacións que se executan en microcontroladores (MCU) que teñen rexións de memoria caché, que usan un acceso directo á memoria (DMA) para as operacións de transferencia de datos. Isto débese a que a CPU realiza unha operación de lectura/escritura desde a caché mentres o DMA transfire datos entre o periférico e a memoria física.
Un dos métodos para xestionar a coherencia da caché require que a aplicación xestione a caché en tempo de execución mediante as operacións de mantemento da caché. MPLAB® Harmony v3 ofrece interfaces de programas de aplicación (API) de mantemento da caché para dispositivos PIC32MZ.
Este documento explica como unha aplicación pode xestionar problemas de coherencia da caché durante o tempo de execución mediante as API de xestión da caché baixo MPLAB Harmony v3.
Nota: Os conceptos que se analizan neste documento son comúns a todos os MCU PIC32MZ. O PIC32MZ EF utilízase como example para discutir os conceptos.
Descrición
A seguinte figura ilustra o problema de coherencia da caché observado cando o DMA le da SRAM no MCU PIC32MZ EF.
Figura 1-1. Transferencia de memoria a periférico (lecturas DMA desde SRAM)
A aplicación envía unha solicitude para transferir o valor de TxBuffer do búfer de datos "ABCDEFGH" ao periférico. A CPU enche o búfer de escritura DMA (TxBuffer) cos datos que se van escribir "ABCDEFGH" no periférico.
Non obstante, debido á política de caché Write Back e Write Allocate establecida, é posible que o búfer de escritura DMA (TxBuffer) non se escriba inmediatamente na memoria principal e os datos escritos poden permanecer na caché de datos. O búfer de escritura DMA (TxBuffer) da memoria principal aínda contén o valor antigo '12345678'.
Cando o DMA se activa para iniciar a transferencia de memoria ao periférico, o DMA le o búfer (TxBuffer) da memoria principal como "12345678". Como resultado, o DMA acaba transferindo datos obsoletos ao periférico.
A seguinte figura ilustra o problema de coherencia da caché observado cando o DMA escribe na SRAM.
Figura 1-2. Transferencia de periférico a memoria (escrituras DMA en SRAM)
A aplicación envía unha solicitude para recibir datos no RxBuffer cun valor de '12345678' desde o periférico. O DMA enche o RxBuffer cun valor de '12345678' na SRAM. Non obstante, a caché de datos non se actualiza e segue mantendo os datos anteriores. Cando a CPU le o RxBuffer, termina lendo o valor anterior contido no búfer como "ABCDEFGH".
Manexo da coherencia da caché
Os dous métodos para xestionar os problemas de coherencia da caché ilustráronse en Transferencia de memoria a periférico (lecturas DMA desde SRAM) e Transferencia de periférico a memoria (escrituras DMA a SRAM). Estes métodos implican que a aplicación xestione a caché en tempo de execución mediante as operacións de mantemento. As operacións inclúen a capacidade de realizar estas accións:
Invalidar a caché: Marca as liñas da caché como non válidas. O acceso posterior obriga a copiar os datos da memoria principal á caché.
Limpar a caché: Escribe as liñas de caché, que están marcadas como sucias, de volta na memoria principal. Para xestionar a coherencia da caché que se comenta en Transferencia de memoria a periférico (lecturas DMA desde SRAM), realice as seguintes accións:
- A aplicación enche o búfer de datos de escritura (TxBuffer) cun valor "ABCEDFGH". Debido á política de caché predeterminada (Write Back and Write Allocate), os datos escritos poden estar na caché.
Figura 1-3. Enche o búfer de escritura - Limpe o búfer de datos de escritura (TxBuffer) co valor "ABCDEFGH" na memoria principal chamando á API de caché limpa.
Figura 1-4. Vaciar o búfer de escritura - A aplicación envía unha solicitude para transferir datos do TxBuffer cun valor de 'ABCDEFGH' ao periférico.
Figura 1-5. Escribe a Periférico
Para xestionar a coherencia da caché como se explica en Transferencia de periféricos a memoria (escrituras DMA en SRAM), siga estes pasos:
- A aplicación chama á API Invalidate cache para marcar as liñas da caché como non válidas.
Figura 1-6. Invalidar a caché - A aplicación envía unha solicitude para recibir datos no RxBuffer cun valor de '12345678' desde o periférico.
- O DMA enche o RxBuffer cun valor de '12345678' na SRAM.
- Dado que a liña de caché correspondente ao RxBuffer está nun estado non válido, un acceso de lectura da CPU provoca que o RxBuffer se copie da memoria principal á caché de datos.
Figura 1-7. Xestionar a coherencia da caché de transferencia de periférico a memoria
Implementación
Configuración
Nun proxecto MPLAB Harmony v3 para o PIC32 MZ EF, as operacións de mantemento da caché están habilitadas polo MPLAB Harmony v3 Configurator (MHC) ou o MPLAB Code Configurator (MCC). En MHC ou MCC, a configuración de configuración pódese atopar no gráfico do proxecto > Sistema > Configuración MIPS > Caché.
Figura 2-1. Configuración da caché MHC
API de mantemento de caché de datos
MPLAB Harmony v3 ofrece as seguintes API de mantemento da caché de datos:
Táboa 2-1. API de mantemento de caché de datos
Nome | Descrición |
DCACHE_INVALIDATE (anulado) | Invalida toda a caché de datos antes de activala. |
DCACHE_CLEAN_BY_ADDR (enderezo uint32_t, tamaño_t sz) | Volve escribir e invalidar un intervalo de enderezos na caché de datos. |
DCACHE_INVALIDATE_BY_ADDR (enderezo uint32_t, tamaño_t sz) | Invalidar un intervalo de enderezos na caché de datos. |
DCACHE_CLEAN_INVALIDATE_BY_ADDR (enderezo uint32_t, tamaño_t sz) | Volve escribir e invalidar un intervalo de enderezos na caché de datos. |
Notas:
- Os datos específicos de MCU e as API de mantemento da caché de instrucións están dispoñibles como biblioteca de periféricos (PLIB) plib_cache.c. Consulte a aplicación PLIB example en:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance. - Ao usar as API de limpeza e invalidación da caché por enderezo:
- enderezo: Debe estar aliñado co límite do tamaño da liña da caché. Isto significa que o enderezo do búfer DMA debe estar aliñado co límite de 16 bytes.
- dsize: Debe ser un múltiplo do tamaño da liña da caché. Isto significa que o tamaño do búfer DMA debe ser un múltiplo de 16 bytes.
Example
O seguinte código example demostra o uso das API de mantemento da caché de datos xunto coas API da biblioteca de periféricos MPLAB Harmony v3 DMA para ler e escribir datos a través da interface UART.
Para o código fonte detallado, consulte a aplicación PLIB example en:
https://github.com/Microchip-MPLAB-Harmony/csp_apps_pic32mz_ef/tree/master/apps/cache/cache_maintenance.
Nota: Os problemas de coherencia da caché comentados anteriormente tamén se poden tratar no momento da ligazón usando o atributo de variable coherente ao búfer de datos en liza.
unsigned int __attribute__((coherente)) buffer[1024];
Neste código, o compilador asigna (no momento da ligazón) o elemento 1024 na rexión de memoria non caché KSEG1.
Referencias
Os seguintes documentos están listados como recursos. Para obter información adicional sobre a coherencia da caché e os produtos relacionados con Microchip, consulte o Microchip Websitio ou póñase en contacto cun representante local de vendas de Microchip.
- Usando a caché L1 en dispositivos PIC32MZ
- PIC32MZ EF Mantemento de caché PLIB Example
- O paquete MPLAB Harmony v3 Quick Docs ofrece páxinas de axuda autónomas para que os usuarios comecen a desenvolver aplicacións nos MCU SAM e PIC32 de 32 bits de Microchip. Descarga o repositorio quick_docs e comeza co index.html file dispoñible no cartafol de documentos.
A versión en liña está dispoñible en: microchip-mplab-harmony.github.io/quick_docs/. - MPLAB Harmony v3 aterraxe web páxina: www.microchip.com/mplab/mplab-harmony
O Microchip Websitio
Microchip ofrece soporte en liña a través do noso websitio en www.microchip.com/. Isto websitio úsase para facer files e información facilmente dispoñible para os clientes. Algúns dos contidos dispoñibles inclúen:
- Apoio ao produto - Fichas técnicas e erratas, notas de aplicación e sample programas, recursos de deseño, guías de usuario e documentos de soporte de hardware, últimas versións de software e software arquivado
- Soporte técnico xeral - Preguntas frecuentes (FAQ), solicitudes de soporte técnico, grupos de discusión en liña, lista de membros do programa de socios de deseño de Microchip
- Negocio de Microchip - Selector de produtos e guías de pedidos, últimos comunicados de prensa de Microchip, listado de seminarios e eventos, listados de oficinas de vendas, distribuidores e representantes de fábrica de Microchip
Servizo de notificación de cambios de produto
O servizo de notificación de cambios de produtos de Microchip axuda a manter os clientes ao día dos produtos de Microchip. Os subscritores recibirán unha notificación por correo electrónico sempre que haxa cambios, actualizacións, revisións ou erratas relacionadas cunha familia de produtos especificada ou ferramenta de desenvolvemento de interese.
Para rexistrarte, vai a www.microchip.com/pcn e siga as instrucións de rexistro.
Atención ao cliente
Os usuarios de produtos Microchip poden recibir asistencia a través de varias canles:
- Distribuidor ou Representante
- Oficina local de vendas
- Enxeñeiro de solucións integradas (ESE)
- Soporte técnico
Os clientes deben contactar co seu distribuidor, representante ou ESE para obter asistencia. As oficinas de vendas locais tamén están dispoñibles para axudar aos clientes. Neste documento inclúese unha lista de oficinas de vendas e locais.
O soporte técnico está dispoñible a través de websitio en: www.microchip.com/support
Función de protección de código de dispositivos de microchip
Teña en conta os seguintes detalles da función de protección de código nos produtos Microchip:
- Os produtos de microchip cumpren as especificacións contidas na súa ficha de datos de microchip.
- Microchip considera que a súa familia de produtos é segura cando se usa da forma prevista, dentro das especificacións de funcionamento e en condicións normais.
- Microchip valora e protexe agresivamente os seus dereitos de propiedade intelectual. Os intentos de incumprir as funcións de protección do código do produto Microchip están estrictamente prohibidos e poden infrinxir a Digital Millennium Copyright Act.
- Nin Microchip nin ningún outro fabricante de semicondutores poden garantir a seguridade do seu código. A protección do código non significa que esteamos garantindo que o produto sexa "irrompible". A protección do código está en constante evolución. Microchip comprométese a mellorar continuamente as funcións de protección do código dos nosos produtos.
Aviso Legal
Esta publicación e a información que aparece aquí só poden usarse con produtos Microchip, incluso para deseñar, probar e integrar produtos Microchip coa súa aplicación. O uso desta información de calquera outra forma viola estes termos. A información relativa ás aplicacións do dispositivo ofrécese só para a súa comodidade e pode ser substituída por actualizacións. É a súa responsabilidade asegurarse de que a súa aplicación cumpre coas súas especificacións. Póñase en contacto coa súa oficina local de vendas de Microchip para obter asistencia adicional ou obtén soporte adicional en www.microchip.com/en-us/support/design-help/client-support-services.
ESTA INFORMACIÓN ESTÁ PROPORCIONADA POR MICROCHIP "TAL CUAL". MICROCHIP NON OFRECE REPRESENTACIÓNS OU GARANTÍAS DE NINGÚN TIPO, XERA EXPRESA OU IMPLÍCITA, ESCRITA OU ORAL, LEGAL
OU DE OUTRO MODO, RELACIONADO COA INFORMACIÓN INCLUÍENDO, PERO NON LIMITADO A CALQUERA GARANTÍA IMPLÍCITA DE NON INFRACCIÓN, COMERCIABILIDADE E ADECUACIÓN PARA UN FIN PARTICULAR, OU GARANTÍAS RELACIONADAS CO SEU ESTADO, CALIDADE OU RENDEMENTO.
EN NINGÚN CASO MICROCHIP SERÁ RESPONSABLE DE NINGÚN TIPO DE PERDA, DANO, CUSTO OU GASTO INDIRECTO, ESPECIAL, PUNITIVO, INCIDENTAL OU CONSECUENCIAL DE NINGÚN TIPO RELACIONADO COA INFORMACIÓN OU O SEU USO, AÍNDA QUE SE SEXA O CAUSADO QUE SEXA O SEU ADVERTENCIA. POSIBILIDADE OU OS DANOS SON PREVISIBLES. NA MÁXIMA MEDIDA PERMITIDA POLA LEI, A RESPONSABILIDADE TOTAL DE MICROCHIP SOBRE TODAS LAS RECLAMACIONS DE CALQUERA FORMA RELACIONADAS COA INFORMACIÓN OU O SEU USO NON SUPERARÁ O IMPORTE DAS TAXAS, SE HOXE, QUE TIÑAS PAGADA DIRECTAMENTE A MICROCHIP POLA INFORMACIÓN.
O uso de dispositivos Microchip en aplicacións de soporte vital e/ou de seguridade corre totalmente a risco do comprador, e o comprador comprométese a defender, indemnizar e eximir a Microchip de calquera e todos os danos, reclamacións, demandas ou gastos derivados de tal uso. Non se transmite ningunha licenza, implícita ou doutra forma, baixo ningún dereito de propiedade intelectual de Microchip a menos que se indique o contrario.
Marcas comerciais
O nome e o logotipo de Microchip, o logotipo de Microchip, Adaptec, AnyRate, AVR, logotipo de AVR, AVR Freaks, BesTime, BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheckSty, LinkMDs, maXlu, maXTouch, MediaLB, megaAVR, Microsemi, Logotipo de Microsemi, MOST, MOST logotipo, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash , Symmetricom, SyncServer, Tachyon, TimeSource, tinyAVR, UNI/O, Vectron e XMEGA son marcas rexistradas de Microchip Technology Incorporated nos EUA e noutros países.
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, logo ProASIC Plus, Quiet- Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, TrueTime, WinPath e ZL son marcas rexistradas de Microchip Technology Incorporated nos EUA
Supresión de teclas adxacentes, AKS, Analog-for-the-Digital Age, Any Capacitor, 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ón en serie en circuito, ICSP, INICnet, Paralelo intelixente, Conectividade entre chips, JitterBlocker, Knob-on-Display, maxCrypto, maxView, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, 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 e ZENA son marcas comerciais de Microchip Technology Incorporated.
EUA e outros países.
SQTP é unha marca de servizo de Microchip Technology Incorporated nos EUA
O logotipo de Adaptec, Frequency on Demand, Silicon Storage Technology, Symmcom e Trusted Time son marcas rexistradas de Microchip Technology Inc. noutros países.
GestIC é unha marca rexistrada de Microchip Technology Germany II GmbH & Co. KG, unha subsidiaria de Microchip Technology Inc., noutros países.
Todas as outras marcas rexistradas aquí mencionadas son propiedade das súas respectivas compañías.
© 2021, Microchip Technology Incorporated e as súas filiais. Todos os dereitos reservados.
ISBN: 978-1-5224-9447-8
Sistema de Xestión da Calidade
Para obter información sobre os sistemas de xestión da calidade de Microchip, visite www.microchip.com/quality.
Vendas e servizo no mundo
AMÉRICAS
Oficina Corporativa
2355 West Chandler Blvd. Chandler, AZ 85224-6199 Teléfono: 480-792-7200
Fax: 480-792-7277 Soporte técnico:
www.microchip.com/support
Web Enderezo:
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
Os Ánxeles
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ÍFICO
Australia - Sidney
Teléfono: 61-2-9868-6733 China – Pequín
Teléfono: 86-10-8569-7000 China – Chengdu
Teléfono: 86-28-8665-5511 China – Chongqing Teléfono: 86-23-8980-9588 China – Dongguan
Teléfono: 86-769-8702-9880 China – Guangzhou Teléfono: 86-20-8755-8029 China – Hangzhou
Teléfono: 86-571-8792-8115 China – Hong Kong SAR Tel: 852-2943-5100 China – Nanjing
Teléfono: 86-25-8473-2460 China – Qingdao
Teléfono: 86-532-8502-7355 China – Shanghai
Teléfono: 86-21-3326-8000 China – Shenyang
Teléfono: 86-24-2334-2829 China – Shenzhen
Teléfono: 86-755-8864-2200 China – Suzhou
Teléfono: 86-186-6233-1526 China – Wuhan
Teléfono: 86-27-5980-5300 China – Xian
Teléfono: 86-29-8833-7252 China – Xiamen
Teléfono: 86-592-2388138 China – Zhuhai
Teléfono: 86-756-3210040
ASIA/PACÍFICO
India - Bangalore
Teléfono: 91-80-3090-4444 India - Nova Deli
Teléfono: 91-11-4160-8631 India – Pune
Teléfono: 91-20-4121-0141 Xapón – Osaka
Teléfono: 81-6-6152-7160 Xapón - Tokio
Teléfono: 81-3-6880- 3770 Corea – Daegu
Teléfono: 82-53-744-4301 Corea – Seúl
Teléfono: 82-2-554-7200 Malaisia – Kuala Lumpur Teléfono: 60-3-7651-7906 Malaisia – Penang
Teléfono: 60-4-227-8870 Filipinas – Manila Teléfono: 63-2-634-9065 Singapur
Teléfono: 65-6334-8870 Taiwán – Hsin Chu
Teléfono: 886-3-577-8366 Taiwán – Kaohsiung Tel: 886-7-213-7830 Taiwán – Taipei
Tel: 886-2-2508-8600 Tailandia – Bangkok Tel: 66-2-694-1351 Vietnam – Ho Chi Minh Tel: 84-28-5448-2100
EUROPA
Austria - Wels
Teléfono: 43-7242-2244-39 Fax: 43-7242-2244-393 Dinamarca – Copenhague Teléfono: 45-4485-5910
Fax: 45-4485-2829 Finlandia – Espoo
Teléfono: 358-9-4520-820 Francia – París
Teléfono: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Alemaña – Garching Teléfono: 49-8931-9700 Alemaña – Haan
Teléfono: 49-2129-3766400 Alemaña – Heilbronn Tel.: 49-7131-72400 Alemaña – Karlsruhe Tel: 49-721-625370 Alemaña – Múnic Teléfono: 49-89-627-144-0 Fax: 49-89-627-144 -44 Alemaña – Rosenheim Tel: 49-8031-354-560 Israel – Ra'anana
Teléfono: 972-9-744-7705 Italia – Milán
Teléfono: 39-0331-742611 Fax: 39-0331-466781 Italia – Padova
Tel: 39-049-7625286 Holanda – Drunen Tel: 31-416-690399 Fax: 31-416-690340 Noruega – Trondheim Tel: 47-72884388 Polonia – Varsovia
Tel.: 48-22-3325737 Romanía – Bucarest Tel: 40-21-407-87-50 España – Madrid
Teléfono: 34-91-708-08-90 Fax: 34-91-708-08-91 Suecia – Gothenberg Tel: 46-31-704-60-40 Suecia – Estocolmo Teléfono: 46-8-5090-4654 Reino Unido – Wokingham
Tel: 44-118-921-5800 Fax: 44-118-921-5820
Documentos/Recursos
![]() |
MICROCHIP TB3308 Manexando problemas de coherencia da caché durante o tempo de execución usando o mantemento da caché [pdfGuía do usuario TB3308 Manexando problemas de coherencia da caché durante a execución mediante o mantemento da caché, TB3308, xestionando os problemas de coherencia da caché durante a execución mediante o mantemento da caché, o tempo de execución mediante o mantemento da caché, o mantemento da caché |