首先我们知道富芮坤FR800X芯片硬件上一共设计了64KB的sram
下面我们来计算一下看看系统跑起来后剩余的SRAM还剩多少:
我们先减去已知的独占的内存部分
1.芯片RF硬件独享的8K内存
2.芯片boot部分占用的4K内存
3.keil编译后我们得到全局变量和栈等占用的空间,比我我测试的工程是6.7K(工程的栈默认分配了2K)
4.我们可以打开map文件,看到USER_RE_RAM占用约6.9KB
通过以上计算,我们还剩余64-8-4-6.7-6.9 ≈ 38.4K
因为芯片会把剩余的内存全部分配给堆内存,所以我们烧录工程在芯片运行后函数proj_init打印剩余堆内存(os_get_free_heap_size)可以看到还剩余37276字节。和计算值还相差一点,因为工程在运行初始化时候已经有部分申请了堆内存导致的。
所以实际剩余可以用堆空间约 37.2K。
到此我们基本上把ram的占用情况理清楚了。