OpenEdv-开源电子网

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

stm32f407 rtthread DM9000a lwip2.0.2 ping不通

[复制链接]

2

主题

2

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2018-3-22
在线时间
4 小时
发表于 2018-3-22 17:25:32 | 显示全部楼层 |阅读模式


救助大佬,这是个情况是我的lwip 没初始化好,还是我的phy没初始化好。

这是启动部分,
```
void rt_init_thread_entry(void* parameter)
{
    /* GDB STUB */
#ifdef RT_USING_GDB
    gdb_set_device("uart6");
    gdb_start();
#endif

/* LwIP Initialization */
#ifdef RT_USING_LWIP
#include <lwip/sys.h>
#include "ethernetif.h"
//#include "stm32f4xx_eth.h"
#include "dm9000a.h"

    extern void lwip_sys_init(void);

    rt_hw_dm9000_init();

    /* init lwip system */
    lwip_sys_init();
    rt_kprintf("TCP/IP initialized!\n");

#endif

#ifdef RT_USING_FINSH
    /* init finsh */
    finsh_system_init();
#endif
}


这是Lwip 的初始化部分
```
/**
* LwIP system initialization
*/
extern int eth_system_device_init_private(void);
int lwip_system_init(void)
{
    rt_err_t rc;
    struct rt_semaphore done_sem;
   
    eth_system_device_init_private();

    /* set default netif to NULL */
    netif_default = RT_NULL;

    rc = rt_sem_init(&done_sem, "done", 0, RT_IPC_FLAG_FIFO);

    if (rc != RT_EOK)
    {
        LWIP_ASSERT("Failed to create semaphore", 0);

        return -1;
    }

    tcpip_init(tcpip_init_done_callback, (void *)&done_sem);

    /* waiting for initialization done */
    if (rt_sem_take(&done_sem, RT_WAITING_FOREVER) != RT_EOK)
    {
        rt_sem_detach(&done_sem);

        return -1;
    }
    rt_sem_detach(&done_sem);

    /* set default ip address */
#if !LWIP_DHCP
    if (netif_default != RT_NULL)
    {
        struct ip4_addr ipaddr, netmask, gw;

        ipaddr.addr = inet_addr(RT_LWIP_IPADDR);
        gw.addr = inet_addr(RT_LWIP_GWADDR);
        netmask.addr = inet_addr(RT_LWIP_MSKADDR);

        netifapi_netif_set_addr(netif_default, &ipaddr, &netmask, &gw);
        
    }
#endif
    rt_kprintf("lwIP-%d.%d.%d initialized!\n", LWIP_VERSION_MAJOR, LWIP_VERSION_MINOR, LWIP_VERSION_REVISION);

    return 0;
}



rt_hw_dm9000_init();
PHY用的是DM9000A,
参考的103的驱动改装的407版本,改了引脚和时钟,还有关于FSMC的配置,能读到芯片ID


有大佬遇到类似的问题吗?




1521709895(1).jpg(45.56 KB, 下载次数: 0)




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

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4356
金钱
4356
注册时间
2017-5-30
在线时间
578 小时
发表于 2018-3-27 08:20:52 | 显示全部楼层
你在用ENV工具生成工程的时候是不是选择的LWIP2.0.1,你尝试一下使用LWIP1.4.1就好了,如果你确定要使用2.0.1你手动LINK_UP一下也可以的
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-1-3
在线时间
7 小时
发表于 2018-5-4 23:54:30 | 显示全部楼层
whj467467274672 发表于 2018-3-27 08:20
你在用ENV工具生成工程的时候是不是选择的LWIP2.0.1,你尝试一下使用LWIP1.4.1就好了,如果你确定要使用2.0 ...

手动LINK_UP??
能具体说下么。。。新手求指教
回复 支持 反对

使用道具 举报

34

主题

322

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1835
金钱
1835
注册时间
2014-12-4
在线时间
717 小时
发表于 2019-1-7 21:25:50 | 显示全部楼层
楼主问题解决了吗 ??  最近用407驱动DM9000 发现可以读取DM9000的ID号   但是PING不通,  串口一直发送printf("dm9000 rx: rx error, stop device\r\n");
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7462
金钱
7462
注册时间
2015-1-15
在线时间
1367 小时
发表于 2019-1-10 18:40:14 | 显示全部楼层
loudianxin 发表于 2019-1-7 21:25
楼主问题解决了吗 ??  最近用407驱动DM9000 发现可以读取DM9000的ID号   但是PING不通,  串口一直发送pr ...

推荐你用cyclonetcp
一分耕耘一分收获。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-12-21
在线时间
7 小时
发表于 2020-4-12 19:22:21 | 显示全部楼层
有大佬解决了这个问题吗?求分享方法
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 16:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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