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.

[参考译文] MSPM0L2228:NONMAIN 内容损坏

Guru**** 2777655 points

Other Parts Discussed in Thread: MSPM0L2228, MSPM0G3507, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted

器件型号: MSPM0L2228
Thread 中讨论的其他器件: MSPM0G3507UNIFLASH

您好、  

 

在为 MSPM0L2228 开发软件期间、CCS 说“NONMAIN 内容损坏“、如下图所示。

您能告诉我错误的原因、以及此问题的对策吗???

 

1) 构建配置如下的软件。

image.png

image.png

image.png

 

image.png

 

2) 将其上传到我们的原始 PCB w MSPM0。

3) 关闭并打开电源。

4) 检查我的软件的行为。

5) 更改了我的软件的逻辑,以适应我想做的。

6) 再次将其上传到我们的原始 PCB。

7) CCS 上显示如下错误消息。

 

此致、  

Susumu

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

    通常是由 CCS 中的错误操作引起的、或非主区域被擦除但未被编程。

    请尝试遵循以下文档: https://www.ti.com/lit/pdf/slaaeo4

    确保您的操作都遵循正确的方式。

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

    所有操作与上面的文档相同。

    以上现象的原因是什么???

    你有什么想法来解决它吗???

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

    不确定。

    上述现象的原因是什么????
    通常是由 CCS 中的错误操作引起的、或非主区域被擦除但未被编程。

    首先、确保 syscfg 生成的结构和编译的固件正确。

    尝试在启用了非主闪存擦除的情况下下载闪存。

    如果所有操作都遵循文档、它不应该是错误的。

    下周是中国新年、如果您迫切需要支持、请提交新申请单。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6231386

    首先、确保 syscfg 生成的结构和编译的固件正确。

    尝试在启用了非主闪存擦除的情况下下载闪存。

    如果所有操作都遵循文档、它不应该是错误的。

    [/报价]

    你能发现我上面的评论有什么问题吗???. 我详细描述了导致这种现象的 7 个步骤。

    如果您无法回答、请将此问题转发给 TI 的其他工程师。

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

    操作步骤中未包含 CCS 操作的详细信息。

    并确保在 syscfg 中使用正确的器件型号配置

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

    感谢您的信息。 我知道您需要器件型号。

    随附的请找到 syscfg 文件。

    如果您发现与解决此问题相关的任何问题、请告诉我。

    您能告诉我以下理解是否正确。

    我想我错过了 MSPM0 ucom 的一些规范。


    1) BCR 存在于 MSPM0 ucom 的 ROM 上。

    =>是或否

    2) BCR 配置存在于 MSPM0 ucom 的闪存上。

    =>是或否

    3) MSPM0 ucom 的闪存中存在第 1 个和第 2 个 BSL。

    =>是或否

    4) MSPM0 ucom 的闪存上存在 BSL 配置。

    =>是或否

    5) 开发人员可以修改闪存上的上述组件。

    =>是或否

    6)“NONMAIN Area“表示 BCR 配置、BSL 配置和第 1 /第 2 个 BSL。

    =>是或否

    7) 仅一个 CRC 值用于 MSPM0 ucom 闪存的整个区域、包括 BCR Config、BSL Config 和第 1 /第 2 个 BSL。

    =>是或否

    8) 如果 CRC 校验失败、MSPM0 的整个引导过程将不起作用。

    =>是或否

    9) 仅当 BCR 配置的设置为“true"时“时、恢复出厂设置才可用。

    =>是或否

    10) CRC 过程不能被禁用,即使只是在开发过程中,也是暂时的。

    =>是或否

    11) 如果闪存编程因噪音、错误操作和电源干扰等原因而失败, CRC 过程可能会失败

    =>是或否

    12) 即使仅修改了第 2 个 BSL、但 BCR Config、BSL Config 之前相同、也应重新计算 CRC 值。

    =>是或否

    13) CRC 值存在于 MSPM0 ucom 的闪存上。

    =>是或否

    14) 如果第二个 BSL 编程失败、CRC 值可能会损坏。

    =>是或否

    e2e.ti.com/.../empty_5F00_mspm0l2228.txt

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

    BCR 代码 在复位处理程序之前和 ROM 中运行。

    2) MSPM0 ucom 的闪存上存在 BCR 配置。

    BCR CFG 位于非主闪存中。

    3) MSPM0 ucom 的闪存中存在第 1 个和第 2 个 BSL。

    默认 BSL 位于 ROM 中、辅助 BSL 是基于 BSL 调用的用户 BSL、保存在 MAIN 闪存中。

    4) MSPM0 ucom 的闪存上存在 BSL 配置。

    BCR 的后面。

    5) 开发人员可以修改闪存上的上述组件。

    Nonmain 闪存 CAN。

    6)“NONMAIN Area“表示 BCR 配置、BSL 配置和第 1 /第 2 个 BSL。

    请参阅 TRM https://www.ti.com/lit/pdf/slau847 中的 1.4 引导配置

     

     https://www.ti.com/lit/ug/slaaeo4/slaaeo4.pdf

    Nonmain 仅包含 BCR/BSL 配置。 无 BSL 代码。

    7) 只有一个 CRC 值用于 MSPM0 ucom 闪存的整个区域、包括 BCR Config、BSL Config 和 1st / 2nd BSL。

    第二个是 BCR 和 BSL CFG。

    8) 如果 CRC 校验失败、MSPM0 的整个引导过程将不起作用。

    将卡在 ROM 引导代码处、在这种情况下、M0 将永久锁定。 非主 CRC。

    9) 只有 BCR 配置的设置为“true"时“时、才能使用恢复出厂设置。

    当在非主 BCR 中启用 FR 时、FR 将可用

    10) 即使只是在开发过程中、也不能暂时禁用 CRC 过程。

    是的。 I 表示非主 CRC。

    11) 如果闪存编程因噪声、错误操作和电源干扰等原因失败、CRC 过程可能会失败。

    Nonmain CRC、是。

    12) 即使仅修改了第二个 BSL、但 BCR Config、BSL Config 之前相同、也应重新计算 CRC 值。

    如果不修改 NONMAIN、则无需重新计算非 MAIN CRC。

    13) CRC 值存在于 MSPM0 ucom 的闪存中。

    BCR/BSL 在非主闪存中的细目。

    14) 如果第二个 BSL 编程失败、CRC 值可能会损坏。

    编号

    第二个 BSL 位于 MAIN 闪存中。

    NONMAIN 的 CRC 在 NONMAIN 闪存中。

    ------------------------------------

    只要您使用 syscfg 生成非主代码、固件中的 CRC 就不会不正确。

    由于您使用的是 NONMAIN 修改+第 2 个 BSL、因此您需要修改第 2 个 BSL 地址的 NONMAIN。

    根据第二个 BSL 演示、我没有看到任何编程问题。

    唯一的问题是、如果 addr=0x0 为空、并且您仅编程了 2ns BSL(不是从 0x0 开始)、则在对第 2 个 BSL 演示进行编程后、会出现错误提示。 但这无关紧要。

    你需要记住的另一件事是:

    仅在包含非主区域数据的项目中启用非主擦除。 (与在 syscfg 中添加 NVM 配置类似。)

    请勿在只有主闪存中有用户应用程序代码的项目中启用非主闪存擦除。

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

    Δ V★

    仅在包含 NONMAIN 区域数据的项目中启用 NONMAIN 擦除。 (与在 syscfg 中添加 NVM 配置类似。)

    =>
    可以对相同的 BCR cfg 进行编程。 和 BSL CFG。 构建修改的第 2 个 BSL???
    如果没有、请告诉我原因。

    我想知道 CCS 上显示消息“NONMAIN content corrupted“的原因。

    ★Q2

    [引述 userid=“571933" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6234176
    13) CRC 值存在于 MSPM0 ucom 的闪存上。

    BCR/BSL 在非主闪存中的细目。

    [/报价]


    =>否
    “BCR"不“不在 NONMAIN 中、而是仅在 ROM 中、如上所述。

    您是指“BBCR cfg“吗???

    如果是、则它可能位于闪存的同一扇区、即使位于闪存的末尾、
    并且可能会同时擦除、因为只能擦除每个扇区的闪存。

    BCR 是否存在风险。 和/或 BSL 配置。 如果它们存在于 BSL 的同一扇区、会同时擦除???


    ★Q3

    唯一的问题是、如果 addr=0x0 为空、并且您仅编程了 2ns BSL(不是从 0x0 开始)、那么在对第 2 个 BSL 演示进行编程后、将出现错误提示您。 [/报价]

    =>
    您觉得“addr=0x0"是“是什么意思?? 您指的是非主区域???

    ★Q4:改进 TI 文档结构

    我们的开发人员端目前有多个内容非常相似的文档、每一个文档的页数都超过 100 页。
    这使得高效管理和浏览信息变得非常困难。

    我们是否可以考虑将这些材料调整为一个更有效的文件框架???

    更加标准化和集中化的文档结构将大大提高可用性、可维护性和整体效率。

    -示例-

    应用手册 MSPM0 引导加载程序 (BSL) 实现
    SLAAE88C–2024 年 3 月–2024 年 9 月修订

    => 31 页

    用户指南 MSPM0 引导加载程序
    SLAU887–2023 年 2 月

    => 32 页

    应用手册 MSPM0 实时固件更新 (LFU) 引导加载程序实现
    SLAAEC9–2023 年 7 月

    => 13 页

    用户指南 MSPM0 NONMAIN 闪存配置指南
    SLAAEO4–2025 年 11 月

    => 47 页

    ★Q5:提高 TI 文档中的术语一致性

    文档中使用的术语不一致且令人困惑。
    例如、SLAU887 以特定的方式定义了“引导加载程序 (BSL)““引导代码 (BCR)“及其各自的配置结构。

    但是、SLAU847E 描述了“引导配置例程 (BCR)“和“引导加载程序 (BSL)“、并对它们的角色和交互进行了不同的解释。

    此外、您和 CSS 引入了额外的术语、如“备用 BSL“和“第 2 个 BSL“等、但并未明确将它们与其他定义保持一致。

    因此、很难完全理解其架构、即使在 TI 自己的文档中、术语似乎也不是一致的定义。

    我们是否可以考虑调整 术语的一致性???

    提前感谢您、  

    Susumu

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

    您好、  

    你有任何更新吗???

    提前感谢您、  

    Susumu

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

    感谢您的耐心。

    [引述 userid=“668403" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6236612

    =>
    可以对相同的 BCR cfg 进行编程。 和 BSL CFG。 构建修改的第 2 个 BSL???
    如果没有、请告诉我原因。

    我想知道 CCS 上显示消息“NONMAIN content corrupted“的原因。

    [/报价]

    闪存 (NONMAIN + MAIN) 在写入(编程)之前需要擦除

    非主闪存也需要先擦除。

    ]我想知道 CCS 上显示“NONMAIN content corrupted“消息的原因。

    某些情况下擦除后没有写入时会显示此情况。

    [引述 userid=“668403" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6236612

    =>否
    “BCR"不“不在 NONMAIN 中、而是仅在 ROM 中、如上所述。

    您是指“BBCR cfg“吗???

    如果是、则它可能位于闪存的同一扇区、即使位于闪存的末尾、
    并且可能会同时擦除、因为只能擦除每个扇区的闪存。

    BCR 是否存在风险。 和/或 BSL 配置。 如果它们存在于 BSL 的同一扇区、会同时擦除???

    [/报价]

    位于非主 BCR/BSL 配置的末尾。

    例如:1.6.17 BCCONFIGCRC 寄存器

    在 NONMAIN 中需要 BCR 配置的引导代码位于 ROM 中

    =>
    您觉得“addr=0x0"是“是什么意思?? 您指的是非主区域???

    非主地址不是 0x0。

    0x0 是主闪存、因为 0x0 为空、仅对第 2 个 BSL 进行编程后才会看到一些错误。

    [引述 userid=“668403" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6236612

    应用手册 MSPM0 引导加载程序 (BSL) 实现
    SLAAE88C–2024 年 3 月–2024 年 9 月修订

    => 31 页

    用户指南 MSPM0 引导加载程序
    SLAU887–2023 年 2 月

    => 32 页

    [/报价]

    这两个是两个不同的文档、一个是针对协议、另一个是针对 SDK 演示如何使用。

    应用手册 MSPM0 实时固件更新 (LFU) 引导加载程序实现
    SLAAEC9–2023 年 7 月[/报价]

    这基于 FreeRTOS、为需要同时运行应用代码和更新固件的用户提供了一种特殊解决方案。

    用户指南 MSPM0 NONMAIN 闪存配置指南
    SLAAEO4–2025 年 11 月

    这只会引入非主修改。

    [引述 userid=“668403" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1616627/mspm0l2228-nonmain-contents-corrupted/6236612

    此外、您和 CSS 引入了额外的术语、如“备用 BSL“和“第 2 个 BSL“等、但并未明确将它们与其他定义保持一致。

    因此、很难完全理解其架构、即使在 TI 自己的文档中、术语似乎也不是一致的定义。

    我们是否可以考虑调整 术语的一致性???

    [/报价]

    这将是一项长期的任务。

    备用 BSL 应该是“C:\ti\mspm0_sdk_2_09_00_01\examples\nortos\LP_MSPM0G3507\bsl“中的第二个 BSL。

    但对于您的问题、建议使用以下方法:

    尝试按照 用户指南 MSPM0 NONMAIN 闪存配置指南来测试您的非主修改功能、并尝试根据 Uniflash 将其读回。

    然后、您可以根据演示代码开始第二次 BSL 编程。

    成功对第 2 个 BSL 进行编程后、您可以下载自己的应用代码(需要在链接器文件中排除第 2 个 BSL 占用的闪存地址)

    [/quote]