如何将lua堆栈放置在外部PSRAM上

如何将lua堆栈放置在外部PSRAM上,lua,embedded,stm32,Lua,Embedded,Stm32,我想向正在运行的lua脚本传递一个c数组。c数组为uin32,具有16位值。因此,高位和低位字具有1024个uint32_t值。所以2048个16位值 当我点击512 uint32_t值时,lua代码抛出一个lua_ERRMEM错误,因为没有更多可用内存。 这是绝对可能的,因为我的应用程序在STM32F2XXµC上运行 每次迭代我都会调用lua_checkstack,并分配20个额外的堆栈槽。所以理论上,堆栈应该总是足够大。 但如果它不能释放更多内存,就不会 所以我的想法是,我把它放在外部存储器

我想向正在运行的lua脚本传递一个c数组。c数组为uin32,具有16位值。因此,高位和低位字具有1024个uint32_t值。所以2048个16位值

当我点击512 uint32_t值时,lua代码抛出一个lua_ERRMEM错误,因为没有更多可用内存。 这是绝对可能的,因为我的应用程序在STM32F2XXµC上运行

每次迭代我都会调用lua_checkstack,并分配20个额外的堆栈槽。所以理论上,堆栈应该总是足够大。 但如果它不能释放更多内存,就不会

所以我的想法是,我把它放在外部存储器中,但我不知道怎么做。 我已经有了一个用于外部PSRAM的链接器部分,但我不能在某个地方只做属性((((.PSRAM)部分),对吗


那么我是否需要编写自己的lua_newstate函数?或者是否有其他方法将lua堆栈放置在我想要的位置?

lua堆栈只是lua对象之一。由分配器动态分配的每个对象的内存。Lua通常使用函数
realloc
free
,查看

您可以编写自己的分配器,您可以更改
realloc
free
的行为以使用PSRAM。如何做到这一点-另一个有趣的问题

附带说明:探索Lua源代码:它不太大,而且信息丰富。

的源代码可能也是一个很好的参考