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.

[参考译文] LAUNCHXL-F280049C:ERAD 计数是否包含进行性能分析所用的时间?

Guru**** 1624165 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1369677/launchxl-f280049c-does-the-erad-count-include-time-taken-to-come-out-of-function-being-profiled

器件型号:LAUNCHXL-F280049C

工具与软件:

您好!

我正在尝试使用 ERAD 分析一个包含一些算术运算(2个乘法、加法和除法)和一个 NOP 的函数、然后通过添加断点和使用计数事件对其进行验证。

由此获得的测量结果是 ERAD 为37个周期、计数事件后为22个周期。

为了研究这种不一致性、我在函数结束地址放置了一个反汇编断点并进行了单步执行、这提供了接近15个周期的计数。  

ERAD 计数是否包含从函数(即被分析的函数的 LRETR)返回所涉及的时间?

提前感谢

Ganesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ganesh:

    根据您配置 ERAD 的方式、可能会导致视差。 您是否使用了 CCS 中的计数事件并将其与 ERAD 进行了比较?

    此致!

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    是的、我将比较 CCS 中的计数事件并将其与 ERAD 进行比较。 所配置的功能如下:

    #pragma CODE_SECTION (profiler1、".eradFunction1")

    void profiler1 (void)


    REAL32_T RTB_GAIN;


    RTB_GAIN = mProfilerCheckIntOsc_P Gain_Gain * mProfilerCheckIntOsc_u INPORT;


    mProfilerCheckIntOsc_B. 除数=(RTB_GAIN + mProfilerCheckIntOsc_u INPORT)*
    mProfilerCheckIntOsc_U. INPORT/RTB_GAIN;
    mProfilerCheckIntOsc_DW。 Function4.12.R Subsystem_Subsys = 4;
    }

    asm (" NOP");//NOP 是为了保持汇编序列而引入的。
    }

    在 CCS 上使用计数事件进行性能分析时、断点被放置在  

    RTB_GAIN = mProfilerCheckIntOsc_P Gain_Gain * mProfilerCheckIntOsc_u INPORT;

    函数的右括号中。  

    此外、我的 ERAD 配置如下:  

    ERAD_EDMA 参数1;Profile_Params
    extern uint32_T function1Start、function1End;
    Volatile UINT32_T cyclesCountSubsystem1 = 0;
    ERAD_initModule (ERAD_owner_application);
    params1.start_address =(uint32_T)&function1Start;
    params1.end_address =(uint32_T)&function1End - 1U;
    params1.bus_sel = ERAD_BusComp_BUS_VPC;
    params1.BusComp_base1 = ERAD_HWBP1_base;
    params1.BusComp_BASE2 = ERAD_HWBP2_BASE;
    params1.counter_BASE = ERAD_COUNTER1_base;
    ERAD_PROFILE (params1);
    profiler1();
    cyclesCountSubsystem1 = ERAD_getMaxCount (ERAD_COUNTER1_BASE);

    关联的链接器命令文件的内容:

    部分中)

    #if boot_from_flash
    #if defined (_TI_EABI__)
    .eradFunction1:> FLASH_BANK0_SEC0
    Load_start (函数1Start)、
    LOAD_END (函数1End)
    #else
    .eradFunction1:> FLASH_BANK0_SEC0
    load_start (_function1Start)、
    load_end (_function1End)
    #endif
    #else
    #if defined (_TI_EABI__)
    .eradFunction1:> RAMLS_PROG
    Load_start (函数1Start)、
    LOAD_END (函数1End)
    #else
    .eradFunction1:> RAMLS_PROG
    load_start (_function1Start)、
    load_end (_function1End)
    #endif
    #endif
    }

    ERAD 配置中是否存在导致该视差的问题?

    提前感谢、

    Ganesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ganesh:

    我现正研究这问题、并会在明天作出回应。

    此致!

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan、

    这方面有什么更新吗?

    谢谢!

    Ganesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ganesh:

    我仍在研究这方面的差异。 为耽误您的时间而道歉。

    我正在研究 CCS 如何与 EBC 相比计算时钟周期。

    此致!

    Ryan Ma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ganesh:

    我从 CCS 团队那里获得信息。 CCS 不使用 ERAD 来获取时钟周期计数。 相反、它们使用:

    "事实证明、CCS 性能分析时钟使用 ACUBENCHMARK_M08/ACUBENCHMARK_L32寄存器来获取40位时钟周期计数。 因此它不使用 ERAD。"

    请注意、你可以在 CCS 中观察这些寄存器、但是你不会看到任何更新。 这是因为驱动程序在读取计数后重新初始化它们。

    我不熟悉这些寄存器、也找不到有关这些寄存器的任何文档。 因此、我不知道它们在行为上与 ERAD 计数器相比有何差异。

    我会使用 ERAD 来满足您的代码分析需求。

    [报价 userid="522836" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1369677/launchxl-f280049c-does-the-erad-count-include-time-taken-to-come-out-of-function-being-profiled "]

    ERAD 计数是否包含从函数(即被分析的函数的 LRETR)返回所涉及的时间?

    [报价]

    如果您使用 ISR 的 VPC 启动并使用 RET 指令的 VPC 结束来分析 ISR、那么它不会包括 RTINT 的运行环境保存/恢复。
    但是、对于 INT、编译器会在 ISR 中插入指令、因此它将包括 INT 的此计数。

    此致、

    Ryan Ma