新手入门
- 积分
- 11
- 金钱
- 11
- 注册时间
- 2020-11-6
- 在线时间
- 1 小时
|

楼主 |
发表于 2020-11-6 11:36:49
|
显示全部楼层
本帖最后由 HeHeOldDriver 于 2020-11-6 11:44 编辑
刚硬着头皮,看了下pvPortMalloc里面返回空间指针pvReturn的逻辑(从前往后看那些判断看不懂,索性从后往前看返回值怎么赋值的),一下就找到原因了,果然还是方法总比困难多。
pvReturn被赋值的地方,有个条件:if( pxBlock != pxEnd ),就是说没有到结束标记就找到,则能申请到。这就说明我申请的空间太大,或者是堆设置的太小。
1.先检查这次要申请多大,一共是512*4字节,2048个字节;2.在看FreeRTOS_config.h里面heap设置了多大:#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 2 * 1024 ) ),也是2048
果断修改配置#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 3 * 1024 ) ),重新编译、加载,问题解决 |
|