在爱好者友好的微控制器中执行来自 RAM 的指令

电器工程 微控制器 图片
2022-01-12 17:57:13

我的一个项目将极大地受益于能够运行不存储在微控制器中(而是存储在 SD 卡中)的程序。

所以,我正在寻找一种设备,它可以让我将 SD 卡中的代码加载到 RAM 中,然后从 RAM 中执行代码。目前,我只有 PicKit2 附带的编程器,所以我更愿意继续使用 PIC。

有谁知道哪些(如果有的话)PIC可以做到这一点?如果没有 PIC 能够做到这一点,那么有哪些不同的微控制器可以做到这一点?最好是那些在面包板兼容包中可用的。

4个回答

另一个要考虑的选择是为存储在 SD 卡上的程序使用解释语言。这样,处理器不会执行从卡中读取的机器代码,它只是将其视为数据。

这种方法以速度为代价为您提供了灵活性。

有很多选项可供选择: 微控制器高级语言解释器/编译器调查

如前所述,PIC(PIC32 除外)无法做到这一点。由于大多数微控制器的 RAM 资源非常有限,您可能不得不使用任何系列中较大的处理器或带有外部存储器总线的处理器。

MSP430 处理器可以从其 RAM 空间运行代码,但您将需要具有 16k RAM 空间的 F5438 之类的东西 - 以 128 字节运行代码并不是一个真正的选择!

如果处理器有外部总线,那么您可以将 RAM 放入代码空间。如果处理器架构不允许将数据写入执行内存,您可能需要添加一些额外的逻辑来将 RAM 映射到两个内存区域。

我已经在基于 8051 的系统中从 RAM 运行代码,但这意味着必须将 RAM 映射到 EXTERN 内存空间进行编程,然后再映射回 CODE 空间进行执行。加载器/监视器程序处理内存库切换和加载。请不要索要代码 - 我大约在 30 年前就这样做了,它早已丢失(并用 PL/M-51 编写)

有一些 PIC 允许您添加外部程序存储器。我从未这样做过,但应用笔记AN869AN778提供了有关如何实现外部存储器的更多信息。

由于其内存架构,中低档 PIC 都不能从 RAM 执行。

任何基于 ARM 的 CPU 都应该从 RAM 执行。尽管它们往往采用 smd 封装,但有不少“DIP”大小的模块已经加载了微控制器。例如,看看mbedLPCXpresso它们都带有引导加载程序,或者在 LPCXpresso 的情况下,带有调试接口和免费编译器。

如果您更喜欢使用简单的 8 位微控制器,或许可以考虑使用飞思卡尔 HCS08 系列的产品。这些可以从 RAM 中执行,并且有免费的 codewarrior IDE 和 C 编译器的代码限制版本。

我相当肯定 MPS430 也应该能够做到这一点,但我自己从来没有做过。