4922|6

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

8962以太网学习笔记 [复制链接]

因为单位封了博客....所以只能在论坛记录每天的工作内容了...初学水平大家见谅...主要目的是为了督促自己

 

使用LM3S8962 开发板 学习以太网的相关开发

 

8962集成了mac 和 phy 貌似没有协议栈, 现在还没看懂例程的lwip 所以索性先随便发数据吧.

 

unsigned char nMACAddr[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB};

 

先初始化以太网控制器

SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

 

//使能以太网时钟
 SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);
 SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);

 

// Enable Port F for Ethernet LEDs.
 //  LED0        Bit 3   Output
 //  LED1        Bit 2   Output
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
 GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_DIR_MODE_HW);
 GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_2 | GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);

 

// Initialize the Ethernet controller for operation   初始化以太网控制器
 nEthClk = SysCtlClockGet();
 EthernetInitExpClk(ETH_BASE, nEthClk);

 

// 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 | ETH_CFG_TX_CRCEN));

 

HWREG(ETH_BASE + MAC_O_THR) = 0x0;

 //MAC地址设置
 EthernetMACAddrSet(ETH_BASE,nMACAddr);

 //使能以太网
 EthernetEnable(ETH_BASE);

 

 while(1)  //循环发送
    {
       while(HWREG(ETH_BASE + MAC_O_TR) & MAC_TR_NEWTX)
       {
       }

      // Copy data to FIFO
       pS = (unsigned long*)nSendData;
       for ( i = 0; i < sizeof(nSendData) / 4; i++ )
           HWREG(ETH_BASE + MAC_O_DATA) = *pS++;
       RIT128x96x4DataDisplay(++count,66,36, 15,5) ;   //计数
    }

 

程序不是大问题,  问题在于到底要发什么,怎么发,以什么协议发

 

插入一个话题, 先说一下接收用的软件, 我用的sniffer  用于接收分析以太网的数据

 

继续

我准备先发以太网帧, 以太网帧结构就不重复了, IEEE 802.3  我的网卡的mac被我改成 12 34 56 78 90 00   lm3s8962 的mac被我设为12 34 56 78 90 ab

 

发送的数据如下

                //0x1c 0x04 

/*0000*/   0x12,0x34,0X56,0X78,0X90,0X00, 0X12,0X34,0X56,0X78,0X90,0XAB, 0X00,0X32,0X00,0X00,
/*0010*/   0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
/*0020*/   0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,
/*0030*/   0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00

 

结果在sniffer上接收不到

又从网上寻找例程 ,发现 有一个例程在 发送的数据前加了2个字节 0x1c 0x04 

我同样加入 0x1c 0x04  后, 能接收到

 

0x1c 0x04  原来是代表后面数据的长度的 ,这样就成为了 LLC帧结构

 

继续坚持我的 以太网帧结构

将 sa 后面的 0x00 0x32 改为 0x08 0x00 (ip 帧头)    发送成功

 

今天到这里 ,明个继续

 

2010.7.15

 

继续试验自己封包 , 在80,00 后 封入一个ip包

0X45,0X00, 0x00,0x32,0x39,0x99,0x00,0x00, 0xff,0x11,   0xff,0xd5, (校验和)  0xc0,0xa8, 0x00,0x1d, (源ip)  0xc0,0xa8,0x00,0xde,(目的ip)

 

然后继续封一个udp的包

0x1f,0x40,0x17,0x70, 0x00,0x1e,0x00,0x00,  (udp包头,无校验)    0x01,0x02, 0x03,0x04,0x05,0x06,
 /*0030*/ 0x07,0x08,0x09,0x0a,0x0b,0x0c, 0x0d,0x0e,0x0f,0x10,0x11,0x12, 0x13,0x14,0x15,0x16  (数据位)

 

用sniffer 和周立功的 tcp/udp debug 都能接收到

 

恩,开始做协议栈吧, 天啊,赐我一个8962移植lwip的例子吧

 

[ 本帖最后由 bear2529 于 2010-7-15 08:50 编辑 ]

最新回复

学习了,   详情 回复 发表于 2010-8-4 18:38
 
点赞 关注

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 

回复 楼主 bear2529 的帖子

谢谢分享 在论坛发帖可以同步到博客 不知道对你有帮助否?
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

板凳
 
谢谢分享,发论坛也很好!!!
 
个人签名我的博客
 
 

回复

97

帖子

0

TA的资源

一粒金砂(中级)

4
 
谢谢分享;P
 
个人签名QQ:1211406057  
www.dianzi168.net内有案例高清大图
专业承接PCB LAYOUT 设计
 
 

回复

2641

帖子

0

TA的资源

五彩晶圆(中级)

5
 
不错,我们都是协议栈用惯了,底层还正没用过
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

6
 
能否上传一个sniffer软件,例程基本上看懂了,可以讨论啊
 
 
 

回复

640

帖子

0

TA的资源

五彩晶圆(初级)

7
 
学习了,
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表