打印

网口怎么调试?

[复制链接]
10924|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xifengsong|  楼主 | 2011-10-30 18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
米其林r| | 2011-10-30 18:45 | 只看该作者
驱动层的验证  利用phy的loopback功能,  讲网线收发接起来

应用层的先ping     ping通了  利用wireshurk         

然后利用TCP UDP调试工具  进行上下位机的通信

使用特权

评论回复
板凳
xifengsong|  楼主 | 2011-10-31 09:45 | 只看该作者
我不懂啊?有没有程序,贴出来我看看啊?能验证硬件没问题就行了

使用特权

评论回复
地板
TI_MCU| | 2011-10-31 13:15 | 只看该作者
2楼的方法没错,下面是StellarisWare驱动库的示例代码,基本思路就是这样,能正确收到数据那应该就没什么问题了。需要自己把Loopback功能打开。Loopback功能在Ethernet PHY Management Register 0 – Control (MR0)这个寄存器里。


================================
示例代码
================================

unsigned char pucMACAddress[6];
unsigned char pucMyRxPacket[];
unsigned char pucMyTxPacket[];
unsigned long ulMyTxPacketLength;
//
// Initialize the Ethernet controller for operation
//
EthernetInitExpClk(ETH_BASE, SysCtlClockGet());
//
// Configure the Ethernet controller for normal operation
// Enable TX Duplex Mode
// Enable TX Padding
//
EthernetConfigSet(ETH_BASE, (ETH_CFG_TX_DPLXEN | ETH_CFG_TX_PADEN));
//
// Program the MAC Address (01-23-45-67-89-AB)
//
pucMACAddress[0] = 0x01;
pucMACAddress[1] = 0x23;
pucMACAddress[2] = 0x45;
pucMACAddress[3] = 0x67;
pucMACAddress[4] = 0x89;
pucMACAddress[5] = 0xAB;
EthernetMACAddrSet(ETH_BASE, pucMACAddress);
//
// Enable the Ethernet controller
//
EthernetEnable(ETH_BASE);
//
// Send a packet.
// (assume that the packet has been filled in appropriately elsewhere
// in the code).
//
EthernetPacketPut(ETH_BASE, pucMyTxPacket, ulMyTxPacketLength);
//
// Wait for a packet to come in.
//
EthernetPacketGet(ETH_BASE, pucMyRxPacket, sizeof(pucMyRxPacket));

使用特权

评论回复
5
xifengsong|  楼主 | 2011-10-31 14:42 | 只看该作者
那要怎么看到效果呢,我怎么知道packet发送出去了或是接收到了packet,还有为什么没有IP地址呢,我如果用网口调试助手的话就得知道发送端的IP地址啊?  
这个代码我也看到了,可我还是不懂得怎么调试看效果啊,各位用过的在细心点指导下吧

使用特权

评论回复
6
jiaxw| | 2011-10-31 16:51 | 只看该作者
这个确实有点困难

使用特权

评论回复
7
xifengsong|  楼主 | 2011-10-31 16:55 | 只看该作者
我没用过网口,所以什么都不懂啊。你们调试网口都是怎么调的呢?

使用特权

评论回复
8
永远的不知| | 2011-10-31 17:05 | 只看该作者
那你可以使用官方的ek-lm3s6965开发板的enet_lwip例程验证,将以太网口接到路由器上,用ie访问该ip地址,如果能打开该网页,就说明硬件是正常的。

使用特权

评论回复
9
xifengsong|  楼主 | 2011-10-31 18:01 | 只看该作者
是这样的啊?
没别的办法吗?

使用特权

评论回复
10
永远的不知| | 2011-10-31 19:41 | 只看该作者
9# xifengsong

这个方法有什么问题吗?

使用特权

评论回复
11
jiaxw| | 2011-10-31 21:31 | 只看该作者
ek-lm3s6965开发板的enet_lwip例程验证

使用特权

评论回复
12
TI_MCU| | 2011-11-1 09:47 | 只看该作者
5# xifengsong

回答下你5楼的问题,可能你有误解,以太网(OSI)模型有7层,MAC+PHY只是实现了物理层和数据链路层,也就是最底端的两层,而常用的TCP/IP协议在OSI模型第3层、4层。

简单说,要实现TCP/IP,也就是你说的IP地址还需要代码实现TCP/IP协议栈,TI有提供移植好的协议栈和示例,在StellarisWare软件包中

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
huangjin1987 + 1
13
xifengsong|  楼主 | 2011-11-1 12:06 | 只看该作者
谢谢12楼。我在试着将enet_lwip运行再接到路由上,但是那它的IP是多少呢?我打输入的网址是什么就可以看到网页呢?

使用特权

评论回复
14
TI_MCU| | 2011-11-1 13:47 | 只看该作者
enet_lwip这个例子用的DHCP,当获得IP后会在液晶屏上显示出来。如果是你自己的板子你要想办法把IP地址读出来然后再访问这个地址

使用特权

评论回复
15
xifengsong|  楼主 | 2011-11-2 09:42 | 只看该作者
我是自己的板子没有屏幕的。不过现在我已经把enet_lwip,enet_io,enet_ptpd三个程序跑起来了,起码能证明我的板子网口没问题了,现在想问一下enet_uip的程序怎么调试啊,uip是另一个协议栈吧?我要重新设置IP和MAC的话要怎么操作呢?还有这个工程的功能是什么?

使用特权

评论回复
16
TI_MCU| | 2011-11-2 09:56 | 只看该作者
UIP是另外一个协议栈。UIP我没用过,估计也是自动获得IP的,你可以试着用UART把IP传出来或者用仿真器看看

使用特权

评论回复
17
永远的不知| | 2011-11-2 17:02 | 只看该作者
14# TI_MCU

IP地址可以通过sw-lm3s-6852\tools\bin\finder.exe软件获得。

使用特权

评论回复
18
TI_MCU| | 2011-11-2 17:17 | 只看该作者
17# 永远的不知

啊  学习了!一直还在用调试器看...:lol

使用特权

评论回复
19
kakio| | 2011-11-3 07:05 | 只看该作者
很收益

使用特权

评论回复
20
xifengsong|  楼主 | 2011-11-3 08:23 | 只看该作者
别的网口程序我都用finder找到了IP地址,可是enet-ptpd我就找不到那个程序啊,我看了下,PTPD工程里好像没有加那个finder模块,我自己加了以后也没用,还是看不到。
还有如果我要向驱动库里讲的那样只用物理层来发送接收PACKET,那我应该怎么做呢?我怎样才能看到自己发送的数据包呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

77

帖子

1

粉丝