OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11361|回复: 23

在调试LWIP的时候遇见这样的错误Assertion "memp_malloc: memp properly aligned"

[复制链接]

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
发表于 2016-7-14 13:23:56 | 显示全部楼层 |阅读模式
1金钱
在调试LWIP的时候遇见这样的错误Assertion "memp_malloc: memp properly aligned" failed at line 428 in ..\LWIP\lwip-1.4.1\src\core\memp.c这是串口打印出来的,说是没对齐什么的,这主要是什么原因造成的呀?原子哥 能帮忙分析一下吗



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-15 10:52:33 | 显示全部楼层
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "tcpip_thread: invalid message" failed at line 146 in ..\LWIP\lwip-1.4.1\src\api\tcpip.c
今天又有2个错误
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-15 23:12:48 | 显示全部楼层
majay123 发表于 2016-7-15 10:52
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertio ...

malloc和free这两个函数加中断保护,试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-16
在线时间
9 小时
发表于 2016-7-16 21:33:14 | 显示全部楼层
正点原子 发表于 2016-7-15 23:12
malloc和free这两个函数加中断保护,试试。

本人新手,也遇到楼主同样的问题,请教一下,如何在malloc和free函数中加中断保护?
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-18 07:54:18 | 显示全部楼层
正点原子 发表于 2016-7-15 23:12
malloc和free这两个函数加中断保护,试试。

原子哥,如何加保护,这方面也是刚刚接触,请指教指教
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-18 08:55:42 | 显示全部楼层
还有就是一出现这样的错误 就进硬件中断
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-7-16
在线时间
9 小时
发表于 2016-7-18 11:54:19 | 显示全部楼层
majay123 发表于 2016-7-18 08:55
还有就是一出现这样的错误 就进硬件中断

楼主出现的这个问题解决了吗?我也遇到同样的问题,找不到原因所在!能否共享一下解决办法!
回复

使用道具 举报

5

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2016-7-18
在线时间
6 小时
发表于 2016-7-18 14:44:02 | 显示全部楼层
同求原因,是freebuf的问题吗,而且这问题还很难重现,偶尔出现一次
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-20 23:23:28 | 显示全部楼层
majay123 发表于 2016-7-18 07:54
原子哥,如何加保护,这方面也是刚刚接触,请指教指教

就是进入的时候禁止中断,退出的时候,开启中断。
具体的,参考我们的阿波罗stm32f429,综合实验
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-20 23:24:14 | 显示全部楼层
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址
void myfree(u8 memx,void *ptr)  
{  
    OS_CPU_SR cpu_sr=0;
        u32 offset;   
        if(ptr==NULL)return;                //地址为0.  
        OS_ENTER_CRITICAL();                //添加保护
        offset=(u32)ptr-(u32)mallco_dev.membase[memx];     
    my_mem_free(memx,offset);        //释放内存
        OS_EXIT_CRITICAL();   
}  
//分配内存(外部调用)
//memx:所属内存块
//size:内存大小(字节)
//返回值:分配到的内存首地址.
void *mymalloc(u8 memx,u32 size)  
{  
    OS_CPU_SR cpu_sr=0;
    u32 offset;   
        OS_ENTER_CRITICAL();                //添加保护       
        offset=my_mem_malloc(memx,size);  
        OS_EXIT_CRITICAL();                           
    if(offset==0XFFFFFFFF)return NULL;  
    else return (void*)((u32)mallco_dev.membase[memx]+offset);  
}  [/mw_shl_code]
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-21 13:28:42 | 显示全部楼层
正点原子 发表于 2016-7-20 23:24
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址

这个保护加了的,malloc.c用的就是原子哥 你的程序
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-21 13:29:17 | 显示全部楼层
这会不会跟Stack_Size的大小有关呀
回复

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
 楼主| 发表于 2016-7-25 08:40:27 | 显示全部楼层
Assertion "memp_malloc: memp properly aligned" failed引起这个错误的是什么原因呀
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-29 23:54:20 | 显示全部楼层
majay123 发表于 2016-7-21 13:29
这会不会跟Stack_Size的大小有关呀

我们综合实验,加了这个保护,就没出过问题了。
LWIP传输速度是5MB/s
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

216

帖子

1

精华

高级会员

Rank: 4

积分
970
金钱
970
注册时间
2016-11-24
在线时间
156 小时
发表于 2017-2-14 09:53:47 | 显示全部楼层
majay123 发表于 2016-7-15 10:52
Assertion "pbuf_free: p->ref > 0" failed at line 650 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertio ...

楼主,我也碰到这个问题,你解决了么
回复

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-10-19
在线时间
5 小时
发表于 2017-8-23 13:50:50 | 显示全部楼层
lzq12 发表于 2017-2-14 09:53
楼主,我也碰到这个问题,你解决了么

同问,楼主解决了么
回复

使用道具 举报

12

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-10-27
在线时间
34 小时
发表于 2017-10-17 16:43:44 | 显示全部楼层
silverz 发表于 2017-8-23 13:50
同问,楼主解决了么

同问,你这个问题解决没
回复

使用道具 举报

12

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-10-27
在线时间
34 小时
发表于 2017-10-17 17:44:04 | 显示全部楼层
正点原子 发表于 2016-7-20 23:24
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址

原子哥,请教下,我在例程中找了好久都没找到你说的例程,你能说详细点吗,另外你这个好像是用的操作系统的,我现在用的裸机,如何节哀保护呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-10-18 00:29:57 | 显示全部楼层
风语者1991 发表于 2017-10-17 17:44
原子哥,请教下,我在例程中找了好久都没找到你说的例程,你能说详细点吗,另外你这个好像是用的操作系统 ...

我们开发板资料下载总帖,去下载阿波罗的例程,寄存器版本,最后一个就是了
你找资料能力有待提高啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-10-27
在线时间
34 小时
发表于 2017-10-18 11:01:08 | 显示全部楼层
正点原子 发表于 2017-10-18 00:29
我们开发板资料下载总帖,去下载阿波罗的例程,寄存器版本,最后一个就是了
你找资料能力有待提高啊

主要是我一直看的都是HAL库以及标准库的,寄存器的还没解压,也就没去看,还以为都是一样通用的呢
回复

使用道具 举报

12

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-10-27
在线时间
34 小时
发表于 2017-10-18 11:55:46 | 显示全部楼层
正点原子 发表于 2016-7-20 23:24
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址

原子哥,你这个用的时操作系统,进入临界区,直接裸机跑的,怎么保护,实现类似的功能呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-10-19 01:23:40 | 显示全部楼层
风语者1991 发表于 2017-10-18 11:55
原子哥,你这个用的时操作系统,进入临界区,直接裸机跑的,怎么保护,实现类似的功能呢

你看代码就知道了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2017-12-26
在线时间
15 小时
发表于 2022-3-12 16:03:13 | 显示全部楼层
本帖最后由 AlphaESS 于 2022-3-12 16:04 编辑
正点原子 发表于 2016-7-20 23:24
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址

原子哥,我这里加了保护,和你上面一样,仍然会出错,最后进hardfault

主机192.168.9.151连接上服务器,主机端口号为:51226
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "bad pbuf type" failed at line 571 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "Can't move over header in packet" failed at line 1359 in ..\LWIP\lwip-1.4.1\src\netif\etharp.c
Assertion "pbuf_free: sane type" failed at line 635 in ..\LWIP\lwip-1.4.1\src\core\pbuf.c
Assertion "memp_free: mem properly aligned" failed at line 458 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_free: mem properly aligned" failed at line 458 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_free: mem properly aligned" failed at line 458 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_free: mem properly aligned" failed at line 458 in ..\LWIP\lwip-1.4.1\src\core\memp.c
Assertion "memp_malloc: memp properly aligned" failed at line 430 in ..\LWIP\lwip-1.4.1\src\core\memp.c
阿里旺旺图片20220312155625.jpg
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2024-2-18
在线时间
3 小时
发表于 2024-2-18 15:47:17 | 显示全部楼层
正点原子 发表于 2016-7-20 23:24
[mw_shl_code=c,true]//释放内存(外部调用)
//memx:所属内存块
//ptr:内存首地址

Assertion "pcb->snd_queuelen >= pbuf_clen(next->p)" failed at line 1111 in ../Middlewares/Third_Party/LwIP/src/core/tcp_in.c
Assertion "pbuf_free: p->ref > 0" failed at line 753 in ../Middlewares/Third_Party/LwIP/src/core/pbuf.c
请问这俩错怎么办
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表