硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5783|回复: 33
收起左侧

[以太网] 分享 DM9000的LWIP移植 基于安福莱V7开发板

  [复制链接]

32

主题

262

回帖

363

积分

高级会员

积分
363
发表于 2019-5-15 11:50:47 | 显示全部楼层 |阅读模式
1.移植篇
上一贴移植好了DM9162的程序
V7板子 DM9162 LWIP移植,于是兴致高高的搞DM9000
接下来就是驱动的移植,大佬有现成的驱动,移植之路就不多说了,可以参考我移植的代码

2.调试篇 (太惨了)
        在这个过程中遇到了一个问题,移植完后ping不通,当时感觉应该的哪有一次成功的,
所以继续加油,先检查驱动配置,没问题,于是使用串口打印大法
2.1接收打印
111.png
添加打印后,发现有数据接收,那么和DM9162的数据作对比ping接收的数据
DM9162:
FF FF FF FF FF FF 02 00 00 80 F5 B0 08 06 00 01 08 00 06 04 00 01 02 00 00 80 F5 B0 C0 A8 01 97 00 00 00 00 00 00 C0 A8 01 97
DM9000:
FF FF FF FF FF FF 02 00 00 7F 80 F5 08 06 00 01 08 00 06 04 00 01 02 00 00 7F 80 F5 C0 A8 01 98 00 00 00 00 00 00 C0 A8 01 98

发现接收数据应该是没有问题的,那就可能是发送数据有问题

2.2发送数据对比
222.png
DM9162:
FF FF FF FF FF FF 02 00 00 80 F5 B0 08 06 00 01 08 00 06 04 00 01 02 00 00 80 F5 B0 C0 A8 01 97 00 00 00 00 00 00 C0 A8 01 C8
60 EB 69 69 D3 C8 02 00 00 80 F5 B0 08 00 45 00 00 3C 03 4B 00 00 FF 01 00 00 C0 A8 01 97 C0 A8 01 C8 00 00 54 A1 00 01 00 BA 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69

DM9000:


60 EB 69 69 D3 C8 02 00 00 7F 80 F5 08 06 00 01 08 00 06 04 00 02 02 00 00 7F 80 F5 C0 A8 01 98 60 EB 69 69 D3 C8 C0 A8 01 C8
60 EB 69 69 D3 C8 02 00 00 7F 80 F5 08 00 45 00 00 3C 0D 11 00 00 FF 01 00 00 C0 A8 01 98 C0 A8 01 C8 00 00 54 89 00 01 00 D2 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69

发现好像也没有问题,这里我就考虑包发出去了没有,如果都发不出去还搞个毛线

2.3抓包
333.png
数据上来了,这下好了,发送和接收的驱动都没问题,那么就考虑下一步,应该是那个地方有问题,用DM9162对比
DM9162:
444.png
DM9000:
555.png
        那问题就应该出在这里了,header chechsum 有问题,但是对比上面2.2发送数据包发现
FF 01 00 00 都是这样发送的,这下又头大了。我拿出一个原子103的板子实验对比,发现他的
数据有校验的我的没有,胡搞乱搞搞了两天,啥都没有结果。

2.4 协议对比
        上网搜各种帖子,突然想到校验问题,应该是DM9000的问题,仔细思索后想到DM9000只是
透传发送的数据,DM9162是通过ETH控制器发送的数据。这里应该想到应该是LWIP协议的问题,
于是和1.41的协议作对比
搜索 header chechsum 的使用
666.png
777.png
      发现这里有问题了,有个宏没有开,赶快在lwipopts.h文件中修改选项,
999.png
下载测试发现已经OK了,(还是自己问题,刚接触对协议栈不熟悉)

在这里又做了几个测试,
1:DM9162与DM9000  一起使用DHCP 热插拔
888.png
1212.png 这样两个网口都可以在线了

直接上代码
这里要说一下,DM9000 硬件是不带以太网的 header checksum 的所以需要LWIP 开启相应功能


Lwip.zip

32.21 KB, 下载次数: 278

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2019-5-15 11:56:57 | 显示全部楼层
非常感谢楼主分享
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-5-15 12:02:30 | 显示全部楼层
完整例程,等到下一周我把一些基本的netcon  和  socket 的服务器和客户端例程!!!
http就不搞了不会搞!!
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2019-5-15 15:26:14 | 显示全部楼层
在水一方 发表于 2019-5-15 12:02
完整例程,等到下一周我把一些基本的netcon  和  socket 的服务器和客户端例程!!!
http就不搞了不会搞 ...

牛逼呀,很深入的分析了一把,
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-6-6 14:48:32 | 显示全部楼层
求个简易的429+lwip驱动dm9000的工程,现在ping不同,不知道是lwip移植配置的问题,还是9000接收发送的问题(ID读的没问题)
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-6-6 20:38:38 | 显示全部楼层
zhengwending 发表于 2019-6-6 14:48
求个简易的429+lwip驱动dm9000的工程,现在ping不同,不知道是lwip移植配置的问题,还是9000接收发送的问题 ...

东西一样的  自己试试吧
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-6-11 14:42:37 | 显示全部楼层
在水一方 发表于 2019-6-6 20:38
东西一样的  自己试试吧

好吧 还是谢谢             我学着你程序的样子 调用pbuf_alloced_custom 出错 不知为什么?
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-6-11 15:17:41 | 显示全部楼层
zhengwending 发表于 2019-6-11 14:42
好吧 还是谢谢             我学着你程序的样子 调用pbuf_alloced_custom 出错 不知为什么?

用官方的  例程试试
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2019-6-30 18:25:21 | 显示全部楼层
有没有用过uffs?
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2019-7-1 08:54:10 | 显示全部楼层
为什么都不用83848,貌似这颗芯片性价比高很多
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2019-7-1 08:56:49 | 显示全部楼层
jcx0324 发表于 2019-7-1 08:54
为什么都不用83848,貌似这颗芯片性价比高很多

在开发板上见到的少,但是项目中用83848的还是很多的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2019-7-1 09:03:29 | 显示全部楼层
jcx0324 发表于 2019-7-1 08:54
为什么都不用83848,貌似这颗芯片性价比高很多

83848的型号很多的,不同型号价格差距很大

低端的性价比不高

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106826
QQ
发表于 2019-7-1 09:04:22 | 显示全部楼层
【PHY芯片选型】TI,Micrel,Microsemi,NXP,RealTek,Marvell和Davicom
http://www.armbbs.cn/forum.php?m ... 9894&fromuid=58
(出处: 安富莱电子论坛)
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2019-7-1 11:01:23 | 显示全部楼层
王海靖 发表于 2019-7-1 08:56
在开发板上见到的少,但是项目中用83848的还是很多的

实际项目中是TI的用的很多
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 11:01:36 | 显示全部楼层
eric2013 发表于 2019-5-15 11:56
非常感谢楼主分享

还是得咨询麻烦版主,就是dm9000 调试接收到得arp数据包广播是6个0xff开头,但是我读到得就是4个0xff开头,其他数据都对,还没分析出来毛病,想请教版主
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 11:03:46 | 显示全部楼层
在水一方 发表于 2019-6-11 15:17
用官方的  例程试试

也请教请教楼主,9000C接收到得ARP数据包  我用wireshark看发出得数据包是6个oxff开头,但是9000读出来得是4个0xff开头,后面跟得数据都对,就是少了两个0ff,不解。
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-7-5 12:22:48 | 显示全部楼层
zhengwending 发表于 2019-7-5 11:03
也请教请教楼主,9000C接收到得ARP数据包  我用wireshark看发出得数据包是6个oxff开头,但是9000读出来得 ...

用我的例程试试
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 12:39:36 | 显示全部楼层
也是这样,我是下载得你得压缩包,然后修改得。仿真发现包头少了两个0xff
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 12:46:14 | 显示全部楼层

C:\Users\admin\Desktop\123.png
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-7-5 13:30:22 | 显示全部楼层
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 13:48:27 | 显示全部楼层

网上买得dm9000得板子,用得429discover主板
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 13:54:56 | 显示全部楼层

我电脑ping的,arp包,数据包开头为什么其他数据都对,就开头两个0xff接收没有呢?接收的数据:01 40 00 40 0xff 0xff 0xff 0xff e0 d5 5e e0............ 开头应该是6个0xff才对,但是数据包里读出来就4个0xff
回复

使用道具 举报

36

主题

249

回帖

357

积分

高级会员

积分
357
发表于 2019-7-5 14:07:01 | 显示全部楼层

两个dm9000的板子,现象都一样,感觉跟配置有关,但是我初始化配置那块我又看了看,跟你的那个例程基本无区别。
回复

使用道具 举报

32

主题

262

回帖

363

积分

高级会员

积分
363
 楼主| 发表于 2019-7-5 19:47:10 | 显示全部楼层
zhengwending 发表于 2019-7-5 14:07
两个dm9000的板子,现象都一样,感觉跟配置有关,但是我初始化配置那块我又看了看,跟你的那个例程基本无 ...

这个我也不太清楚,这个和fmc配置,还有dm9000驱动有关
回复

使用道具 举报

0

主题

23

回帖

23

积分

新手上路

积分
23
发表于 2020-5-21 12:02:35 | 显示全部楼层
lz,DM9000的驱动是依据什么资料文档写的?
回复

使用道具 举报

0

主题

23

回帖

23

积分

新手上路

积分
23
发表于 2020-5-21 12:18:51 | 显示全部楼层
还有FSMC读写时序为什么要这样设置?
        SRAM_Timing.AddressSetupTime       = 4;
        SRAM_Timing.AddressHoldTime        = 1;
        SRAM_Timing.DataSetupTime          = 2;
        SRAM_Timing.BusTurnAroundDuration  = 3;               
        SRAM_Timing.CLKDivision            = 2;
        SRAM_Timing.DataLatency            = 2;
        SRAM_Timing.AccessMode             = FMC_ACCESS_MODE_A;
设置的模式不是指与AddressSetupTime和DataSetupTime有关吗?其他几个参数的设置有什么具体参照吗?求指教
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-5-26 09:11:04 | 显示全部楼层
遇到了和楼主一样的问题,多谢楼主的分析和经验,对调试LWIP和DM9000的参考帮助很大;顶楼主
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2020-5-26 09:23:29 | 显示全部楼层
Jacob_xsbn 发表于 2020-5-21 12:18
还有FSMC读写时序为什么要这样设置?
        SRAM_Timing.AddressSetupTime       = 4;
        SRAM_Timing.AddressHo ...

数值设的大,ping回应的时间就会加长,楼主可以试试;实际中猜测估计和布线有关吧
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2021-9-14 11:45:07 | 显示全部楼层
楼主使用了RTOS吗?freertos?
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2021-9-14 11:47:26 | 显示全部楼层
请问楼主使用了rtos了吗?是freertos吗
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-4-13 15:33:06 | 显示全部楼层
大神,我想问问DM9000的基地址是怎么设置的,是根据CMD和CS决定吗,CS接到FMC_NE3,CMD接到FMC_A0
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-11-10 12:34:14 | 显示全部楼层
在水一方 发表于 2019-5-15 12:02
完整例程,等到下一周我把一些基本的netcon  和  socket 的服务器和客户端例程!!!
http就不搞了不会搞 ...

楼主能把完整的例程发一个吗?或者发一个到我邮箱391280446@qq.com
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-6 06:22 , Processed in 0.285630 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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