由于内部闪存的内存限制,是否建议使用 SPI 闪存来 运行 代码而不是内部闪存?
is it recommended to use SPI flash to run code instead internal flash due to memory limitation of internal flash?
我们在项目中使用了LPC546xx系列微控制器,目前处于初始阶段,我们正在最终确定软硬件要求。基本固件大小(包含 RTOS、第 3 方堆栈、库等)当前为 480 KB。现在,一旦开发出完整的应用程序,其大小将超过内部闪存大小 (512KB),而且我们需要可以单独保存固件更新映像的存储空间。
所以我们计划使用 4MBMB 的 SPI 闪存(S25LP064A-JBLE,http://www.issi.com/WW/pdf/IS25LP032-064-128.pdf,串行闪存)来引导和 运行 固件。
是否推荐 运行 来自 SPI 闪存的代码?如何将外部闪存直接映射到 CPU 内存 space?谁能给出一个包含此内存映射(链接描述文件等)的示例或 LPC546xx 使用 SPI FLASH 的演示应用程序?
一般来说不推荐,换句话说:越接近CPU越好。不过S25LP064A和LPC546xx都支持XIP,所以是可行的。
这不是一个小问题,因为很多方面都会受到影响。 IE。最好避免出现问题,并且应该在规划阶段就将其解决。嵌入式系统更多的是妥协,做出 right/better 选择需要技能和经验。
- NXP 论坛上回复的相同问题:link
512K 的 NVRAM 很大。即使使用第 3 方库,几乎肯定还有优化空间。
在相关说明中,关于 XIP 的讨论应该提供有价值的见解:。
我强烈建议使用 file-systems(如果尚未使用),外部存储更适合。离计算单元越远,相关性就越高。这不是 XIP,无论您采用哪种方式,惩罚都是 copy-to-RAM。 IE。性能会变慢。但根据我的经验,对速度的需求 often-times 并未得到彻底考虑,至少部分被大大高估了。
关于您提到的 RTOS 和 FW-upgrade:
除非它是一个糟糕的 RTOS,否则内置 file-system 意识。特别是对于 FW 升级(注意:您需要空间容纳 3 个图像,包括恢复出厂设置),除非 SoC-vendor 已经通过其他方式(OTA)支持,否则它将使生活更轻松,风险更小。如果没有FS-awareness,可以添加
固件升级需要大量额外存储空间。越简单越好。然而,更简单也 更安全 这尤其对于 FW 升级非常重要。在最简单的情况下(二进制平面图像),您至少需要两倍于已经消耗的内存量。
All-in-all:我觉得你的方向是可行的,根据实际情况也许是你唯一的选择。
我们在项目中使用了LPC546xx系列微控制器,目前处于初始阶段,我们正在最终确定软硬件要求。基本固件大小(包含 RTOS、第 3 方堆栈、库等)当前为 480 KB。现在,一旦开发出完整的应用程序,其大小将超过内部闪存大小 (512KB),而且我们需要可以单独保存固件更新映像的存储空间。
所以我们计划使用 4MBMB 的 SPI 闪存(S25LP064A-JBLE,http://www.issi.com/WW/pdf/IS25LP032-064-128.pdf,串行闪存)来引导和 运行 固件。
是否推荐 运行 来自 SPI 闪存的代码?如何将外部闪存直接映射到 CPU 内存 space?谁能给出一个包含此内存映射(链接描述文件等)的示例或 LPC546xx 使用 SPI FLASH 的演示应用程序?
一般来说不推荐,换句话说:越接近CPU越好。不过S25LP064A和LPC546xx都支持XIP,所以是可行的。
这不是一个小问题,因为很多方面都会受到影响。 IE。最好避免出现问题,并且应该在规划阶段就将其解决。嵌入式系统更多的是妥协,做出 right/better 选择需要技能和经验。
- NXP 论坛上回复的相同问题:link
512K 的 NVRAM 很大。即使使用第 3 方库,几乎肯定还有优化空间。
在相关说明中,关于 XIP 的讨论应该提供有价值的见解:
我强烈建议使用 file-systems(如果尚未使用),外部存储更适合。离计算单元越远,相关性就越高。这不是 XIP,无论您采用哪种方式,惩罚都是 copy-to-RAM。 IE。性能会变慢。但根据我的经验,对速度的需求 often-times 并未得到彻底考虑,至少部分被大大高估了。
关于您提到的 RTOS 和 FW-upgrade:
除非它是一个糟糕的 RTOS,否则内置 file-system 意识。特别是对于 FW 升级(注意:您需要空间容纳 3 个图像,包括恢复出厂设置),除非 SoC-vendor 已经通过其他方式(OTA)支持,否则它将使生活更轻松,风险更小。如果没有FS-awareness,可以添加
固件升级需要大量额外存储空间。越简单越好。然而,更简单也 更安全 这尤其对于 FW 升级非常重要。在最简单的情况下(二进制平面图像),您至少需要两倍于已经消耗的内存量。
All-in-all:我觉得你的方向是可行的,根据实际情况也许是你唯一的选择。