Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DM9000
求助:stm32f103+RT-Thread+dm9000
发布于 2014-06-19 13:18:16 浏览:4127
订阅该版
刚入手dm9000 在初始化的时候设备找不到 ``` | / - RT - Thread Operating System / | 0.4.0 build Jun 18 2014 2006 - 2009 Copyright by rt-thread team To initialize device:e0 failed. The error code is -1 The Software Version is V1.0.0! TCP/IP initialized! System is Run! ``` 相关代码如下: ```c rt_err_t rt_device_init_all() { struct rt_device* device; struct rt_list_node* node; struct rt_object_information *information; register rt_err_t result; extern struct rt_object_information rt_object_container[]; information = &rt_object_container[RT_Object_Class_Device]; /* for each device */ for (node = information->object_list.next; node != &(information->object_list); node = node->next) { rt_err_t (*init)(rt_device_t dev); device = (struct rt_device*)rt_list_entry(node, struct rt_object, list); /* get device init handler */ init = device->init; if (init != RT_NULL && !(device->flag & RT_DEVICE_FLAG_ACTIVATED)) { result = init(device); if (result != RT_EOK) { rt_kprintf("To initialize device:%s failed. The error code is %d ", device->parent.name, result); } else { device->flag |= RT_DEVICE_FLAG_ACTIVATED; } } } return RT_EOK; } ``` ```c rt_err_t eth_device_init(struct eth_device* dev, const char* name) { struct netif* netif; netif = (struct netif*) rt_malloc (sizeof(struct netif)); if (netif == RT_NULL) { rt_kprintf("malloc netif failed "); return -RT_ERROR; } rt_memset(netif, 0, sizeof(struct netif)); /* set netif */ dev->netif = netif; /* register to rt-thread device manager */ rt_device_register(&(dev->parent), name, RT_DEVICE_FLAG_RDWR); dev->parent.type = RT_Device_Class_NetIf; rt_sem_init(&(dev->tx_ack), name, 0, RT_IPC_FLAG_FIFO); /* set name */ netif->name[0] = name[0]; netif->name[1] = name[1]; /* set hw address to 6 */ netif->hwaddr_len = 6; /* maximum transfer unit */ netif->mtu = ETHERNET_MTU; /* broadcast capability */ netif->flags = NETIF_FLAG_BROADCAST; /* get hardware address */ rt_device_control(&(dev->parent), NIOCTL_GADDR, netif->hwaddr); /* set output */ netif->output = ethernetif_output; netif->linkoutput = ethernetif_linkoutput; /* add netif to lwip */ if (netif_add(netif, IP_ADDR_ANY, IP_ADDR_BROADCAST, IP_ADDR_ANY, dev, eth_init, eth_input) == RT_NULL) { /* failed, unregister device and free netif */ rt_device_unregister(&(dev->parent)); rt_free(netif); return -RT_ERROR; } netif_set_default(netif); return RT_EOK; } ``` ```c struct netif * netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, struct ip_addr *gw, void *state, err_t (* init)(struct netif *netif), err_t (* input)(struct pbuf *p, struct netif *netif)) { static u8_t netifnum = 0; /* reset new interface configuration state */ netif->ip_addr.addr = 0; netif->netmask.addr = 0; netif->gw.addr = 0; /* netif->flags = 0; */ #if LWIP_DHCP /* netif not under DHCP control by default */ netif->dhcp = NULL; #endif /* LWIP_DHCP */ #if LWIP_AUTOIP /* netif not under AutoIP control by default */ netif->autoip = NULL; #endif /* LWIP_AUTOIP */ #if LWIP_NETIF_STATUS_CALLBACK netif->status_callback = NULL; #endif /* LWIP_NETIF_STATUS_CALLBACK */ #if LWIP_NETIF_LINK_CALLBACK netif->link_callback = NULL; #endif /* LWIP_NETIF_LINK_CALLBACK */ #if LWIP_IGMP netif->igmp_mac_filter = NULL; #endif /* LWIP_IGMP */ #if ENABLE_LOOPBACK netif->loop_first = NULL; netif->loop_last = NULL; #endif /* ENABLE_LOOPBACK */ /* remember netif specific state information data */ netif->state = state; netif->num = netifnum++; netif->input = input; #if LWIP_NETIF_HWADDRHINT netif->addr_hint = NULL; #endif /* LWIP_NETIF_HWADDRHINT*/ #if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS netif->loop_cnt_current = 0; #endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ netif_set_addr(netif, ipaddr, netmask, gw); /* call user specified initialization function for netif */ if (init(netif) != ERR_OK) { return NULL; } /* add this netif to the list */ netif->next = netif_list; netif_list = netif; snmp_inc_iflist(); #if LWIP_IGMP /* start IGMP processing */ if (netif->flags & NETIF_FLAG_IGMP) { igmp_start( netif); } #endif /* LWIP_IGMP */ LWIP_DEBUGF(NETIF_DEBUG, ("netif: added interface %c%c IP addr ", netif->name[0], netif->name[1])); ip_addr_debug_print(NETIF_DEBUG, ipaddr); LWIP_DEBUGF(NETIF_DEBUG, (" netmask ")); ip_addr_debug_print(NETIF_DEBUG, netmask); LWIP_DEBUGF(NETIF_DEBUG, (" gw ")); ip_addr_debug_print(NETIF_DEBUG, gw); LWIP_DEBUGF(NETIF_DEBUG, (" ")); return netif; } ``` 好晕啊~ 望大神指点!
查看更多
2
个回答
默认排序
按发布时间排序
jiezhi320
2014-06-20
这家伙很懒,什么也没写!
两种可能: 1、硬件上ok,但相关io配置不对 2、配置都ok,但dm9000a芯片焊接不良 从这两个方向查。
撰写答案
登录
注册新账号
关注者
0
被浏览
4.1k
关于作者
艸
这家伙很懒,什么也没写!
提问
2
回答
0
被采纳
0
关注TA
发私信
相关问题
1
DM9000网卡驱动,ping不通
2
DM9000+LWIP+rt-thread-4.0.2网络ping不通
3
求助:stm32f407vg dm9000 网络不通
4
移植RADIO 到自己的板子 DM9000A ping不通
5
使用FSMC驱动DM9000
6
dm9000a rx error 问题
7
基于HAL库,移植DM9000A驱动。
8
dm9000在rtthread的驱动(亲测可用)
9
2440 dm9000c移植问题
10
原子战舰开发板移植DM9000驱动到BSP中
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部