在CMD文件中自定义段,可以把变量或者函数放在指定内存中,这样可以加快程序运行速度。
/****************************************************************************/
/* */
/* 内存读写及性能测试 */
/* */
/* 2014年09月12日 */
/* */
/****************************************************************************/
MEMORY
{
SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 共享内置 ROM */
SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256KB L2 共享内置 RAM */
SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32KB L1 共享内置程序 RAM */
SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32KB L1 共享内置数据 RAM */
SHRAM o = 0x80000000 l = 0x00020000 /* 128KB 共享 RAM */
DDR2 o = 0xC0000000 l = 0x08000000 /* 128MB DDR2 分配给 DSP */
}
SECTIONS
{
.text > 0x11810000 /* 可执行代码 */
.stack > SHDSPL2RAM /* 栈 */
.cinit > SHDSPL2RAM /* 初始化表 */
.const > SHDSPL2RAM /* 常量 */
.switch > SHDSPL2RAM /* 跳转表 */
.cio > SHDSPL2RAM /* C 输入输出缓存 */
.sysmem > SHDSPL2RAM /* 动态内存分配区域 */
GROUP(NEARDP_DATA)
{
.neardata
.rodata
.bss
} > SHDSPL2RAM
.far > SHDSPL2RAM
.fardata > SHDSPL2RAM
/* 自定义段 */
.DataL2 > SHDSPL2RAM
.DataSHRAM > SHRAM
.DataDDR2 > DDR2
}
在main函数中,通过#pragam 可以把变量放在指定内存中,L1、L2、还是DDR2中
// 待测试数据
#pragma DATA_ALIGN(Test, 8);
unsigned char Test[Size];
// 待测试变量
#pragma DATA_SECTION(DataL2,".DataL2");
#pragma DATA_ALIGN(DataL2, 8);
unsigned char DataL2[Size];
#pragma DATA_SECTION(DataSHRAM,".DataSHRAM");
#pragma DATA_ALIGN(DataSHRAM, 8);
unsigned char DataSHRAM[Size];
#pragma DATA_SECTION(DataDDR2,".DataDDR2");
#pragma DATA_ALIGN(DataDDR2, 8);
unsigned char DataDDR2[Size];
|