OpenEdv-开源电子网

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

LWIP 申请内存问题

[复制链接]

24

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2015-7-24
在线时间
32 小时
发表于 2016-9-2 09:27:47 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 a1154870074 于 2016-9-2 09:30 编辑

u8 lwip_comm_init(void)
{
    int i,j;
    struct netif *Netif_Init_Flag;        //µ÷ÓÃnetif_add()º¯ÊýʱµÄ·µ»ØÖµ,ÓÃÓÚÅжÏÍøÂç³õʼ»¯ÊÇ·ñ³É¹¦
    struct ip_addr ipaddr;              //ipµØÖ·
    struct ip_addr netmask;             //×ÓÍøÑÚÂë
    struct ip_addr gw;                  //ĬÈÏÍø¹Ø
    i=lwip_comm_mem_malloc();
    if(i)return 4;    //ÄÚ´æÉêÇëʧ°Ü
    j=ENC28J60_Init();
    if(j)return 6;        //³õʼ»¯ENC28J60
    lwip_init();                        //³õʼ»¯LWIPÄÚºË
    lwip_comm_default_ip_set(&lwipdev);    //ÉèÖÃĬÈÏIPµÈÐÅÏ¢
   .........
}

u8 lwip_comm_mem_malloc(void)
{
    u32 mempsize;
    u32 ramheapsize;
    mempsize=memp_get_memorysize();            //µÃµ½memp_memoryÊý×é´óС 17K
    memp_memory=mymalloc(SRAMIN,mempsize);    //Ϊmemp_memoryÉêÇëÄÚ´æ
    ramheapsize=LWIP_MEM_ALIGN_SIZE(MEM_SIZE)+2*LWIP_MEM_ALIGN_SIZE(4*3)+MEM_ALIGNMENT;//µÃµ½ram heap´óС
    ram_heap=mymalloc(SRAMIN,ramheapsize);    //Ϊram_heapÉêÇëÄÚ´æ 4K
    if(!memp_memory||!ram_heap)//ÓÐÉêÇëʧ°ÜµÄ
    {
        lwip_comm_mem_free();
        return 1;
    }
    return 0;   
}


我在仿真的时候memp_memory和ram_heap都有申请到地址,应该return 0才对啊,但是用串口软件Xcom调试lwip_comm_mem_malloc(void)时出现return 1的现象


请问为啥?????


最佳答案

查看完整内容[请看2#楼]

返回1,就肯定有一个是0,自己printf出来,就知道了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-9-2 09:27:48 | 显示全部楼层
返回1,就肯定有一个是0,自己printf出来,就知道了。
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-9-2 15:29:20 | 显示全部楼层
这个函数你还XCom调用?不用了吧,你这样重复申请是不对的,内存没释放,有可能内存耗光了
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

24

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
金钱
248
注册时间
2015-7-24
在线时间
32 小时
 楼主| 发表于 2016-9-2 16:27:38 | 显示全部楼层
ysq7120 发表于 2016-9-2 15:29
这个函数你还XCom调用?不用了吧,你这样重复申请是不对的,内存没释放,有可能内存耗光了

memp_memory 大小为17K
ram_heap大小为4K
这样LWIP够不够用???
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-9-2 16:43:34 | 显示全部楼层
够不够用你开调试的宏不就知道了吗?数据大的话就调大一点,反正就调小。
我说内存耗光是说你反复调用 lwip_comm_mem_malloc,这样最后没内存申请了。不是通信不够内存,通信够不够内存,这个要你自己打印调试信息分析。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-9-2 16:43:48 | 显示全部楼层
够不够用你开调试的宏不就知道了吗?数据大的话就调大一点,反正就调小。
我说内存耗光是说你反复调用 lwip_comm_mem_malloc,这样最后没内存申请了。不是通信不够内存,通信够不够内存,这个要你自己打印调试信息分析。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 21:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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