Completely Disable Cache

Last modified by Microchip on 2023/11/10 12:49

You probably don’t want to do this because of lower performance (~ 10x) and higher power consumption. That said, this is how you do it.

…xc32/vx.xx/pic32-libs/libpic32/stubs XC32 install directory

The MPLAB® XC32 C compiler provides an easy-to-use cache configuration file, pic32_init_cache.S. If you copy this file into your local project directory it will override the default runtime setup code used to initialize the cache.

Change the __PIC32_CACHE_MODE from _CACHE_WRITEBACK_WRITEALLOCATE to _CACHE_DISABLE.

You can find the pic32_init_cache.S file in the …xc32/vx.xx/pic32-libs/libpic32/stubs XC32 install directory.

/* Cache Coherency Attributes */
#define _CACHE_WRITEBACK_WRITEALLOCATE      3
#define _CACHE_WRITETHROUGH_WRITEALLOCATE   1
#define _CACHE_WRITETHROUGH_NOWRITEALLOCATE 0
#define _CACHE_DISABLE                      2

/* Set __PIC32_CACHE_MODE to the desired coherency attribute */
//#define __PIC32_CACHE_MODE      _CACHE_WRITEBACK_WRITEALLOCATE    //default runtime setup policy
#define __PIC32_CACHE_MODE      _CACHE_DISABLE

__PIC32_CACHE_MODE is used to define the KSEG0 cache coherency algorithm bits (K0<2:0>) found in the PIC32MZ’s CONFIG register. Please refer to the device datasheet for details.