OpenEdv-开源电子网

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

DM9000调试血泪总结

[复制链接]

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-2-10 23:06:09 | 显示全部楼层 |阅读模式
    因为需要使用DM9000,因此就有了这条血泪之路。话说那是一个月前,板子刚回来,感觉难度不大,因为此前搞过F4板子上的网络,对LWIP的移植和使用相对比较熟悉,所以花了3天的时间就把DM9000的驱动写好了,其实就是FSMC的配置,然后就是内部寄存器的读写,这个不难,驱动写完以后就是LWIP的移植,花了2个小时左右就移植成功了,成功以后开ping,ping成功,兴奋啊!但是在做webserver的时候发现网速很慢,而且很容易就会挂掉的!因此做了一次稳定性测试,就是连续的ping好几个小时,但是发现ping到0.5-2个小时的时候就会挂掉!!心碎啊,没办法,度娘,找各种DM9000在STM32上的程序,发现就那么几个,大多是就与RTT的DM9000例程修改的,就是在RTT例程的基础上修改一下IO口而已。而RTT对LWIP做了修改,而且移植方法和常用的不同,因此就排除了RTT的例程。但是将RTT的例程做了小修改,在我的板子上可以跑下去,这样可以确定板子硬件有没有问题!经过测试ping很稳定,时间基本小于1ms的。这说明什么?说明我的代码有问题啊,初步怀疑是接收和发送函数有问题,接着又是各种度娘啊,还是没有什么用啊,当时那个心情啊!本以为很容易的一件事结果拖了好几个星期了!!心急啊,但是又有什么办法啊,面对庞大的UCOSII和LWIP协议栈,顿时慌了手脚啊,当时感觉那个无助啊,就像被抛弃到了一个荒岛一样!前两天再看其他参考例程的时候突然灵光一现,发现虽然其他代码都使用了DM9000的中断,但是却没有一个在DM9000的中断中接收数据,而是在中断中发送一个信号量(参考的代码都是带系统的),其他的任务接收该信号量,做任务同步,数据的接收在专门的接收任务中完成!!而我的数据接收是直接放在了DM9000的中断服务函数中,在进入中断的时候是要关闭中断的,这样有新的数据来时就会塞进MD9000的RX SRAM中,很容易导致overflow!接着就是死掉!昨天把数据的接收放到了一个任务中,中断里面也只是发送一个信号量,这样关中断时间就大大减小了,经过测试,ping好几个小时都没有挂掉,ping的时间基本也小于等于1ms。至此,找到了这个困扰了我一个月的问题所在,12号放假,终于赶到放假之前搞定了这个问题。项目也被拖了好几周,导致的严重后果就是EMWIN的教程严重滞后于原计划,看来只能放假回家加把劲了。唉,说多了都是泪啊,过去一个月那过的叫一个黑暗啊,有时候都怀疑自己的智商适不适合干这一行。
    写下一点小的调试经历,向那些因为一个小问题而奋战良久的程序猿致敬,因为选择了这条路,爬也要爬下去!
开往春天的手扶拖拉机
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-2-10 23:40:41 | 显示全部楼层
任何人的成长都是要经过各种坎的,我也遇到过半个月都搞不定的bug。这是工程师成长的必经之路,所以不要灰心,关键是要做到吃一堑长一智。
这也就是经验的价值,等你遇到的坎多了,自然就会有自己的 一套方法去分析问题,继而解决问题,也就是所谓的久病成医。
所以,好好加油吧,总结教训,增长经验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 2 反对 0

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-10-13
在线时间
0 小时
发表于 2016-10-13 14:17:56 | 显示全部楼层
楼主,其实这个事情,可以联系**,让原厂提供技术支持的,原厂工程师对自己的产品特别了解,也能节约你们的时间。,好吧,我在davicom的**上班,经我手的搞不定的案子差不多给原厂工程师,很快就搞定了,毕竟术业有专攻。                                    
    因为选择了这条路,爬也要爬下去!
楼主这句话简直大爱
回复 支持 2 反对 0

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11535
金钱
11535
注册时间
2014-4-1
在线时间
1313 小时
发表于 2015-2-10 23:09:22 | 显示全部楼层
呵呵,惊险小说似的。
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2015-2-10 23:15:25 | 显示全部楼层
回复【2楼】xuande:
--------------------------------
唉,有过之二无不及啊,不说了
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

28

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2014-10-9
在线时间
6 小时
发表于 2015-2-10 23:34:28 | 显示全部楼层
“ 向那些因为一个小问题而奋战良久的程序猿致敬,因为选择了这条路,爬也要爬下去”
致敬!!!
拿什么让你自己信服 自己
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-2-10 23:41:33 | 显示全部楼层
经验这东西,花钱都买不到,只能自己多去经历,多去总结,这是最宝贵的财富。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
发表于 2015-3-6 14:35:52 | 显示全部楼层
只要坚持调试,一定可以找到问题的


可惜的是
我的lwip断断续续调了2月了,裸机下ping还不是很稳定,有时几分钟就ping反应慢了,有时10多小时才ping的慢了

ping变慢后,系统没有死机,还可以ping通,就是时间变得很长,如3秒
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2015-3-6 15:10:32 | 显示全部楼层
回复【7楼】天山狐狸:
---------------------------------
额,你用的什么方案啊?
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

26

主题

186

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2014-5-30
在线时间
93 小时
发表于 2015-3-23 12:36:34 | 显示全部楼层
回复【8楼】zuozhongkai:
---------------------------------
lwip 1.4.1 裸机 lpc1778 dp73831 RMII口
回复 支持 反对

使用道具 举报

1

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-11-26
在线时间
25 小时
发表于 2015-12-2 19:14:07 | 显示全部楼层
回复【9楼】天山狐狸:
---------------------------------
有程序  可否给我看看呢
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-11-26
在线时间
0 小时
发表于 2015-12-16 20:18:27 | 显示全部楼层
楼主,想想你请教有没有使用FPGA驱动DM9000A的经历呢?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2015-12-16 20:37:57 | 显示全部楼层
回复【11楼】Alhpa:
---------------------------------
没用过FPGA
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-11-26
在线时间
0 小时
发表于 2015-12-19 11:58:09 | 显示全部楼层
回复【12楼】zuozhongkai:
---------------------------------
请问楼主是用什么驱动的呢?可不可以指导一下?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2015-12-19 12:12:15 | 显示全部楼层
回复【13楼】Alhpa:
---------------------------------
我用的STM32F103驱动,直接论坛下载例程。http://www.openedv.com/posts/list/43643.htm,下载STM32F1 战舰V3的LWIP例程
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-9-10
在线时间
0 小时
发表于 2015-12-19 12:54:47 | 显示全部楼层
LWIP历程  战舰的参开价值还是很高的   楼主的精神值得肯定
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-6-21
在线时间
12 小时
发表于 2017-8-13 09:28:00 | 显示全部楼层
你好,最近在STM32F407里移植DM9000,参考代码是战舰V3,现在可以识别DM9000 ID号,但是,接受一直报错,提示“dm9000 rx: rx error, stop device”,一开始接受的rxbyte一直大于1,怎么解决,给点意见,谢谢
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2017-6-21
在线时间
12 小时
发表于 2017-8-13 12:46:41 | 显示全部楼层
求助!
回复 支持 反对

使用道具 举报

12

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2016-9-2
在线时间
42 小时
发表于 2017-9-13 10:37:34 | 显示全部楼层
dxjabc888 发表于 2017-8-13 09:28
你好,最近在STM32F407里移植DM9000,参考代码是战舰V3,现在可以识别DM9000 ID号,但是,接受一直报错,提 ...

哥们,你的问题解决了吗?
回复 支持 反对

使用道具 举报

7

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2015-10-21
在线时间
52 小时
发表于 2017-9-28 12:51:39 | 显示全部楼层
经验就是看你填平了几个坑
回复 支持 反对

使用道具 举报

84

主题

557

帖子

0

精华

高级会员

Rank: 4

积分
799
金钱
799
注册时间
2014-9-30
在线时间
136 小时
发表于 2017-9-28 13:06:46 | 显示全部楼层
对的,这非常 关键 +【昨天把数据的接收放到了一个任务中,中断里面也只是发送一个信号量,】——中断里面要务必简单。
回复 支持 反对

使用道具 举报

1

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
592
金钱
592
注册时间
2017-6-15
在线时间
75 小时
发表于 2018-8-23 15:03:48 | 显示全部楼层
学习中
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2018-11-24
在线时间
1 小时
发表于 2018-12-19 11:36:29 | 显示全部楼层
dm9000初始化不成功,返回值不等于零。第一次初始化好像是检验DM9000 的ID号不正确。请问那个ID号是怎么来的。为什么和一个固定的数比较呢?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2018-12-19 12:18:02 | 显示全部楼层
GZDX 发表于 2018-12-19 11:36
dm9000初始化不成功,返回值不等于零。第一次初始化好像是检验DM9000 的ID号不正确。请问那个ID号是怎么来 ...

ID号就是DM9000的ID,DM9000有个ID寄存器保存ID的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2014-9-13
在线时间
11 小时
发表于 2019-2-26 11:01:57 | 显示全部楼层
能把您的驱动给我看一下吗
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6458
金钱
6458
注册时间
2018-6-27
在线时间
546 小时
发表于 2019-8-20 13:03:05 | 显示全部楼层
学习学习,学习学习。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2020-1-19
在线时间
4 小时
发表于 2020-3-11 22:29:37 | 显示全部楼层
为坚持而致敬
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 08:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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