LuatOS 实测:zbuff/UART/MQTT/Socket 四大功能内存深度解析
LuatOS 实测:zbuff/UART/MQTT/Socket 四大功能内存深度解析
在实际项目开发中,工程师基于 LuatOS 开发大数据传输、本地文件读写以及网络通信等功能时,常常会遇到一些共性的技术难题。例如,大容量 zbuff 缓冲区的实际内存分配位置不明确,串口在批量传输大文件时容易引发程序崩溃,而在高频数据收发场景下,MQTT 和 Socket 的内存占用波动较大,导致内存状态难以稳定控制。
本文以 Air780EHM 模组为实测对象,详细解析了 Lua 运行内存、系统底层内存以及外接 PSRAM 的实际资源分配机制。值得注意的是,在该模组中,系统内存与 PSRAM 的物理存储结构是一致的,数据可以直接互通。因此在日常开发与调试过程中,仅需关注系统内存的运行状态,而无需单独区分这两类内存。
一、zbuff 功能内存使用分析
zbuff 是 LuatOS 中用于直接操作二进制内存的库,其内存结构包括以下两个部分:
- Lua 对象元数据:体积较小,存储于 Lua 内存中;
- C 层数据块:体积较大,若设备支持 PSRAM,则优先在 PSRAM 中分配,否则将使用 SRAM 中的 sys 内存。
1.1 示例代码
下面是一个 zbuff 内存使用的示例:
-- zbuff 内存使用
查看全文
大怪科学
传感器专家网
四方光电 


评论0条评论