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.

[参考译文] CCS/MSP432E411Y:Expressions 视图显示的值错误

Guru**** 2587745 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/894315/ccs-msp432e411y-expressions-view-shows-wrong-values

器件型号:MSP432E411Y

工具/软件:Code Composer Studio

尊敬的 TI 专家:

对于我的几个 CCS 版本、我有一种印象、即调试视图的表达式视图中的某些值是错误的。 现在我更新到版本10.0.00010,但问题仍然相同。 显示的值不正确、并且会随着时间的推移而变化(变为黄色突出显示)。 因此、我在内存浏览器中查看了变量。 在存储器浏览器中、字节不会改变(正如我所期望的那样)、它们完全代表了我所期望的值:

产生问题的变量通常是 dFactor 和 beActive、但 pFactor 和 iFactor 的频率也较低。

正如您在存储器浏览器中看到的、与 dFactor 对应的字节未对齐、表示值5.25128235e-05 (根据 MATLAB)。 它们不会随着时间的推移而变化。

对于数组索引0、dFactor 位于0x2000C3D8 (对齐)、校正显示为5.25128235e-05。

您能解决这个烦人的错误吗?

如果您需要更多信息、请告诉我。

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

    Sven、您好!

    [引用 user="Sven Probst"]显示的值错误、会不时变化(变为黄色突出显示)。 [/报价]

    黄色表示自上次刷新后该值已更改。 当您暂停时会发生这种情况吗? 是否像在内存浏览器视图中一样启用了连续刷新?

    您能否尝试在两个视图中禁用连续刷新、然后手动刷新? 两个视图之间的值是否匹配?

    谢谢

    Ki

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

    您好 Ki、

    我在下面的文本中添加了我的答案:

    "黄色表示值自上次刷新后已更改。 当您暂停时、是否会发生这种情况?" 是的。

    "是否像在内存浏览器视图中一样启用了连续刷新?" 是的。

    "您能否尝试在两个视图中禁用连续刷新、然后手动刷新? 两个视图之间的值是否匹配?" 否 内存浏览器正常、表达式视图错误。

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

    Sven Probst 说:
    "能否尝试在两个视图中禁用连续刷新、然后手动刷新? 两个视图之间的值是否匹配?" 否 内存浏览器正常、表达式视图错误。[/quot]

    感谢您的试用。

    我无法重现问题。 内存浏览器视图和表达式视图显示正确的值。 您能否提供可重现的测试案例? 我不需要您的实际应用、为了证明问题、我只需要... 越简单越好。 我需要可以加载的源代码和可执行文件。 我的 MSP432E 目标

    谢谢你

    Ki

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

    您好 Ki、

    我进一步分析了情况。 我觉得、大多数时候会翻译错误的地址:

    PFactor 在地址0x2000C6A1处实际上是2.0…… 0x2000C6A4。

    显示的值为2.26562548。 这会在小端字节序上转换为02 00 11 40 (十六进制表示法中的字节)。

    您可以在存储器中的正确值旁边找到这些值。 会不时显示正确的值。 (当处理器在断点中停止时。)

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

    您好 Ki、

    也许我之前的帖子可以帮助您找到错误。 我将尝试获取一个小型应用程序、使您能够重现此问题。 但我很忙、可能需要几天时间。 我已经添加了变量 ovenML_Objects 的定义。 也许您可以尝试在这段时间内自行复制?

    重要的是、结构是紧凑的。 声明为:

    #define Over_ML_LIM_CNT 6
    
    typedef 结构__attribute__(__packed__) dataStoreParamDef_s
    {
    /*将12位参数 ID 和4位地址偏移相结合*/
    uint16_t paramIdAndAdrOfslo;
    uint8_t adrOfsHi;
    /*显式 uint8_t */
    uint8_t 数据类型;
    }dataStoreParamDef_t;
    
    
    typedef 结构 dataStoreSupport_s
    {
    const dataStoreParamDef_t * paramDeclarations;
    uint16_t moduleId;
    uint16_t numberOfBytesParams;
    uint16_t numberOfParameters;
    uint8_t const *参考地址;
    uint16_t categoryAdrOffsets[4];
    }dataStoreSupport_t;
    
    tytrf void ((* CallbackFcnPTR_t)(UARg));
    
    typedef 结构体 callbackDefineSpedef
    {
    /*指向链接列表中下一个条目的指针,由回调寄存器函数设置,不供用户使用*/
    struct callbackDefineStruct* nextEntryPtr;
    /*回调函数的函数指针*/
    CallbackFcnPTR_t 回调;
    UARg callbackArg;
    }callbackDefin_t;
    
    
    typedef 结构__attribute__(__packed__) OvenML_DataPersistence_s
    {
    uint8_t persistentStoreVersion;
    uint8_t ovenType;
    uint16_t fillOrReserve;
    浮点限值[Over_ML_LIM_CNT];
    浮点多项式[4];
    float T_target;
    浮点工作点;
    浮点因子;
    浮点 iFactor;
    浮点 dFactor;
    uint8_t beActive;
    uint8_t hardwareDetectionMode;
    uint8_t 连接器 ID;
    uint8_t severityleels[Oven_ML_LIM_CNT/2];
    }ovenML_DataPersistent_t;
    
    typedef 结构__attribute__(__packed__) OvenML_DataPeriodical_s
    {
    悬空 T_current;
    float ctrlOutput;
    浮动储能器;
    uint8_t controlMode;
    }ovenML_DataPeriodical_t;
    
    typedef 结构__attribute__((__packed__)) ovenML_DataOnce_s
    {
    uint8_t hardwareDetectionUsed;
    bool ispresent;
    }ovenML_DataOnce_t;
    
    typedef 结构 pidMemoryStructt{
    浮点错误;
    int_fast8_t 输出饱和;//达到-1个下端、达到1个上端
    }pidMemory_t;
    
    
    //烤箱实例变量的结构*/
    tyf 结构 ovenML_Structedef
    {
    volatile uint8_t InitState;
    uint32_t systemCallDe精细[2];
    
    PWM_Handle PWM_Handle;
    uint8_t adcInput;
    uint32_t pmatHandle;
    uint8_t 模数 ID;
    /*回调定义结构*/
    callbackDef精细_t callbackDefinition;
    dataStoreSupport_t DS_Support;
    UARG DS_HDL;
    pidMemory_t tCtrlMem;
    bhasInvalidool 参数;
    bool isControllerOn;
    bool isPMAT_ok;
    浮点 TargetTemperaturePrev;
    浮点 workingPointPrev;
    OvenML_DataPeriodical_t prdcD;
    OvenML_DataPersistent_t prstD;
    OvenML_DataOnce_t oned;
    }ovenML_Object;
    
    static ovenML_Object ovenML_Objects[6];
    

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

    感谢您提供的额外信息。 但是、我仍然看到表达式视图和内存浏览器匹配正确:

    如果您可以提供一个简单的测试用例、这将非常有帮助。

    谢谢你

    Ki

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

    您好 Ki、

    感谢您的快速测试和良好的支持。 正如我在屏幕截图中看到的、PFactor 位于偶数地址、而在我的例子中它位于奇数地址。 也许您可以将"fillOrReserve"更改为 uint8_t、这样所有变量都会移动。

    ovenML_Objects[0] is at 在我们当前的软件中(此时变化非常快) 0x2000C4D8。 您可能可以将其置于代码中的相同地址。 则 pFactor 应位于地址0x2000C571上。 如果不是、我可能会在按标准类型替换我们的自定义数据类型时出错。

    您可以检查一下吗?

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

    [引用 user="Sven Probst"]我可以在屏幕截图中看到、pFactor 位于偶数地址、而在我的示例中它位于奇数地址。 也许您可以将"fillOrReserve"更改为 uint8_t、这样所有变量都会移动。

    是的、这似乎是根本原因。 感谢您指出这一点。 我现在看到一些与你所经历的不同之处。 我需要进一步调查。  

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

    我为此问题提交了一个错误。 跟踪链接为 :https://sir.ext.ti.com/jira/browse/EXT_EP-9773

    谢谢

    Ki