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.
您好、专家、
客户遇到的问题
背景是客户分别对引导加载程序和应用程序进行划分、这意味着有两个不同的 CMD 文件。
最后、他们发现两个 CMD 文件中的 RAM 定义不同、一个用于数据存储器、另一个用于程序存储器、并 通过将这两个 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