首先我们知道富芮坤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的占用情况理清楚了。
本文详细分析了富芮坤FR800X芯片的SRAM使用情况,考虑了硬件独占、Boot部分、全局变量栈、map文件显示及实际运行时堆内存分配,计算出剩余可用堆内存大约为37.2K字节。
1602

被折叠的 条评论
为什么被折叠?



