我正在开发基于RP2040的设备。通过在此设备中使用SD卡或**eMMC**等大容量存储设备,我希望我的设备具有更多功能。我希望上传到此存储介质(SD 卡或 eMMC)的代码/脚本能够由我的设备解释并像新功能一样使用。换句话说,我希望它的使用方式就像我在操作系统上安装应用程序一样。我对您现阶段建议的所有方法持开放态度。
注意:还有一个名为 Flipper Zero 的设备可以完全满足我的需求。该设备可以解释并执行 SD 卡上加载的代码。
例如,我可以开发一个类似操作系统的结构,可以解释直接加载到SD卡或eMMC的代码。或者我可以想办法在MCU的内部存储器和SD卡/eMMC之间建立连接,以便将要使用的脚本/代码暂时移动到存储器中,然后使用完毕后从存储器中删除它。 (如果不这样做并将其始终保存在内存中,设备的内部存储器可能会被填满,这可能是一个大问题)。但是,我不确定这些方法是否可行或是否有效。如果可以做到的话,我不知道如何做到。你能在这件事上指导我吗?
您无法直接从 SD 卡文件系统运行本机代码,因为它没有内存映射,需要将代码加载到内存(闪存或 RAM)中。 Cortex-M 的哈佛架构意味着通常(也许与直觉相反),意味着在数据 RAM 中运行代码通常会更慢,因为数据和指令都是通过同一总线获取的。
基于 Arduino 的 Gamebuino 有一个引导加载程序,允许您通过菜单选择图像,从中刷新应用程序空间并启动它。这是一个相对简单的解决方案。
可以从 SD 卡加载和运行解释代码,但这会限制您能够实现的任何语言解释器的性能和功能。 您甚至可能需要构建自己的解释器。
另一种可能性是使用 QSPI 闪存而不是 SD 或 eMMC。 密度较低,但对于读取操作,QSPI 内存是内存映射的,可以直接从中执行本机代码(尽管速度稍慢)。 困难在于链接 - 除非存储的应用程序完全独立且完全链接,否则您可能需要一种与常规闪存中的核心服务链接的方法。 不久前有一个问题。