启动 SRAM 读取操作
Posted
技术标签:
【中文标题】启动 SRAM 读取操作【英文标题】:Initiate SRAM read operation 【发布时间】:2012-03-31 03:12:39 【问题描述】:我正在对 ARM 芯片 (STM32F2) “裸机”进行编程。具体来说,我想读取保存在外部 SRAM 中的值。阅读reference manual 我了解到此类内存事务是通过 FSMC(灵活静态内存控制器)完成的。
我了解如何为 SRAM 读/写操作初始化 FSMC。 (我必须将适当的 GPIO 引脚设置为正确的备用功能,修改一堆控制寄存器等)。但是,我看不到如何启动例如读取操作。
初始化后我应该触摸哪些寄存器来读取(或写入)SRAM?
【问题讨论】:
【参考方案1】:据我了解,您可以通过 FSMC 控制器获得“内存映射”访问。所以你需要做的就是决定在哪个地址空间映射 SRAM,然后通过初始化指向那里的指针访问它。
【讨论】:
啊,听起来很简单!谢谢。 @Randomblue:这很容易,而且,如果您将 SRAM 区域添加到您的链接映射中,编译器将自动将其用于静态内存,或者您可以在那里定位您的堆。在这种情况下,您应该在 runtme 启动时初始化 SRAM,如果在 C 代码中执行此操作(或者如果在初始化外部 RAM 之前运行任何 C 代码),请确保堆栈未映射到外部存储器。 @Clifford:谢谢。如何将 SRAM 区域添加到我的链接映射?我以前从未真正接触过链接器脚本。我应该写哪几行? @unwind: write 操作是否适用相同的程序?我现在可以读取 SRAM,但不能在上面写字。 @Randomblue:这取决于您使用的工具链。我是否可以回答您的问题也可能取决于您使用的是什么。关于读/写,如果你不能写,你怎么知道你在读呢?您正在阅读的内容更可能不是 SRAM 内容 - 除非您有硬件故障。处理器将允许您读取任何有效地址 - 即使没有映射到它。配置 FSMC、GPIO 和时钟在 STM32 上比较复杂,容易出错。以上是关于启动 SRAM 读取操作的主要内容,如果未能解决你的问题,请参考以下文章