Hello,
having read several examples for setting the MC Shared memory non cacheable (e.g. the powerpoint of this thread http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/164833.aspx or http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/158374.aspx and the example in gel-files and cppi), I'm not able to get a simple example working. I'm working with a EVM-C6678 and try to set a region of 1 MB starting at 0x0C10000 non cachable (mapping it to 0xE0000000). Purpose is to use this region for all cores without thinking about the cache.
Every core (as every core has its own MPAX Registers) setup the MPAX / MAR registers:
#define XMC_BASE_ADDR (0x08000000)
#define MAPPED_VIRTUAL_ADDRESS 0xE0000000
#define XMPAX3_L (*(int*) (XMC_BASE_ADDR + 0x00000018))
#define XMPAX3_H (*(int*) (XMC_BASE_ADDR + 0x0000001C))
XMPAX3_H = 0x00E00013; // Logical base + segment size
XMPAX3_L = 0x0000C1FF; // Physical replace + permissions
CACHE_setMemRegionInfo(MAPPED_VIRTUAL_ADDRESS >> 24, 0, 0);
Setting variables on the cores, I'm not able to see the corresponding values on every core. Disabling the whole L1-Cache on every core (see below), everything works fine. What's wrong in the configuration?
Cache_Size sCache;
Cache_getSize(&sCache);
sCache.l1dSize = Cache_L1Size_0K;
Cache_setSize(&sCache);
Best Regards,
Bernd