工具/软件:Code Composer Studio
UCD3138064提供了下载新代码并切换到该代码的功能、同时仍在运行电源。 为了便于快速切换、 我们需要在 新版本的代码中使 RAM 变量保持在相同的位置。 据我所知、 CCS 仅在您使用优化级别4 -整个程序优化时才开始优化 RAM 位置。 就是这种情况、或者进行更低级别的优化有时 会根据 代码更改( 除了添加变量)移动 RAM 变量。
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.
工具/软件:Code Composer Studio
UCD3138064提供了下载新代码并切换到该代码的功能、同时仍在运行电源。 为了便于快速切换、 我们需要在 新版本的代码中使 RAM 变量保持在相同的位置。 据我所知、 CCS 仅在您使用优化级别4 -整个程序优化时才开始优化 RAM 位置。 就是这种情况、或者进行更低级别的优化有时 会根据 代码更改( 除了添加变量)移动 RAM 变量。
编译器不会尝试在连续编译上的同一位置查找变量。 当两个构建之间的变化很小时、这种情况往往会发生。 但它不是为设计或测试的要求。 因此、无法识别可能导致变量更改存储器位置的所有条件。
以下是您可能未考虑的一个因素。 更改链接器查看目标文件和库的顺序可能会导致差异。
删除一个变量或添加一个变量会导致更高存储器地址的所有其他变量更改位置。
我不知道使用--opt_level=4会导致变量更改位置。 但我并不感到奇怪。 使用--opt_level=4构建的所有目标模块都合并到一个编译单元中,然后再次构建。 变量在该单元中的顺序可能与单独编译时的顺序完全不同。 在较低的优化级别上不会看到类似的效果。
恐怕我的帖子不是很有用。 但这就是这种情况的性质。
谢谢、此致、
乔治