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.

[参考译文] TMS570LC4357:引导加载程序+应用项目的 NoInit RAM 存储器问题

Guru**** 2690795 points

Other Parts Discussed in Thread: HALCOGEN, TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1572575/tms570lc4357-noinit-ram-memory-issue-for-bootloader-application-projects

器件型号: TMS570LC4357
主题中讨论的其他器件: HALCOGEN

工具/软件:HalcoGen、CCS

尊敬的 TI 支持:

我们已使用 TMS570LC4357 进行工程开发、并在 TMS570 闪存中配置了引导加载程序映像和应用程序软件映像。 我们还在尝试使用 HalcoGen 在闪存内配置一个 512 字节的非初始化 RAM、以便在断电或意外复位期间将一些调试参数保留在非初始化存储器中。

我们遵循另一个 TI 用户示例  TMS570LC4357:复位时无初始化存储器 分步存储复位信息。  

在实现非初始化 RAM 特性之前、软件始终正常运行:复位或上电后、SW 首先进入引导加载程序、然后跳转到应用软件。

在实现上述非初始化 RAM 后、 我们遇到了一些问题:

-当我们使用 TI 调试 XDS110 探针时、可以保存并正确显示软件复位原因。

-然而,如果我们关闭然后开机,软件在那里挂起,既不进入引导加载程序,也不进入正常的应用程序。

-如果我们按下 TRST 重置按钮,仍然没有任何响应,软件仍然挂起。  

-如果我们按下 PORRST 重置按钮,则软件可以正确重启。  

-如果我们再次重启电源,问题会再次出现

为了使引导加载程序和应用程序保留相同的非初始化 RAM、我们还为引导加载程序启用 MPU。 应用软件已为这个非初始化 RAM 启用 MPU 区域 15、引导加载程序遵循相同的设置+ 更改了区域 2 和 3 权限

请问原因是什么? 我随附了代码截图、供您参考和调试:

e2e.ti.com/.../NonInitRAM_2D00_fail.zip

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

    尊敬的 Alex Lee:

    -但是、如果我们关闭电源然后再打开电源、软件就会挂起在那里、既不会进入引导加载程序、也不会进入正常的应用程序。

    核心到底在哪里、我是指哪个 API 或指令?

    (+) TMS570LC4357:TMS570LC4357 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    请参阅上面的线程一次、在这里、我解释了一种方法来指出代码在复位后卡住的地方、而不会干扰当前执行。

    在实施上述非初始化 RAM 后、 我们遇到了一些问题:

    您是否还在应用程序或引导加载程序中使用此区域?

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在哪个核心正在崩溃、我是指哪个 API 或指令?

    由于调试器已移除、我们无法识别哪个内核正在 stucking。 即使我们连接了调试器、在断电和上电复位后、调试器会话也将丢失、我们无法跟踪哪个 API 卡住。

    您是否还在应用程序或引导加载程序中使用此区域?

    为了保持一致性、我们在引导加载程序和应用软件中初始化相同的 byte 数组、但我们仅在应用软件中操作 byte 数组  

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

    您好 Alex、

    由于调试器已被删除、我们无法识别哪个内核正在中断。 即使我们连接调试器、在断电和上电复位后、调试器会话也将丢失、我们无法跟踪哪个 API 卡住。

    请遵循我在下面线程的第一注释中提到的过程、使用此过程、我们可以在不进行任何电源序列、也不更改任何执行的情况下再次连接调试器。

    (+) TMS570LC4357:TMS570LC4357 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    --
    谢谢、此致。
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请遵循我在下面线程的第一个注释中提到的过程、使用此过程、我们可以重新连接调试器、无需任何电源序列、也无需更改任何执行。

    谢谢。 我们已按照说明操作并找到软件程序并进入 ESM 错误例程第 3 组通道 3、如下所示:

    ...

    有什么线索说明为什么会发生这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请遵循我在下面线程的第一个注释中提到的过程、使用此过程、我们可以重新连接调试器、无需任何电源序列、也无需更改任何执行。

    谢谢。 我们已按照说明操作并找到软件程序并进入 ESM 错误例程第 3 组通道 3、如下所示:

    更新:发现此 ESM 错误是由我们的特殊设置引起的。 我们实际上 在 Non-Init RAM 区域中创建一个非 初始化变量、并在不进行初始化的情况下为其赋值。 发现这将导致 ESM 报告错误。 现在、我们在 ESM 错误检查后移动这个变量更新。

    我们不再看到 ESM 错误、但 应用程序软件将在引导加载程序软件和应用程序软件传输几次后随机进入异常。

    您能否确认我们的 MPU 配置正确、以及如何继续调试新问题?

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

    您好 Alex、  

    很抱歉、您稍后的回复、您是否仍需要对此问题的支持?

    此致、

    Aj Favela.