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.

[参考译文] TMS320F280049C:如何在280049#39;s CLA 中使用临时变量

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1008918/tms320f280049c-how-to-use-temporary-variable-in-280049-s-cla

器件型号:TMS320F280049C

没有、我们的项目使用280049的 CLA、代码从28035移植。 (两个项目的 OPT 级别都是0 -寄存器优化)

在28035 CLA 代码中、我使用两 个临时变量: uint16 Tempa、Tempb;代码是

您可以看到、Tempa 和 Tempb 的值被赋予 MR0和 MR1、并且在使用 Tempa 和 Tempb 时 、指令非常示例、这节省了更多时间

这很好。

但在280049中 、Tempa 和 Tempb 的值被授予 MR0和 MAR0

当我使用 Tempb 时、此加载到、MAR0必须首先提供0x200、然后将0x200的值提供给 TBPRDHR

为什么会这样呢? CLA 可以使用堆栈空间吗? 当使用280049的 CLA 时、如何设置或优化以获得28035的 CLA 等简洁指令、如何使用临时变量?

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

    您好!

    您能告诉我这两个项目使用的编译器版本吗?

    谢谢、
    Ashwini

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

    28035项目:TI v6.4.2使用 opt=0

    280049c 项目:TI v20.2.1.LTS 使用 opt =0

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

    您好!

    感谢您提供相关信息。

    我很抱歉耽误你的答复。 上周我不在办公室,因此无法尽快答复。

    我将与专家同步、并告诉您。

    谢谢、
    Ashwini

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

    您好!

    请您提交测试案例 、以便团队进行更深入的分析。 以下是步骤:  如何提交编译器测试用例

    谢谢、

    Ashwini

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

    抱歉、对于我公司的安全策略、我无法为您发送整个代码、但 我可以复制以下一些关键部分:(在 CLA 文件中)

    中断空 Cla1Task7 (空)


    uint16 Tempa、Tempb;

    三、会议的报告 以下是代码校准  ClaToCpuVars.u16PrdLoad 和 ClaToCpuVars.u16PrdHrLoad .................

    Tempa = ClaToCpuVars.u16PrdLoad;
    Tempb = ClaToCpuVars.u16PrdHrLoad;

    ClaToCpuVars.u16PwmTBCTR1 = EPwm7Regs.TBCTR;
    //运行时间 get = 181cnt

    /************* /
    //加载 CMPA 和 CMPAHR
    /************* /
    EPwm1Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm1Cmpa;
    EPwm1Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm1Cmpb;
    EPwm2Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm2cmmpa;
    EPwm2Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm2cmmpb;
    EPwm3Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm3Cmpa;
    EPwm3Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm3cmpb;
    EPwm4Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm4Cmpa;
    EPwm4Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm4Cmpb;
    EPwm5Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm5Cmpa;
    EPwm5Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm5Cmpb;
    EPwm6Regs.CMPA.bit.CMPA = ClaToCpuVars.u16Pwm6Cmpa;
    EPwm6Regs.CMPB.bit.CMPB = ClaToCpuVars.u16Pwm6Cmpb;

    /************* /
    //加载 TBPRD 和 TBPRDHR
    /************* /
    // EPwm1Regs.TBPRD = Tempa;
    // EPwm1Regs.TBPRDHR = Tempb;
    EPwm2Regs.TBPRD =温度传感器;
    EPwm2Regs.TBPRDHR = Tempb;
    EPwm3Regs.TBPRD =温度传感器;
    EPwm3Regs.TBPRDHR = Tempb;
    EPwm4Regs.TBPRD =温度传感器;
    EPwm4Regs.TBPRDHR = Tempb;
    EPwm5Regs.TBPRD =温度传感器;
    EPwm5Regs.TBPRDHR = Tempb;
    EPwm6Regs.TBPRD =温度传感器;
    EPwm6Regs.TBPRDHR = Tempb;
    EPwm7Regs.TBPRD =温度传感器;
    EPwm7Regs.TBPRDHR = Tempb;
    EPwm1Regs.TBPRD =温度传感器;
    EPwm1Regs.TBPRDHR = Tempb;

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

    您好!

    感谢您的代码片段。 请给我们的专家几天时间来回顾这一点。

    谢谢、
    Ashwini

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

    你(们)好

    您能否同时发送结构 ClaToCpuVars 的定义、结构变量的定义(映射到特定地址空间) 以及这两个项目的链接器命令文件。 这将有助于我们重现测试案例。

    谢谢、

    Ashwini

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

    定义为:

    ///--------------------------------
    #pragma DATA_SECTION (ClaToCpuVars、"Cla1ToCpuMsgRAM");
    volatile struct CLATOCCP_VARS ClaToCpuVars;

    struct CLATOCCP_VARS //开始@1480

    fLoopOutUse 浮点;//0x1480
    fPwmPrdMin 悬空;//0x1482
    fPwmPrd 悬空;//0x1484
    fPwmDuty 悬空;//0x1486
    fPwmT 悬空;//0x1488

    UINT16 u16PrdLoad;//0x148A
    uint16 u16PrdHrLoad;//0x148B
    uint16 u16Pwm1cmpa;//0x148C
    uint16 u16Pwm1cmpb;//0x148D
    uint16 u16Pwm2cmmpa;//0x148E
    uint16 u16Pwm2cmmpb;//0x148F
    uint16 u16Pwm3cmpa;//0x1490
    uint16 u16Pwm3cmpb;//0x1491
    uint16 u16Pwm4cmpa;//0x1492
    uint16 u16Pwm4cmpb;//0x1493
    uint16 u16Pwm5cmpa;//0x1494
    uint16 u16Pwm5cmpb;/0x1495
    uint16 u16Pwm6cmpa;//0x1496
    uint16 u16Pwm6cmpb;/0x1497

    uint16 u16PwmTBCTR1;/0x1498
    uint16 u16PwmTBCTR2;/0x1499
    uint16 u16PwmTBCTR3;/0x149A
    };

    extern volatile struct CLATOCCP_VARS ClaToCpuVars;

    )示例中的 CMD 文件为:(μ F

    CLA1_MSGRAMLOW:origin = 0x00001480,length = 0x00000080
    CLA1_MSGRAMHIGH:origin = 0x00001500,length = 0x00000080

    /***应用软件变量结构***/
    //CLA
    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    配置:

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

    感谢您的详细信息。

    此致、
    Ashwini

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

    您好!  

    我能够生成一个测试用例、并且已经创建了一个请求来分析此情况。 我们的编译器团队将进行调查并返回给您。

    这是 Jira 的链接、如果您需要跟进此问题、可以使用此 Jira ID。

    https://sir.ext.ti.com/jira/browse/EXT_EP-10429

    谢谢、

    Ashwini

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

    您好!

    当团队分析此问题时、有一个建议是将优化级别从-O0更改为至少-O2。

    谢谢、

    Ashwini

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

    感谢您的回复!

    是的、 我自己的解决方案是使用-O1、并且可以正常工作。 但是、我发现当打开优化级别1时、执行指针在仿真分步执行期间没有按顺序执行代码、这有时会使调试变得混乱

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

    您好!

    很高兴知道您能够取得进展。 感谢您的更新。

    谢谢、

    Ashwini