0

我以前没有使用过外部存储器或 ARM 内核微控制器;我用过的所有微控制器都有内部闪存和单独的数据/程序地址空间。如果这些问题非常基本,请原谅我,但我可以使用“健全性检查”来确保我没有遗漏一些重要的东西:

我有一个现有程序,当为一个微编译时,它具有以下内存表(Cortex M3 的 IAR): 40 620 字节的只读代码存储器 1 215 字节的只读数据存储器 126 900 字节的读写数据存储器

我正在迁移到没有内部闪存和 128kB 内部 SRAM 的微型计算机,因为它具有我需要的非常高的处理器速度。我的计划是使用外部 NOR FLASH(假设为 512kB)和至少一个 DDR2 外部 RAM(再次,假设为 512kB+)。

我想在启动时将外部 FLASH 的内容复制到内部 SRAM 中(在单独的内部 FLASH 空间中提供引导加载程序),并从 SRAM 中执行代码。我仍然不清楚的是 128kB 的内部 SRAM 是否足以实现这一点。我可以简单地使用 DDR2 外部 RAM 来存放所有“数据”,并从 SRAM 中执行程序代码吗?这种方式有速度妥协吗?在这个应用程序中,速度是我的第一要务。有没有办法可以加快执行速度?

谢谢

4

1 回答 1

2

根据手臂与这些记忆(闪存、sram、dram)的连接方式,您可以随心所欲地使用它们。从 sram 中运行你可以在 dram 中有其他东西的东西。dram 通常比 sram 慢得多,但您可能有一个缓存来帮助和其他可能使一个或另一个内存更差/更好的因素。如果使用 gnu 工具,您当然可以制作一个链接器脚本和引导加载程序,它采用各种段 .text、.data、.rodata 等,并将它们设置在您想要的任何位置(sram、dram、每个中的特定位置等),并且然后放手去做吧……对于 IAR,我对此知之甚少,但毫无疑问,他们也有一些机制来做同样的事情。

于 2013-08-05T17:08:03.723 回答