体育网站建设的分析,wordpress输出,商城网站建设需求,谷歌排名推广C6678-缓存和内存 全局内存映射扩展内存控制器#xff08;XMC#xff09;-MPAX内存保护与地址扩展使用例程缓存 全局内存映射 扩展内存控制器#xff08;XMC#xff09;-MPAX内存保护与地址扩展 每个C66x核心都具有相同大小的L1和L2缓存#xff0c;并且可配置为普通内存使… C6678-缓存和内存 全局内存映射扩展内存控制器XMC-MPAX内存保护与地址扩展使用例程缓存 全局内存映射 扩展内存控制器XMC-MPAX内存保护与地址扩展 每个C66x核心都具有相同大小的L1和L2缓存并且可配置为普通内存使用。 每个核心也都有独立的MPAX隶属于XMC主要功能如下 a 将32bit逻辑地址映射到36bit物理地址上 b 提供内存保护功能 c 支持16个可配置映射段如下。 注意复位后Segment0映射起始地址为00000H但内部CGEM配置空间不可映射因此实际上只映射了4MB共享内存。 应用实例 这是一个单镜像的多核应用实例每个核心共享代码段因此代码段物理地址相同数据段通过MPAX分别映射到不同的物理地址空间但实际上对于每个核心的应用程序而言所访问数据段的逻辑地址相同。 MPAX的段寄存器分别对应16个段。 映射逻辑地址/物理地址的第12位均为0也就是说映射最小单位为4KB。
使用例程
本例程采用单镜像加载Core0映射4MB的共享空间进行映射确认Core3和Core4分别映射1MB的共享空间到0x0_0c000000和0x0_0c100000的物理内存分别向各自的共享内存起始地址写100个数据。 通过Core0观察0x0c000000和0x0c100000分别可见其他2个核心写入的不同数据。 程序代码《c6678内存映射示例工程下载》
部分应用程序代码
/* CSL Header file */
#include ti/csl/csl_pscAux.h
#include ti/csl/csl_xmcAux.h
#include c6x.h#define MPAX_SEG_1M_Size 0x13
#define MPAX_SEG_4M_Size 0x132
/***************************************************** 注意逻辑地址logicAddr只保留高20bit* 物理地址phyAddr只保留高24bit。*/
void mpax_map(Uint32 segment,Uint32 logicAddr,Uint32 phyAddr,Uint32 segSize)
{CSL_XMC_XMPAXH mpaxh;CSL_XMC_XMPAXL mpaxl;mpaxh.segSize segSize;mpaxh.bAddr logicAddr; //逻辑地址mpaxl.ux 1;mpaxl.uw 1;mpaxl.ur 1;mpaxl.sx 1;mpaxl.sw 1;mpaxl.sr 1;mpaxl.rAddr phyAddr;//物理地址CSL_XMC_setXMPAXH (segment, mpaxh);CSL_XMC_setXMPAXL (segment, mpaxl);
}
int main(void)
{Uint32 Core_ID;Uint32 *test;psc_init();Uint32 i;// Get the Current Core IDCore_ID DNUM; // c6x.hif (Core_ID 0){mpax_map(0, 0x0c000, 0x00c000, MPAX_SEG_4M_Size);}if (Core_ID 3){mpax_map(0,0x0c000,0x00c000,MPAX_SEG_1M_Size);test (Uint32 *)0x0c000000;for (i0;i100;i)*test 0xA0A0A0A0;}if (Core_ID 4){mpax_map(0,0x0c000,0x00c100,MPAX_SEG_1M_Size);test (Uint32 *)0x0c000000;for (i0;i100;i)*test 0x11111111;}while(1);
}缓存