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.

[参考译文] MSPM0G1106:询问 MSPM0G1106 上的 RAM 执行和发布构建

Guru**** 2694555 points

Other Parts Discussed in Thread: MSPM0G1106

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1580787/mspm0g1106-inquiry-about-ram-execution-and-release-build-on-mspm0g1106

器件型号:MSPM0G1106


大家好、E2E 专家:

你好。

我目前正在处理的  MSPM0G1106  通道微控制器  Code Composer Studio  作为我的开发环境。

我想向您询问一个有关 RAM 代码执行的技术问题、确认我的理解是否正确、或者我是否可能缺少一些内容。

在测试过程中、我尝试将二进制文件从闪存复制到 RAM 并从 RAM 执行。 以下是我观察到的内容:

 

  • 可用的 RAM 为 32KB、而完整的二进制大小为 58KB、因此没有足够的空间来完全存储它。
  • 当我将一个简单的函数加载到 RAM 中时(例如,打开一个 LED ),系统进入 Default_Handler (),表示发生了异常。
  • 根据文档、如果 MSPM0 执行无效指令、访问禁止的地址或尝试从不可执行区域运行代码、则会触发异常。

由于没有针对该异常的特定处理程序、因此系统最终会出现:

 

void Default_Handler (void){

while (1);

}

 

这使我认为从 RAM 执行失败、因为复制的代码包含依赖于其在闪存中原始位置的指令。

当移动到 RAM 时、这些引用会中断、可能会跳转到无效地址并触发异常。

我知道可以将函数加载到 RAM 中以进行数据处理、缓冲区或结构、但取决于其存储器位置的任何指令(例如相对跳转)

如果从与最初构建地址不同的地址执行、则常量访问或内部调用可能会失败。

此外、我只能在调试模式下编译工程、从而生成更大的二进制文件。

我想知道是否有办法使用 Code Composer Studio 在发布模式下进行编译、因为这可以减小二进制文件大小并可能使其适合 RAM。

您能否确认我的解释是否正确?

是否有推荐的技术来在此微控制器上从 RAM 执行函数、或者有没有办法避免这些寻址问题?

如何配置 CCS 以在释放模式下进行构建?

此致、

公务员制度委员会