新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2018-3-22
- 在线时间
- 4 小时
|
救助大佬,这是个情况是我的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
有大佬遇到类似的问题吗?
|
|