您好,
我用了C6748的板子,用TSCL/TSHL寄存器测得程序运行时间为2.4s,但是CCS5.5中跑完的实际时间远大于这个数(大概几分钟),请问这是什么原因呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
我用了C6748的板子,用TSCL/TSHL寄存器测得程序运行时间为2.4s,但是CCS5.5中跑完的实际时间远大于这个数(大概几分钟),请问这是什么原因呢?
Shine Zhang,您好,这是我的cmd文件和map文件
cmd文件:
-ml0
-stack 0x30000
-heap 0x030000
-m ais_write.map
/* =========================================================================*
* Specify the System Memory Map *
* =========================================================================*/
MEMORY
{
L2: o = 0x00800000 l = 0x00040000 /* 256K RAM */
share: o = 0x80000000 l = 0x00020000 /* 128K RAM */
L1P: o = 0x00E00000 l = 0x00008000 /* RAM */
L1D: o = 0x00F00000 l = 0x00008000 /* RAM */
dsp_ddrii: o = 0xc2000000 l = 0x1000000
}
/* =========================================================================*
* Specify the Sections Allocation into Memory *
* =========================================================================*/
SECTIONS
{
.cinit > dsp_ddrii /* Initialization Tables */
.pinit > dsp_ddrii /* C++ Constructor Tables */
.const > L2 /* Constant Data */
.switch > dsp_ddrii /* Jump Tables */
.text:_c_int00 > 0xc2000000
.text > dsp_ddrii /* Executable Code */
.bss > L2 /* Global & Static Variables */
.far > L2 /* Far Global & Static Variables */
.stack > L2 /* Software System Stack */
.sysmem > dsp_ddrii /* Dynamic Memory Allocation Area */
.cio > dsp_ddrii /* C I/O Buffer */
.vecs > dsp_ddrii /* Interrupt Vectors */
}
.map文件
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
L2 00800000 00040000 00030f7e 0000f082 RWIX
L1P 0e00000 00008000 00000000 00008000 RWIX
L1D 00f00000 00008000 00000000 00008000 RWIX
share 80000000 00020000 00000000 00020000 RWIX
dsp_ddrii c2000000 01000000 00042e7c 00fbd184 RWIX
我有以下几点疑问:
1、寄存器和秒表,两种方法得到的时间哪一种才是程序实际运行的时间呢?
2、寄存器TSCL/TSCH的原理是什么?它输出的是程序运行的所有指令周期数吗?会不会有些延迟不计入它的输出?
3、从map文件中可以看出,L2 RAM 利用率比较高,会不会由此造成某种延迟,导致寄存器不计数?如果会,如何修改cmd能更好提高程序运行速度呢?
期待您的回复!
1. 以TSCL, TSCH为准。
2. TSCL/TSCH是cpu cycles计数器,这两个寄存器的定义在下面的文档中。
http://www.ti.com/lit/ug/sprufe8b/sprufe8b.pdf
3. 这跟memory利用率无关,TSCL/TSCH会一直计数,不会因为有延迟不计数。