关于freeRTOS heap_4.c报错

2019-07-21 05:28发布

在使用freeRTOS系统时,系统总是会报错,
Error:...FreeRTOSportableMemMangheap_4.c,320
Error:...FreeRTOSportableMemMangheap_4.c,321

我看了是在vPortFree()里的一个断言抛出的错误,主要是判断是否真正分配
        /* Check the block is actually allocated. */
        configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 );
        configASSERT( pxLink->pxNextFreeBlock == NULL );

我的任务里面也只分配了没多大的空间啊,而且任务堆栈我都设置了  4096了,还是会报错
char *pntr = pvPortMalloc(20);
...
...

...
if(pntr != NULL)
vPortFree(pntr);
实在是搞不懂,有遇到过这种情况的嘛

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
JImLu
1楼-- · 2019-07-22 12:43
BJTT 发表于 2018-3-5 15:18
现在的问题是,我把所有的任务都删掉了,只留一个简单的LED任务,还是会报同样的错误,不知道为什么

楼主,您好,我遇到了和您差不多的问题。我是在Freertos中有出现重复的删除和创建同一个任务,结果出现了和您一样的错误,请问下您当时的问题找到原因了么?
BJTT
2楼-- · 2019-07-22 17:16
JImLu 发表于 2018-6-4 14:20
楼主,您好,我遇到了和您差不多的问题。我是在Freertos中有出现重复的删除和创建同一个任务,结果出现了 ...

应该是某个任务的栈分配太小了,你都先调大试试看,写个1024什么的,之后再改小
轩辕文
3楼-- · 2019-07-22 22:51
 精彩回答 2  元偷偷看……
轩辕文
4楼-- · 2019-07-23 04:34
堆栈大小应该是没有什么问题的
Sanjay
5楼-- · 2019-07-23 05:21
本帖最后由 Sanjay 于 2019-1-29 16:34 编辑
轩辕文 发表于 2018-7-27 21:08
我也遇到了这个问题,我的内存是申请过的
[mw_shl_code=c,true]t = pvPortMalloc(256);
                 ...

很明显你的地址t被修改了,释放的地址和原来的不一样,估计楼主也是这样的问题

一周热门 更多>