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.

[参考译文] TM4C129XNCZAD:传入邮箱的存储器结构需要对齐。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1514698/tm4c129xnczad-the-memory-structure-of-the-incoming-mailbox-needs-to-be-aligned

器件型号:TM4C129XNCZAD

工具/软件:

您好:

我把这个信息留在这里,这样那些幸运地看到它的人,可以避免这个坑!

我们花了大量的时间寻找原因,最后意识到,进入邮箱的内存结构的大小是四的倍数。

修改后的代码安装在5台设备上,它们运行了90天而没有关机。

https://dev.ti.com/tirex/explore/node?node=A__AGvM31zjJSi9S09XxsfS.w__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__6.20.00.29

Ray Yang

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

    尊敬的 Ray:

     非常感谢您分享这些技巧。 我会将这篇文章添加到我最喜欢的,以防有人遇到相同的问题。  

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

    您好、Charles:

    TM4C 内部 EEPROM 的访问也是类似的、

    数据结构大小应为4的倍数、

    否则将出现无法解释的数据丢失。

    https://github.com/yuvadm/tiva-c/blob/master/driverlib/eeprom.c

    Ray Yang

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

    数据存储在存储器中并需要对齐这一事实非常重要、

    但开发人员往往会忽视这样一个小问题、并在寻找 bug 时遭受痛苦。

    Ray Yang

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

    尊敬的 Ray:

     再次感谢您的提示。 您是否尝试过将'Align (32)指令添加到各个段。 它是否有助于解决问题? 请参阅下面的代码片段示例。

    SECTIONS
    {
    .text align(32) :  {} > FLASH
    .const align(32) : {} > FLASH
    .cinit align(32) : {} > FLASH
    .pinit align(32) : {} > FLASH
    .init_array : > FLASH

    .data : > SRAM
    .bss : > SRAM
    .sysmem : > SRAM
    .stack : > SRAM
    }

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

    您好、Charles:

    我们没有使用您提到的方法来对齐数据、感谢您告诉我有这样的方法。

    手动检查方法:在将数据传递到 EEPROM API 的读取和写入之前使用 sizeof 函数。

    Ray Yang