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.

TMS320C6748调试算法时间过长



你好,我现在调试6748开发板做信号处理时遇到一个问题:算法执行时间太长。算法是用C写的,预计只需要100us内完成,实际用时2ms还多,最初我以为是算法的问题,之后单步调试时,发现最基本的赋值操作,也需要100多个机器周期,而在28335上,对应的操作只需要个位数的机器周期。

因为我对底层理解并不深,也没怎么用过汇编,请帮忙确认下问题,是配置或者编译器的问题吗?

  • 程序是放在片内还是片外memory上运行的? cache打开了吗?

  • 昨天晚上按照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文件没什么作用,而且外设不能用了。

    我对底层的东西了解非常少,不知道是不是指令集的问题。