关于W801/W800芯片编译后的内存占用

发布于 2023-02-03 00:35:00

各位大佬,关于W801芯片,请教一个问题

1、使用10.00.08 SDK编译打印一句Hello World,内存占用如下:

Memory region Used Size Region Size %age Used

      I-SRAM:      663184 B      1152 KB     56.22%
      D-SRAM:      164556 B     294652 B     55.85%
      V-SRAM:          0 GB        256 B      0.00%
      

2、然后移植了LVGL 8.3.4之后,添加了4个按键的驱动,内存占用如下:

Memory region Used Size Region Size %age Used

      I-SRAM:      863888 B      1152 KB     73.23%
      D-SRAM:      246220 B     294652 B     83.56%
      V-SRAM:          0 GB        256 B      0.00%
      

3、之后打开蓝牙Client模式,添加一些LVGL的页面,编译后内存占用如下:
Memory region Used Size Region Size %age Used

      I-SRAM:     1011232 B      1152 KB     85.72%
      D-SRAM:      240192 B     294652 B     81.52%
      V-SRAM:          0 GB        256 B      0.00%
      

请问大佬,W801芯片在官方页面标示内存为288K,从ld文件可以看到D-SRAM就是所有的288K。所以是否观察D-SRAM的百分比就可以大约估算内存占用呢?

W800/W801芯片BLE功能的内存占用大约是多少呢?以前使用过别的芯片,别家IOT芯片大约是70K左右,如果这个占用比例的话,需要占288K内存的25%,从观察来看应该是不足的。我们在使用过程中遇到的蓝牙内存分配报错或者死机会不会和这个有关联呢?

另外Nimble里面应该是使用了malloc和free这类堆内存,堆内存应该不会显示在内存占用里面,所以实际内存占用肯定是大于编译后显示的D-SRAM百分比,这个理解是否正确呢?

本人小白一枚,刚开始入手这芯片,希望大佬们能够不吝指教,十分感激。

查看更多

关注者
0
被浏览
1.9k
ZYQ
ZYQ 2023-02-03
我已不再支持W80X任何相关问题的回复,请大家不要私信,有问题找 isme 谢谢

1、288KB内存是物理大小内存,其中 分为两个大的部分,一部分是程序占用以及堆内存空间分配的内存,另一部分是WIFIbuffer 、BLEbuffer、HSPIbuffer 等使用空间,分界线就在链接脚本的 PROVIDE (__ram_end = 0x2003A000); 这句话,头文件配置在 wm_ram_config.h 文件。
2、LVGL 占用内存较大,建议关闭一些不用的功能节省空间,如AT指令可在 wm_config.h 文件中关闭,关闭后 重新 完全编译。
3、print-memory-usage 参数只能看到静态内存的占用。
4、蓝牙的内存分配释放 都是静态的 自己管理的不适用系统 malloc free

2 个回答
isme
isme 认证专家 2023-02-03
冰镇大西瓜

这里有移植好的SDK,http://ask.winnermicro.com/article/76.html
剩余内存用这个看 printf("---> GetHeap:%d\n",tls_mem_get_avail_heapsize());

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览