你好,我现在调试6748开发板做信号处理时遇到一个问题:算法执行时间太长。算法是用C写的,预计只需要100us内完成,实际用时2ms还多,最初我以为是算法的问题,之后单步调试时,发现最基本的赋值操作,也需要100多个机器周期,而在28335上,对应的操作只需要个位数的机器周期。
因为我对底层理解并不深,也没怎么用过汇编,请帮忙确认下问题,是配置或者编译器的问题吗?
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.
你好,我现在调试6748开发板做信号处理时遇到一个问题:算法执行时间太长。算法是用C写的,预计只需要100us内完成,实际用时2ms还多,最初我以为是算法的问题,之后单步调试时,发现最基本的赋值操作,也需要100多个机器周期,而在28335上,对应的操作只需要个位数的机器周期。
因为我对底层理解并不深,也没怎么用过汇编,请帮忙确认下问题,是配置或者编译器的问题吗?
昨天晚上按照TI的一位工程师的建议,设置如下
MEMORY
{
dsp_l2_ram: ORIGIN = 0x11800000 LENGTH = 0x0000a000
shared_ram: ORIGIN = 0x80000000 LENGTH = 0x00020000
external_ram: ORIGIN = 0xC0000000 LENGTH = 0x08000000
arm_local_ram: ORIGIN = 0xFFFF0000 LENGTH = 0x00002000
}
SECTIONS
{
.text > dsp_l2_ram
.const > dsp_l2_ram
.bss > dsp_l2_ram
.far > external_ram
.switch > dsp_l2_ram
.stack > dsp_l2_ram
.data > dsp_l2_ram
.cinit > external_ram
.sysmem > dsp_l2_ram
.cio > dsp_l2_ram
}
总体时间缩短了一些,但是单条语句还是用时较多。
比如对一个变量赋值,一般是用6个或12个clock,但是在28335上只需要1个或2个。
前几天按照TI的一位工程师的建议,设置如下
MEMORY
{
dsp_l2_ram: ORIGIN = 0x11800000 LENGTH = 0x0000a000
shared_ram: ORIGIN = 0x80000000 LENGTH = 0x00020000
external_ram: ORIGIN = 0xC0000000 LENGTH = 0x08000000
arm_local_ram: ORIGIN = 0xFFFF0000 LENGTH = 0x00002000
}
SECTIONS
{
.text > dsp_l2_ram
.const > dsp_l2_ram
.bss > dsp_l2_ram
.far > external_ram
.switch > dsp_l2_ram
.stack > dsp_l2_ram
.data > dsp_l2_ram
.cinit > external_ram
.sysmem > dsp_l2_ram
.cio > dsp_l2_ram
}
总体时间缩短了一些,但是单条语句还是用时较多。
比如对一个变量赋值,一般是用6个或12个clock,但是在28335上只需要1个或2个。
没有呢。运行时间比预期的多不少。按照ti一位工程师的建议改.cmd文件没什么作用,而且外设不能用了。
我对底层的东西了解非常少,不知道是不是指令集的问题。