大家好 问一下有关XMC的问题
在网上找到个有关XMC的例程:blog.csdn.net/.../108962336
实现了0x0c000000到0x20100000的4M内存映射
Cache_MSMC_initial(3,0x20000,21,0x00C000);
#include <ti/csl/csl_xmc.h>
#include <ti/csl/csl_xmcAux.h>
#define MAR_BASE_ADDR (0x01848000)
void Cache_MSMC_initial(Uint32 index,Uint32 bAddr,Uint8 segSize,Uint32 rAddr)
{
CSL_XMC_XMPAXH mpaxh; // 存储保护和地址扩展寄存器(H)
CSL_XMC_XMPAXL mpaxl; // 存储保护和地址扩展寄存器(L)
/******************** 地址重映射 *********************/
mpaxh.bAddr = bAddr; // 基地址(匹配逻辑地址的高位地址)
mpaxh.segSize = segSize; // 重映射区段大小
// 设置XMPAXH寄存器. Writes:XMC_XMPAXH_SEGSZ,XMC_XMPAXH_BADDR.
CSL_XMC_setXMPAXH (index, &mpaxh);
// 设置该区段地址的访问权限
mpaxl.ux = 1;
mpaxl.uw = 1;
mpaxl.ur = 1;
mpaxl.sx = 1;
mpaxl.sw = 1;
mpaxl.sr = 1;
mpaxl.rAddr = rAddr;
// 设置XMPAXL寄存器.
CSL_XMC_setXMPAXL (index, &mpaxl);
// 读取XMPAXL寄存器.
CSL_XMC_getXMPAXL (index, &mpaxl);
/******************** 地址重映射 *********************/
*(unsigned int *)(MAR_BASE_ADDR+ 4*(bAddr>>24))= 0x0; //关闭重映射地址处cache
}
现在有几个问题就是:
1 Cache_MSMC_initial(3,0x20000,21,0x00C000);里的0x20000如何对应上0x20100000 0x00C000如何对应上0x0c000000?
2 #define MAR_BASE_ADDR (0x01848000) 这个地址是什么意思 在手册里查不到?
3 最后的*(unsigned int *)(MAR_BASE_ADDR+ 4*(bAddr>>24))= 0x0; 关闭的是谁的cache?我算了下MAR_BASE_ADDR+ 4*(bAddr>>24)还等于0x01848000