- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
201410嵌入式系统体系结构与开发——网络接口研讨
数据发送 数据发送 在系统RAM中帧数据INDEX和DATA端口 将包数据写入DM9000的发送缓冲区中 上层ETH:调用函数 return dm9000_send(skb-data, skb-len) 本层函数 Dm9000_send(pbData, (UINT16T)dwLength) 将包数据写入到DM9000发送缓冲区 数据包长度写入DM9000TXPL中 命令开始发送数据,并在结束时请求标识 监测已发送完成标志 主要程序段 设置发送地址命令,地址自增 IOWRITE(dwEthernetIOBase, 0xf8); 将帧数据写入到DM9000发送缓冲区 tmplen = length ; for (i = 0; i tmplen; i++) IOWRITE(dwEthernetDataPort, ((UINT8T *)pbData)[i]); 数据帧长度写入DM9000TXPL中 WRITE_REG1(0xfd, (length 8) 0xff); WRITE_REG1(0xfc, length 0xff); 命令开始发送数据,并在结束时请求标识 WRITE_REG1(0x02, 1) 监测已发送完成标志 if (READ_REG1(0xfe) 2) { WRITE_REG1(0xfe, 2); break; } 客户发送WRQ上传文件,服务器处理过程 Tftpmain.c调用net_handle函数,判断是ETH_P_IP报文(也就是IP报文); 调用函数ip_rcv_packet(skb),分析IP报文; 判断是UDP报,调用udp_rcv_packet(skb)函数; 判断端口号=69, 调用tftp_rcv_packet(skb); 判断报文是WRQ,调用tftp_rcv_wrq(skb); 回复ACK报文,tftp_send_ack(tftp_hdr, 0) 向下层调用udp_send(skb, client_ip, TFTP, client_port) 继续向下调用ip_send(skb, ip, UDP) 继续向下调用eth_send(skb, dest_eth_addr, ETH_P_IP) 调用dm9000_send(skb-data, skb-len); 设备准备接收数据的缓冲区地址和状态 TftpPutBegin = 1;BUF, data_len = 0; 客户收到ACK,发送DATA数据报文,服务器处理过程 Tftpmain.c调用net_handle函数,判断是ETH_P_IP报文(也就是IP报文); 调用函数ip_rcv_packet(skb),分析IP报文; 判断是UDP报,调用udp_rcv_packet(skb)函数; 判断端口号=69, 调用tftp_rcv_packet(skb); 判断报文是DATA,调用tftp_rcv_DATA(skb); 接收一个块DATA,发送一个ACK 如果接收到的数据是少于512B,TftpLoadEnd = 1 返回到NetLoadFile函数,结束传输,打印结果 客户上传的是PING IP Tftpmain.c调用net_handle函数,判断是ETH_P_ARP类型报文; 调用arp_rcv_packet,解析MAC地址 发送ARP的请求报文,arp_send_rsp(arp_hdr) 等待服务器返回,判断是ETH_P_IP报文(也就是IP报文); 调用函数ip_rcv_packet(skb),分析ICMP报文; 是ICMP的8号报文, 调用icmp_rcv_echo(skb); 发送自己的IP,icmp_send_echo(skb) ETH帧接收 拆分 int eth_rcv(struct sk_buff *skb) { return DM9000DBG_GetFrame(skb-data, skb-len); } 以太网控制器DM9000 MAC控制器DM9000 主要性能 MAC控制器功能 DM9000A工作原理 芯片初始化 数据收发 DM9000A内部结构 DM9000A硬件接口 DM9000A软件设计 初始化 数据接收 数据发送 DM9000A概述 DM9000A是中国台湾DAVICOM公司推出的一款高速以太网接口芯片; 它可以很方便的实现与嵌入式CPU的接口,实现扩展以太网口的功能。 DM9000A的主要特性 支持8/16位数据总线; 适用于10Base-T和100Base-T; 10/100 M自适应,适应不同的网络速率要求; 内置16 KB的SRAM,用于收发缓冲,降低对主处理器的速度要求; 与IEEE 802.3u兼容
文档评论(0)