|
写了一小段程序,测C6748程序运行速度,实际上就是通过用for循环对数组循环赋值,测试运行速度,程序如下:
unsigned char buffer[1024];
void RunSpeedTest(void)
{
unsigned short i;
char put_char[50];
// 计数器(用于性能测试)
long long t_start, t_stop, t_overhead;
TSCL = 0;
TSCH = 0;
t_start = _itoll(TSCH, TSCL);
t_stop = _itoll(TSCH, TSCL);
t_overhead = t_stop - t_start;
t_start = _itoll(TSCH, TSCL);
for(i = 0; i < 1024; i++)
{
buffer[i] = 12;
}
t_stop = _itoll(TSCH, TSCL);
sprintf(put_char,"\t run_speed_test Speed: %f MB/s \n",
(float)1024 / 1024 / 1024 * 456000000/((t_stop - t_start) - t_overhead));
UARTPuts(put_char, -2);
}
结果输出: run_speed_test Speed: 1.516573 MB/s
程序是放在DDR里运行的,感觉这也太太太慢了吧,还请高人指点下,这速度正常吗?
CMD文件如下:
/****************************************************************************/
/* */
/* DSP C6748 内存空间分配定义 */
/* */
/* */
/****************************************************************************/
MEMORY
{
#ifdef DSP_CORE
/****************************************************************************/
/* */
/* DSP 专有内存区域 */
/* */
/****************************************************************************/
DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 DSP 本地 ROM (DSP ROM Bootloader) */
DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 DSP 本地 RAM */
DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 DSP 本地程序 RAM */
DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 DSP 本地数据 RAM */
#endif
/****************************************************************************/
/* */
/* 公共内存区域 */
/* */
/****************************************************************************/
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 */
EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM (CS0) */
EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB 异步 (CS2) */
EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB 异步 (CS3) */
EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB 异步 (CS4) */
EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB 异步 (CS5) */
SHRAM o = 0x80000000 l = 0x00020000 /* 128KB 共享 RAM */
DDR2 o = 0xC0001000 l = 0x08000000 /* 128MB DDR2 分配给 DSP */
EntryPoint o = 0xC0000000 l = 0x00000800 /* 2 KB C 语言入口点 */
Vector o = 0xC0000800 l = 0x00000800 /* 2 KB 中断向量表 */
/****************************************************************************/
/* */
/* 外设内存区域 */
/* */
/****************************************************************************/
SYSCFG0 o = 0x01C14000 l = 0x00001000 /* 4K SYSCFG0 */
uPP o = 0x01E16000 l = 0x00001000 /* 4K uPP */
GPIO o = 0x01E26000 l = 0x00001000 /* 4K GPIO */
McBSP1 o = 0x01D11000 l = 0x00000800 /* 2K McBSP1 */
#ifndef DSP_CORE
/****************************************************************************/
/* */
/* ARM 专有内存区域 */
/* */
/****************************************************************************/
ARMROM o = 0xFFFD0000 l = 0x00010000 /* 64kB ARM 本地 ROM (ARM ROM Bootloader) */
ARMRAM o = 0xFFFF0000 l = 0x00002000 /* 8kB ARM 本地 RAM */
#endif
}
SECTIONS
{
.text:_c_int00 > 0x11810000 /* 可执行代码 C 程序入口点*/
.text > DDR2 /* 可执行代码 */
.stack > DDR2 /* 软件系统栈 */
.cio > DDR2 /* C 输入输出缓存 */
".vectors" > Vector /* 中断向量表 */
.const > DDR2 /* 常量 */
.data > DDR2 /* 已初始化全局及静态变量 */
.switch > DDR2 /* 跳转表 */
.sysmem > DDR2 /* 动态内存分配区域 */
.args > DDR2
.ppinfo > DDR2
.ppdata > DDR2
/* TI-ABI 或 COFF */
.pinit > DDR2 /* C++ 结构表 */
.cinit > DDR2 /* 初始化表 */
/* EABI */
.binit > DDR2
.init_array > DDR2
.fardata > DDR2
.c6xabi.exidx > DDR2
.c6xabi.extab > DDR2
.init_array > DDR2
GROUP(NEARDP_DATA)
{
.neardata
.rodata
.bss
} > DDR2
.far: fill = 0x0, load > DDR2
/* DDR2 */
.buffer > DDR2
/* 外设 */
.Reg_SYSCFG0 > SYSCFG0
.Reg_uPP > uPP
.Reg_GPIO > GPIO
.Reg_McBSP1 > McBSP1
.s_DataFIFO > DDR2
.L2RAM > SHDSPL2RAM
}
|
|