从外部 SRAM 运行可执行文件

电器工程 stm32 引导加载程序 急速
2022-02-01 06:31:28

我有一个带有一些外部 SRAM 的 STM32 开发板。我想从那个外部 SRAM 执行我的代码,但我的处理器只支持从闪存、内部 SRAM 或系统内存(内部 SRAM 的一部分)启动。

从外部 SRAM 运行代码的最简单方法是什么?

注意:我通过 JTAG 使用 OpenOCD 加载代码,并且使用 GDB。

1个回答

在开始从外部 RAM 执行代码之前,您必须首先初始化 FSMC 并将代码复制到该 RAM 中,因此无论如何您都必须从闪存启动。正确编写的链接描述文件(在正确的地址处链接了一个附加代码段,但放在闪存中,如 .data 段)将有很大帮助。您将能够使用正确的部分属性标记需要放置在 RAM 中的函数。初始化 FSMC 后,将该部分复制到 RAM 中,就像在启动代码中复制 .data 一样。剩下的就是以正常方式调用您的 RAM 函数。

请注意从外部 SRAM 运行的两个严重问题:

  1. 它会很慢。据此,比从闪存甚至内部 SRAM 运行慢 6...8 倍这种微控制器架构根本没有针对这种用途进行优化

  2. 一些 STM32 芯片存在硅缺陷,两个总线主控访问 FSMC 会使芯片崩溃。这基本上会阻止您使用 DMA。这涉及 STM32F103 修订版 Y IIRC,也可能涉及其他芯片。

所以我个人不会这样做。我必须再一次在这个网站上重复微控制器!= CPU,即使它是 ARM。