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.

[参考译文] TMS320F28374S:如何配置引导加载程序和应用程序的两个 CMD 文件

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951559/tms320f28374s-how-to-configuration-the-two-cmd-file-of-bootloader-and-application-program

器件型号:TMS320F28374S

您好、专家、

客户遇到的问题

  • 如果在引导加载程序过程后重新为电路板供电、则系统无法正常工作;
  • 如果在引导加载程序过程后继续运行电路板、系统可以正常工作。

背景是客户分别对引导加载程序和应用程序进行划分、这意味着有两个不同的 CMD 文件。

最后、他们发现两个 CMD 文件中的 RAM 定义不同、一个用于数据存储器、另一个用于程序存储器、并 通过将这两个 RAM 同步为同一函数来解决此问题。

您能帮助回答客户的问题吗? 谢谢!

  • 如果需要注意、如何配置这两个 CMD 文件?
  • 对于生产板、如何解决问题、将"0"写入 RAM、然后启动应用程序代码?

对于以下文件、左侧是问题 CMD 文件、右侧是正确的文件。

此致

Rayna

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

    您好、Rayna、

    如果您在 MCU 上运行的最终应用程序被分成2个 CCS 项目、则需要确保两个项目不使用相同的内存区域、因为其中一个可能会覆盖另一个项目所写的内容。 最好的方法是在这2个项目之间分配存储器、并在相应的项目中仅使用分配的存储器。 闪存存储器也是如此。

    [报价用户="Rayna Wang "]对于生产板,如何解决问题,请将"0"写入 RAM,然后启动应用程序代码?

    您能解释一下这个问题吗? 通常使用电路板上的引导选择引脚来选择引导模式

    此致、

    Veena

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

    您好、Veena、

    我的意思是、如果引导加载程序在生产板中无法更改、可以使用应用程序 擦除 RAM 存储器来解决此问题?

    或者、在无法更改引导加载程序的情况下、是否有任何其他有效方法来解决该问题?

    谢谢!

    此致

    Rayna  

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

    来自编译器的自动初始化例程将负责初始化程序使用的 RAM。 引导加载程序和应用程序都将链接此例程。

    是否要初始化整个 RAM 或仅初始化变量使用的位置?

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

    您好、Veena 和 Baskaran、

    这不是2个应用程序项目、而是一个用于引导应用程序的引导加载程序。 两个程序都有自己的 CMD 文件、该文件分别定义了存储器、因此在这种情况下、相同的 RAM 区域被定义为 PAGE 0和 PAGE 1。

    对于 生产机器、引导加载程序已下载到器件中、客户想知道如何解决此问题、如果初始化 RAM、整个或部分都可以解决此问题?

    谢谢!

    此致

    Rayna

    初始化  

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

    您好、Rayna、

    如 Baskaran 在其帖子中所述、应用程序中的自动初始化例程会初始化应用代码使用的所有 RAM 存储器。 如果引导加载程序代码使用相同的 RAM 位置、则会覆盖该位置。

    请注意、只有在使用 EABI 格式时、才会对未初始化的变量进行零初始化。 如果使用 COFF 格式、未初始化的变量将保留旧值。 如果这些变量被显式初始化、EABI 和 COFF 编译器都将对它们进行初始化。

    此致、

    Veena

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

    您好、Veena、

    感谢您的解释。

    但是、我仍然很困惑覆盖 RAM 方法是否可以解决引导加载程序问题? 请帮您澄清问题吗? 谢谢!

    此致

    Rayna

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

    您好、Rayna、

    可能是我不正确理解问题。 请告诉我的理解是否正确。

    该器件预加载了引导加载程序应用程序、您将在引导加载程序之后切换到应用程序代码。 应用程序代码使用一些 RAM 位置。 这些将由应用程序的自动初始化例程进行初始化。

    您能解释一下您所面临的引导加载程序问题吗?

    此致、

    Veena