0

我可以在 stm32f429 中使用 fmc 读/写外部 sdram。但是使用地址和读/写函数不适合我的目的。我想引入外部 sdram,就好像内部 sram 已明确扩展,并且每当我定义一个大变量时,它都会自动投影到外部 sdram。

我检查了 stm32f4 cubemx 存储库示例(SDRAM+DATAMEMORY)并进行了很多搜索,但这似乎并不简单。

根据我发现的这些步骤,我在 system_init 之后遇到了硬故障。

  1. 在链接器中定义外部 sdram 地址和大小(片外 ram)

  2. 在 startup_stm32f420xx.s 中添加一些代码

  3. 定义 DATA_IN_ExtSDRAM 用于在 main 函数之前初始化 sdram

  4. 在 main 函数之前启用系统时钟

我的外部 sdram 连接到 stm32f429 中的 SDRAM1。

正确的程序是什么?SystemInit_ExtMemCtl() 函数是否正确实现?是否需要任何修改?是否需要在 main 函数之前和 system_init 之后启用时钟?

谁能逐步告诉正确的代码是什么?

提前致谢。

4

1 回答 1

1

你所要求的实际上是不可能的。

内部 SRAM 和外部 SDRAM 不连续;它们的地址相距很远,变量不能简单地从一个地址自动溢出到另一个地址。

使用外部存储器的正确步骤与示例项目中给出的完全一样,在这里重复它们将毫无意义。

您必须自己做的工作是决定哪些变量进入哪个内存。您可以使用gcc 节属性或其他编译器的类似功能将变量分配给节。STM32Cube 包中有这样的例子。

于 2022-01-20T09:39:21.153 回答