0 Preface/Foreword
1 查看方法
1.1 map文件中查看
1.1.1 RAM可用情况
在map文件中,搜索字符串:free_ramcp
该字段表示剩余可用的RAM大小,前面对应的是hexadecimal的数值(单位Byte),就是剩余可用的RAM。
注意:
- 这里是静态的RAM可用,因为编译完成的,计算的都是静态数据。系统运行后,比如音乐播放/通话过程中,会动态分配大块的内存,比如BES2600IUC系列,会有90K的开销。
- 所以在评估添加第三方算法时候,比如降噪算法,RAM是否足够,那么需要在map文件中的可用的RAM减去90K,最后得出的数据就是真实的可以被第三方使用的RAM。
1.1.2 Flash可用情况
在map文件中,搜索字符串:free_flash
该字段表示剩余可用的flash大小,前面对应的是hexadecimal的数值(单位Byte),就是剩余可用的flash。
NOTE:
- 该数值就是真实的还可以用的flash;
- 如果要评估flash的使用,要注意是否支持OTA(Over The Air),支持的话,那么可用flash大小就不是该数值,因为OTA的话,需要留空总flash的一半的空间用于OTA时候备份。比如4M的flash,如果当前bin大小为1.5M,那么剩余的flash为4-1.5 = 2.5M(不适用OTA功能),但是,如果要使用OTA功能,那么可用的实际flash = 4/2 - 1.5 = 0.5M。
1.2 编译结束后日志中查看
该方法估计需要在BES2600之后的SDK中,编译成功后才会显示该信息。不过没有也没关系,可以通过修改脚本把改信息打印出来。
1.3 nominal RAM与可用的RAM存在差异
以BES2600IUC为例,标称的RAM大小为512K,但是用户可用的RAM大小为384K。
原因是:512K和384K,之间的差异,在于系统跑Bluetooth协议需要使用的RAM。
当然,正常的SDK编译完成之后,因为还附带了其他的功能,比如加了嵌入式RTOS等,编译之后,实际可用的RAM比384KB还要少很多,以BES2600IUC为例,SDK编译之后,剩余的可用RAM为200KB RAM。当然,这个200KB RAM,是静态可以的RAM,考虑到运行过程中,音乐播放/通话的动态消耗(90KB),实际可供用户使用的只有120K Byte左右。