OpenEdv-开源电子网

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

LWIP一直卡在初始化里面,不是内存申请失败就是DM9000初始化失败了,求帮爬坑。

[复制链接]

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
发表于 2017-12-13 17:16:26 | 显示全部楼层 |阅读模式
1金钱
[mw_shl_code=c,true]//LWIP初始化(LWIP启动的时候使用)
//返回值:0,成功
//      1,内存错误
//      2,DM9000初始化失败
//      3,网卡添加失败.
u8 lwip_comm_init(void)
{
        struct netif *Netif_Init_Flag;                //调用netif_add()函数时的返回值,用于判断网络初始化是否成功
        struct ip_addr ipaddr;                          //ip地址
        struct ip_addr netmask;                         //子网掩码
        struct ip_addr gw;                              //默认网关
        if(lwip_comm_mem_malloc())return 1;        //内存申请失败
        if(DM9000_Init())return 2;                //初始化DM9000AEP
        lwip_init();                                                //初始化LWIP内核
        lwip_comm_default_ip_set(&lwipdev);        //设置默认IP等信息

#if LWIP_DHCP                //使用动态IP
        ipaddr.addr = 0;
        netmask.addr = 0;
        gw.addr = 0;
#else                                //使用静态IP
        IP4_ADDR(&ipaddr,lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);
        IP4_ADDR(&netmask,lwipdev.netmask[0],lwipdev.netmask[1] ,lwipdev.netmask[2],lwipdev.netmask[3]);
        IP4_ADDR(&gw,lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);
        printf("网卡en的MAC地址为:................%d.%d.%d.%d.%d.%d\r\n",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);
        printf("静态IP地址........................%d.%d.%d.%d\r\n",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);
        printf("子网掩码..........................%d.%d.%d.%d\r\n",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);
        printf("默认网关..........................%d.%d.%d.%d\r\n",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);
#endif
        Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,eernetif_init,eernet_input);//向网卡列表中添加一个网口
       
#if LWIP_DHCP                        //如果使用DHCP的话
        lwipdev.dhcpstatus=0;        //DHCP标记为0
        dhcp_start(&lwip_netif);        //开启DHCP服务
#endif
       
        if(Netif_Init_Flag==NULL)return 3;//网卡添加失败
        else//网口添加成功后,设置netif为默认值,并且打开netif网口
        {
                netif_set_default(&lwip_netif); //设置netif为默认网口
                netif_set_up(&lwip_netif);                //打开netif网口
        }
        return 0;//操作OK.
}   [/mw_shl_code]

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

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
 楼主| 发表于 2017-12-13 17:17:29 | 显示全部楼层
程序都没改动,偶尔能成功(初始化 等等 服务器都能使用),大多数情况下都卡在这儿了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-14 00:56:56 | 显示全部楼层
是我们的板子么?
回复

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
 楼主| 发表于 2017-12-14 09:29:17 | 显示全部楼层

照着你们的板子又重画的一个板子,接线都一样
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-15 01:32:14 | 显示全部楼层
余一水 发表于 2017-12-14 09:29
照着你们的板子又重画的一个板子,接线都一样

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

使用道具 举报

5

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-4-18
在线时间
24 小时
发表于 2018-4-24 10:29:59 | 显示全部楼层
余一水 发表于 2017-12-13 17:17
程序都没改动,偶尔能成功(初始化 等等 服务器都能使用),大多数情况下都卡在这儿了

我的也是,跑不下去,请问您是怎么解决的?
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2018-4-24 10:50:40 | 显示全部楼层
既然是参考的原子的板子,原子的例程没有问题,那你就查下是不是硬件的问题
回复

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
 楼主| 发表于 2018-4-24 11:16:38 | 显示全部楼层
Zcf5252057 发表于 2018-4-24 10:29
我的也是,跑不下去,请问您是怎么解决的?

怕是pcb设计问题
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-8-13
在线时间
47 小时
发表于 2018-4-24 13:31:08 | 显示全部楼层
同样初始化错误   第一次能读到ID为DM9000 ID:0x2b2a2928  然后卡死到内存分配里面 好愁
回复

使用道具 举报

129

主题

397

帖子

0

精华

高级会员

Rank: 4

积分
831
金钱
831
注册时间
2017-7-12
在线时间
150 小时
 楼主| 发表于 2018-4-25 08:56:06 | 显示全部楼层
照海倚天 发表于 2018-4-24 13:31
同样初始化错误   第一次能读到ID为DM9000 ID:0x2b2a2928  然后卡死到内存分配里面 好愁

有啥解决办法
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-8-13
在线时间
47 小时
发表于 2018-5-3 14:14:31 | 显示全部楼层

我的原因是硬件复位的问题,设计时RST没有加下拉电阻,软件配置了下问题解决了
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-5-10
在线时间
9 小时
发表于 2018-8-25 18:01:37 | 显示全部楼层
请问 楼主解决问题了吗?
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-7-11
在线时间
6 小时
发表于 2020-7-16 10:48:31 | 显示全部楼层
照海倚天 发表于 2018-4-24 13:31
同样初始化错误   第一次能读到ID为DM9000 ID:0x2b2a2928  然后卡死到内存分配里面 好愁

ID应该是:0X90000A46,你这个DM9000 ID:0x2b2a2928应该是错的
回复

使用道具 举报

4

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2015-10-7
在线时间
32 小时
发表于 2020-8-3 10:49:56 | 显示全部楼层
楼主解决了吗?我的程序卡在了这条语句上
Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,eernetif_init,eernet_input);//向网卡列表中添加一个网口
回复

使用道具 举报

4

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2015-10-7
在线时间
32 小时
发表于 2020-8-3 10:50:49 | 显示全部楼层

原子哥,我想问一下程序卡到
Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,eernetif_init,eernet_input);//向网卡列表中添加一个网口
这条语句上是怎么回事啊。我的板子没有外部SDRAM和 NAND FLASH
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-8-5 00:37:39 | 显示全部楼层
伟好好学习 发表于 2020-8-3 10:50
原子哥,我想问一下程序卡到
Netif_Init_Flag=netif_add(&lwip_netif,&ipaddr,&netmask,&gw,NULL,eernet ...

跟踪进去,看怎么死的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2015-10-7
在线时间
32 小时
发表于 2020-8-22 09:48:01 | 显示全部楼层
本帖最后由 伟好好学习 于 2020-8-23 10:51 编辑
正点原子 发表于 2020-8-5 00:37
跟踪进去,看怎么死的

原子哥能给看看我这个是什么问题吗?STM32H750  LAN 8720 网络通讯出现问题
http://www.openedv.com/forum.php ... 14849&fromuid=41364
(出处: OpenEdv-开源电子网)
我跟踪进去发现程序卡到如图所示的地方,HAL_ETH_IsRxDataAvailable()这个函数,它的返回值不是1.

程序出现问题的地方

程序出现问题的地方
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-8-24 01:04:52 | 显示全部楼层
伟好好学习 发表于 2020-8-22 09:48
原子哥能给看看我这个是什么问题吗?STM32H750  LAN 8720 网络通讯出现问题
http://www.openedv.com/for ...

继续跟踪进去
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
180
金钱
180
注册时间
2021-3-8
在线时间
41 小时
发表于 2021-3-24 17:50:04 | 显示全部楼层

请问你们是怎么解决得,我最近移植STM32F107+DP83848卡在网卡初始化部分,追踪到网卡初始化PHY连接状态寄存器,连接的那bit一直为0。连接不上超时返回网卡初始化错误,后面的程序就执行不了了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 15:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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