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.

[参考译文] TMS320F28379D:在 SysCtl_resetDevice () 后、RAMGS 中的 NOINIT 变量复位为零

Guru**** 2837210 points

Other Parts Discussed in Thread: TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1592524/tms320f28379d-tms320f28379d-noinit-variable-in-ramgs-resets-to-zero-after-sysctl_resetdevice

部件号: TMS320F28379D

您好:

我正在为 TMS320F28379D 开发自定义引导加载程序、我面临在软件复位时在 RAM 中保留状态标志的问题。

我需要将“引导标志“从主应用程序传递到引导加载程序以强制更新模式。

  1. 应用程序将幻值写入 RAM 中的共享变量。

  2. 应用程序使用触发软件重置SysCtl_resetDevice()

  3. 引导加载程序会启动、检查变量、如果魔术值存在、则保持在引导模式下。

即使我已 type = NOINIT在链接器命令文件中将该段定义、该变量看起来在软件复位后重新初始化(清除为 0)或被覆盖。 引导加载程序读取该值时、该值就会消失。

我的实施:

1.c 代码(声明): 我正在使用#pragma NOINIT并确保变量没有在代码中显式初始化。

image.png

 

2.链接器命令文件 (.cmd): 我将该段映射到第 1 页上的“Global Shared RAM“中的 RAM_EXCHANGE。

 

image.png

image.png

我的问题:

  1. 标准 TI_c_int00 启动例程中是否有任何机制可以覆盖NOINIT GS RAM 中段的属性?

  2. 器件引导 ROM 是否执行(在复位后和引导加载程序之前立即运行)使用或清除 RAMGSx 的特定区域、可能会覆盖我的标志?

  3. 对于 F2837xD 上的软件复位期间的持续标志、是否有建议的“安全“RAM 位置?

如果您对如何保持此数据的持久性提出任何建议、我们将不胜感激。

谢谢你。

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

    您好、

    请查看下面的 BootROM 流程图。

    谢谢