CH582如何优化BLE协议栈的RAM占用

请问,如何能优化下BLE协议栈的RAM空间,我编译BLE中最基本的一个示例,光BLE协议栈就占去了16K RAM,分析map文件,发现其中6K是BLE_MEMHEAP,还有8K是highcode占用的。

看手册描述6K的BLE_MEMHEAP是最小要求,不好优化了,但highcode中占用的8K代码都是libCH58xBLE.a中的,用户无法控制,由于我的业务代码需要大概20K空间,已经无法再优化了,只有从BLE_MEMHEAP和highcode中优化RAM,或者可以控制下highcode的使用,先不追求效率了,首要问题是运行我的业务代码。

可以看一下我们的CH32V208芯片,最近就出了,RAM的大小满足你的需求。


CH32V208这个片子我看了,flash才128K,又小了。

近一个月一直评估CH582,内部资源和外设及功耗刚好符合我的应用,单芯片解决方案,usb,触摸,BLE等功能我都评估完成了,完美运行,现在把之前的业务代码移植过来才发现ram不够了,之前用stm32f103cbt6,20Kram刚好够用。

我现在尝试把6K的BLE_MEMHEAP减少到4K,好像没什么大问题,不敢再减了。目前就是这个8K的highcode区域无法控制,libCH58xBLE.a这个库不能改动,只需要再有几K的highcode代码恢复到flash运行就可以。

除了运行效率高,有些highcode是必须到RAM中运行吗?


厂家可不可以提供几个不同highcode级别的libCH58xBLE.a库,可以根据不同情况选用,虽然ch582有32Kram,但一用到BLE功能就占去了16K ram,只剩下16K ram的单片机了,稍微复杂点的应用就无法使用了。


我们这里尝试了将外部放在RAM中跑的程序放在了FLASH中,最终精简也只有几百字节的大小,其他主要是在底层进行的调用处理,用户无法进行处理的,因此针对你的需求使用582无法达到。

可以尝试使用208芯片,208的RAM有64K,大小是足够的,FLASH总共有448K,其中的128kFLASH是快速FLASH,运行的速度更快,总体来说,208是满足你的需求,可以考虑一下。


就是libCH58xBLE.a这个库造成的,里面有很多highcode代码放到RAM运行,足足有8K RAM被用了,这个用户不能改,你们厂家应该是可以改动的,能不能提供一个减少highcode区域的库,减少RAM的用量。

CH582我评估了一个多月了,其中填了不少坑了,现在所有功能都能正常运行了,而且我的项目几乎把CH582的外设都用到了,几乎单芯片就满足我的要求了,所以这个单片机太适合我用了,现在就差那1,2KRAM的空间就能完成我的项目了,改方案的话又要一切重头开始了。


208跟582的使用是一致的,移植过去也基本没有差别,可以替换没有区别。582的RAM如果是差几百字节,可以精简代码想办法处理,如果是差了几k的大小基本无法处理。目前暂不提供专门的库给客户。因此推荐使用208。


208大概什么时候出来,现在项目快到截止日期了,时间比较紧了。

目前可以申样吗


可以跟销售工程师联系一下

image.png


好的,多谢解答


只有登录才能回复,可以选择微信账号登录