基于DM9000A的TCP通信设计.doc

上传人:精*** 文档编号:842803 上传时间:2023-09-08 格式:DOC 页数:49 大小:401.64KB
下载 相关 举报
基于DM9000A的TCP通信设计.doc_第1页
第1页 / 共49页
基于DM9000A的TCP通信设计.doc_第2页
第2页 / 共49页
基于DM9000A的TCP通信设计.doc_第3页
第3页 / 共49页
基于DM9000A的TCP通信设计.doc_第4页
第4页 / 共49页
基于DM9000A的TCP通信设计.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、基于DM9000A的TCP通信设计摘 要随着时代的发展,因特网的广泛普及,人们对智能化产品需求的增加, 许多应用领域纷纷与网络技术结合,出现了信息家电如PDA、可视电话 、移动电话 、机顶盒和数码相机等嵌入式设备,它们正逐渐走向网络化,以共享互联网中庞大的信息资源。本课题设计了一个基于DM9000A的TCP通信,以DM9000A以太网控制器为核心,TCP/IP协议为重点,采用软硬结合方式实现设计。课题系统的介绍了硬件网络控制器DM9000A的内部结构与特点,并编写了相应的程序代码及阐述了它的驱动原理,采用软件编程定义TCP/IP协议层的各帧结构, 通过分析协议的通信原理及具体实现过程,将简化的

2、TCP/IP协议移植到ARM硬件平台。并利用协议的接口函数编写上层应用程序,最后在应层实现EM客户端与PC服务器端之间的数据传输。实验证明,本课题的设计能够成功的实现ARM平台上的移植,并完成数据的准确传输,这将为以后网络之间的通信提供了方便。关键词:DM9000A;以太网;TCP/IP协议 TCP communication design based on DM9000AAbstractWith the development of the times, the popularization of internet widespread, peoples demand on the incr

3、ease of intelligent product , many application domains in abundance with networking union. Appeared information home appliances such as PDA, videophone, mobile telephone, set-top boxes and digital camera etc, they are gradually embedded equipment, to share internet towards network in the enormous in

4、formation resources. This topic is TCP communication design based on DM9000A, takes the DM9000A Ethernet controller as the core, TCP/IP protocol for key point, and selects the soft and hard union method to realize the design. This topic systematically introduces the hardware network controller DM900

5、0As internal structure and characteristics, and have compiled the corresponding procedure code and elaborated its actuation principle. Using software programming definition TCP/IP protocol layer each frame structure, and realizes the process specifically through the analysis agreements correspondenc

6、e principle, will simplify the TCP/IP protocol transplanted to ARM hardware platform. And using agreement connection function compilation upper formation application procedure, finally in should the level realize between the EM client side and the PC server end data transmission. The experiment prov

7、ed that this topics design can succeed realizes in the ARM platform transplant, and completes the data the accurate transmission, this will be for the communication between network and network and will provides convenient for every one after. Key word:DM9000A; etherne;TCP/IP protocol 目 录1 绪论11.1 TCP

8、/IP协议的发展11.2 目前国内外TCP/IP协议的应用21.3 本课题的设计内容与结构22 以太网接口42.1 硬件平台描述42.2 DM9000A芯片的内部结构和工作原理52.3 DM9000A的驱动72.4 以太网接口设计123 TCP/IP通信协议的实现163.1 TCP/IP通信的设计思想163.1.1 TCP/IP协议的介绍163.1.2 数据报的封装173.1.3 主程序流程173.2 ARP协议及其实现193.3 IP协议及其实现233.3.1 IP协议帧数据结构233.3.2 IP协议的实现253.4 ICMP协议及其实现273.5 TCP协议及其实现293.5.1 TCP

9、协议帧数据格式293.5.2 TCP协议端口及套接字313.5.3 TCP协议的通讯过程313.5.4 TCP协议的实现344 应用层的实现36结 论39致 谢40参考文献41附 录421 绪论1.1 TCP/IP协议的发展早在阿帕网(ARPR)产生运作之初,通过接口信号处理机实现互联的电脑并不多,大部分电脑相互之间不兼容,在一台电脑上完成的工作,很难拿到另一台电脑上去用,每一个电脑在各自的系里都运行良好,但却不能共享资源。面对这样的状况,科学家们提出这样一个理念:让所有电脑能够实现“资源共享”。这就得在这些系统的标准之上,建立一种大家共同都必须遵守的标准,让不同的电脑按照一定的规则进行“谈判

10、”,并且在谈判之后能“握手”。随着接口信号处理机”(IMP)的研试及网络测评中心的建立,科学家们又提出用网络思想设计网络布局,网络测评系统的想法。然而考虑到如何让各种电脑都认可的信号来打开通信管道,并且数据通过后还要关闭通道的问题上,便引进了通信“协议”的概念。70年代,“包切换”理论为网络之间的联接方式提供了理论基础,建立一种对各种操作系统普适的协议,利用包交换技术实现网络之间的通信。这就产生了目前在开放系统下的所有网民和网管人员都在使用的“传输控制协议”和“因特网协议”即TCP/IP协议。通过制定详细定义的TCP/IP协议标准,第一次实现了将信息包通过点对点的卫星网络,再通过陆地电缆,再通

11、过卫星网络,再由地面传输,贯串欧洲和美国,经过各种电脑系统,全程9.4万公里竟然没有丢失一个数据位,远距离的可靠数据传输。从而验证了TCP/IP的成功,使其得以发展1。TCP/IP的成功,给网络通信带来了很多方便,最初的TCP/IP是借助与因特网的密切关系才得以发展起来的。在网络中,TCP/IP提供了在两端计算机之间数据交换的环境,它的功能取决于两台计算机间进行的通信内容,即通过在两端计算机上运行的程序决定TCP/IP网络究竟能做些什么。TCP/IP协议具有可靠性与面向连接性,能使计算机之间直接交换数据,实现资源的共享。不管在商务还是在家庭中,把计算机与网络相连,利用TCP/IP协议通信获得全

12、世界信息,推进了TCP/IP技术的增强。TCP/IP包含了所有网络综合技术,具备了涵盖所有类型网络的功能,目前大量的研究机构研究将它推向开放式的网络化协议。TCP/IP技术在与时俱进,不断增强,它已进入我们生活的方方面面。1.2 目前国内外TCP/IP协议的应用目前TCP/IP协议已成为占主导地位的通讯协议,它能使各种业务在不同的网上实现互联互通,从技术上为网络融合奠定了基础,是研究和应用现代网络必不可少的知识,也是从事网络设计与应用工作的基石。它之所以能够获得如此成就,是因为它具有如下的特点: 开放的协议标准,可以独立于特定计算机和操作系统的开放方式;独立于特定的物理网络硬件,可以运行在多种

13、网络传输介质上;共同的地址规划方案,使得整个网络中的任何TCP/IP设备都具有一个唯一的地址;标准化的高层协议提供了多种可靠的用户服务。TCP/IP在诞生之初,主要以文字为中心进行信息交换,用于远程登录、电子邮件和文件传送等方面的应用。不久,它应用于万维网,实现了图像和声音、动画等在内的大量可视化信息的访问。随着因特网的的普及与发展,TCP/IP也广为人知,应用于介绍各种新闻、提供各种服务中,如传送影像和声音的服务,航天飞机升空实况转播,音乐会实况传播,讲演活动的介绍等。现在,TCP/IP已推广到因特网以外的网络领域,比如商店的收款机、银行的ATM自动取款机、测量仪器、机械设备的控制与监视、公

14、司内部网络及家庭内的居室自动化等等,开展了各种网络应用2。随着人们对智能化产品需求的增加,未来的嵌入式产品,包括各种家电、通信、PDA、仪器仪表等设备正逐渐走向网络化,TCP/IP协议在嵌入式系统的研究也越来越有实际意义,因而基于TCP/IP协议使嵌入式设备的网络化开发也有广阔的市场前景。目前嵌入式系统作为新技术的发展方向,已广泛的应用在军事国防,消费电子,网络通信,工业控制等领域。随着因特网的普及,出现了信息家电,如PDA、可视电话 、移动电话 、机顶盒和数码相机等嵌入式设备,它们的市场需求也越来越大,正逐渐走向网络化,以共享互联网中庞大的信息资源 。TCP/IP协议已成为目前最为流行及广泛

15、使用的以太网协议,TCP通信也将成为基于ARM的有线通信的的主要通信方式,实现远程图像监控系统、远程温度环境监控系统,网络通信等广泛的应用。1.3 本课题的设计内容与结构本课题是基于DM9000A的TCP通信设计,首先对以太网控制器DM9000A作了简要的说明,并阐述了它的驱动原理,编写了相应的程序代码,其次分析了TCP/IP协议的通信原理及实现过程,讲述了以太网层、传输层、网络层的具体处理过程,最后基于TCP协议进行网络通信,实现应用层的数据传输设计。本课题共分为四部分,内容安排如下:本课题第一部分为绪论,介绍了TCP的发展、应用背景及国内外发展前景,说明了TCP/IP应用的领域及网络通信的

16、可靠性。本课题第二部分为以太网接口DM9000A。主要介绍了本课题的硬件平台,DM9000A的工作原理及驱动过程等。编写相关程序代码,实现数据的接收、发送处理,它为本课题的主要部分,实现了网络数据的传输。本课题第三部分为TCP/IP协议的实现。主要介绍了以太网层、传输层、网络层等各层中的协议及数据的接收、发送实现。针对TCP协议,更加系统的说明了它的具体通讯过程,如建立连接、数据传输、关闭连接等。这一部分对每个协议的实现过程都有概括的表述,做为基础,有利于一些的理解。本课题第四部分为应用层的实现。介绍应用层的协议功能,实现应用层客户端与服务器端之间的通信。2 以太网接口2.1 硬件平台描述AR

17、M处理器FLASH网络接口SRAM串行口LCD接口USB接口网络驱动JTAG电源晶振USB接口图2.1 硬件平台本课题实现TCP/IP通信的硬件平台如图2.1所示。在这个开发平台上,ARM处理器选用S3C44B0X,与ARM连接的有JTAG接口,用于调试程序用的。电源晶振是给ARM提供电源,ARM才能进行正常工作,ARM的晶振最大为66MHZ。FLASH相当于ARM的ROM,用来储存程序,它的地址范围0X0000-00000X01C0-0000。SDRAM用来储存数据,它的地址范围为0X0C00-00000X0E00-0000。串行口用于跟外界连接,进行数据交换,如把控制命令下载到ARM中。L

18、CD接口是连接LCD显示器的,可以用来显示ARM运行的结果,在调试仿真的时候很方便、直观。USB接口用于跟外界交换数据,如将数据从U盘中传入ARM中。网络驱动中用的网卡是DM9000A,用于S3C44B0X和网络间的数据接收和发送,DM9000A采用的晶振是25MHZ。本文的设计中将CMD引脚与处理器的地址线ADR2相连,网络控制器CMD引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX(地址)端口寄存器,它的地址为0X0600-0000;当CMD=1时,访问的是DATA(数据)端口寄存器,它的地址为0X0600-0004。通过这样一个ARM平台,就能很好地实现以太

19、网通信。下文便是详细讲述在这个平台上是如何实现通信的。2.2 DM9000A芯片的内部结构和工作原理 1. 总体介绍DM9000A是一款完全集成的和符合成本效益单芯片快速以太网MAC控制器与一般处理接口,一个10/100M自适应的PHY和4K DWORD值的SRAM 。它的目的是在低功耗和高性能进程的3.3V与5V的支持宽容。DM9000A还提供了介质无关的接口,来连接所有提供支持介质无关接口功能的家用电话线网络设备或其他收发器。该DM9000A支持8位,16位接口访问内部存储器,以支持不同的处理器。DM9000A物理协议层接口完全支持使用10MBps下3类、4类、5类非屏蔽双绞线和100MB

20、ps下5类非屏蔽双绞线。这是完全符合IEEE 802.3u规格,它的自动协调功能将自动完成配置以最大限度地适合其线路带宽,还支持IEEE802.3x全双工流量控制。这个工作里面DM9000A是非常简单的,所以用户可以容易的移植任何系统下的端口驱动程序3。 2. 特点(1)支持处理器读写内部存储器的数据操作命令以字节/字/双字的长度进行 (2)集成10/100M自适应收发器 (3)支持介质无关接口 (4)支持背压模式半双工流量控制模式 (5)IEEE802.3x流量控制的全双工模式 (6)支持唤醒帧,链路状态改变和远程的唤醒 (7)支持自动加载EEPROM里面生产商ID和产品ID (8)支持4个

21、通用输入输出口 (9)超低功耗模式,功率降低模式,电源故障模式 (10)支持100脚CMOS LQFP封装工艺 (11)兼容3.3v和5.0v输入输出电压 (12)支持4K双字SRAM (13)可选择1:1YL18-2050s YT37-1107S或5:4变压比例的变压器降低格外功率 3. DM9000A的硬件电路 网络驱动中用到的网卡DM9000A,其硬件电路如下 图2.2 DM9000A的硬件电路DM9000A的EECS引脚保持默认的悬空状态,数据线SD0-SD15直接与S3C44B0X、SST39VF1601、HY57V641620HG的数据线相连。DM9000A的IO读信号线IOR、写

22、信号线IOW分别与处理器的读信号NOE和写信号NOW相连,片选信号CS与处理器的NGCS3端口相连,它的起始地址为0X0600-0000。读写信号与片选信号都是保持默认设置的低电平有效。在DM9000A中只有INDEX端口与DATA端口两个寄存器可以直接被CPU直接访问,其它所有内部控制和状态寄存器都是通过这两个端口寄存器间接访问的。本文的设计中将CMD引脚与处理器的地址线ADR2相连,网络控制器CMD引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX(地址)端口寄存器,它的地址为0X0600-0000;当CMD=1时,访问的是DATA(数据)端口寄存器,它的地址为

23、0X0600-0004。实际中INDEX端口寄存器保存的是访问DATA端口寄存器的内部寄存器的地址,因此对DM9000A控制或状态寄存器访问的命令顺序是: (1)将要访问寄存器的地址写到INDEX端口; (2)通过DATA端口来读/写数据4。 4. 工作原理在系统上电时,处理器通过总线配置DM9000A内的网络控制寄存器(NCR)、中断寄存器(ISR)等,以完成DM9000A的初始化。随后,DM9000A进人数据收发等待状态,当DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误或存在CRC校验错误,则将该帧数据丢弃,否则将数据帧缓存到内部RAM,并通过中断

24、标志位通知处理器,处理器收到中断后将DM9000A接收RAM的数据读出进行处理。当处理器要向以太网发送数据帧时,先将数据打包成TCP或IP数据包,并通过8位或16位总线逐字节发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,随后发送使能命令,DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去5。2.3 DM9000A的驱动1. DM9000A按字节、半字、字方式读写数据#define DM9000_outb(d,P) ( *(volatile UINT8 *)p = d ) #define DM9000_outw(d,p) ( *(vo

25、latile UINT16*)p = d )#define DM9000_outl(d,p) (*(volatile UINT32 *)p = d )#define DM9000_inb(p) (*(volatile UINT8 *)p)#define DM9000_inw(p) (*(volatile UINT16 *)p)#define DM9000_inl(p) (*(volatile UINT32 *)p)其中*(volatile UINT8 *)p为强制类型转换,即将P转换为无符号八位,再将d赋给转换后的p,后面几个语句类似于此语句。2. DM9000A软件复位void DM9000

26、_reset(void) dlyus(20);DM9000_iow(DM9000_NCR,0x03); dlyus(20); DM9000_iow(DM9000_NCR, 0x03); dlyus(20); DM9000_iow(DM9000_GPR,0x01); DM9000_iow(DM9000_GPR,0x00); dlyms(4);函数的功能是实现DM9000A的复位。即将寄存器NCR的第0位赋值为1,保持4ms,自动清零。 3. DM9000A寄存器读数据_inline UINT8 DM9000_ior(UINT8 reg) DM9000_outb(reg,DM9000_INDEX_

27、PORT); return DM9000_inb(DM9000_DATA_PORT); 使用如上函数,实现DM9000A从寄存器中读取数据,首要对要访问的寄存器正确寻址,再将DM9000A的数据端口和地址端口复用,通过CMD引脚来选择端口。当CMD引脚拉高时,当前命令周期访问的是数据端口;当CMD引脚拉低时,当前命令周期访问的是地址端口。此程序首先是由INDEXPORT写入需要读取操作的寄存器地址,在由DATAPORT读取寄存器内的数据。4. DM9000A寄存器写数据 _inline void DM9000_iow(UINT8 reg,UINT8 value) DM9000_outb(reg

28、,DM9000_INDEX_PORT); DM9000_outb(value,DM9000_DATA_PORT); 函数功能实现将数据写入寄存器中,首先由INDEXPORT写入需要写操作的寄存器地址 ,再由DATAPORT写入寄存器内数据。5. DM9000A检查PID与VID UINT32 DM9000_probe(void) UINT32 id_val; id_val = DM9000_ior(DM9000_VIDL); id val|= DM9000_ior(DM9000_VIDH) 8; id val|= DM9000_ior(DM9000_PIDL) 16; id_val |= DM

29、9000_ior(DM9000_PIDH)7)&0x01) != DM9000_IO_MODE) return -1; DM9000_iow(DM9000_NCR, 0x00); DM9000_iow(DM9000_TCR, 0x00); DM9000_iow(DM9000_SMCR,0x00); DM9000_iow(DM9000_NSR, 0x2C); DM9000_iow(DM9000_ISR, 0x3f); DM9000_iow(DM9000_BPTR,0x3f); DM9000_iow(DM9000_FCTR,0x38); DM9000_iow(DM9000_FCR, 0x29);

30、for (i = 0,oft = DM9000_PAR;i 6;i+,oft+) DM9000_iow(oft,maci); for (i = 0,oft = DM9000_MAR;i 8;i+,oft+) DM9000_iow(oft,0xff); DM9000_iow(DM9000_RCR,0x31); DM9000_iow(DM9000_IMR,17); #ifdef ETHERNET_DEBUG DbgPrintf(DM9000 init is succed!); #end if 对DM9000A的初始化,即填写、设置DM9000A的控制寄存器,首先调用复位函数,使GPIO默认0位为输

31、出以激活内部PHY,寄存器NCR的第0位赋值为1,软件复位清零,以便设置正常的工作模式。 GPIO控制寄存器(GPCR),GPCR的1到3位表示GPIO的输入输出方向,1为输出,0为输入。4到6位为GPIO的固定output不可写,在本课题设计中,将其设置为0x01。 GPIO寄存器(GPR),它的第0位为0表示激活PHY,为1表示关闭PHY。它的1到3位表示GPIO的1到3位的端口映射位,4到6位表示GPIO的4到6位的端口映射位。在本课题将其设置为0x00,表示激活PHY。 网络控制寄存器(NCR),设置网络控制寄存器NCR的Bit0(RST位)为1,进行软件复位,设置网络控制寄存器NCR

32、,进行网络工作模式设置。复位成功后,进行进一步初始化操作处理。 设置发送控制寄存器(TCR),本课题中将其置为0x00。它的Bit0代表发送请求,发送完成后自动清零该位;Bit1表示禁止为数据包指针1添加CRC校验;Bit2表示禁止为数据包指针1添加PAD;Bit3表示禁止为数据包指针2添加CRC校验;Bit4表示禁止为数据包指针2添加PAD;Bit5表示额外冲突模式控制,0代表当额外的冲突计数多于15则终止本次数据包,1代表始终尝试发发送本次数据包;Bit6表示Jabber传输使能,1代表使能Jabber传输定时器(2048字节),0代表禁止。本课题中将其设置为0x00。 特殊模式控制寄存器

33、(SMCR)赋值为0x00,它的0位表示强制最短“Back-off”时间,第1位表示强制最长“Back-off”时间,第2位表示强制冲突延迟,3到6位保留,第7位表示特殊模式使能。 使用网络状态寄存器NSR清除各种状态标志位,将其置为0x2C,赋值中断状态寄存器(ISR)为0x3f,来清除所有中断标志位。它Bit0表示数据包接收;Bit1表示数据包传输;Bit2表示接收溢出;Bit3表示接收溢出计数器溢出;Bit4表示传输“Under-run”Bit5表示连接状态改变;Bit7表示处理器模式;0为16位模式,1为8位模式。 还用到了背压门限寄存器(BPTR),它的0到3位表示拥挤状态时间,默认

34、为200us。0000为5us,0001为10us,0010为15us,0011为25us,0100为50us,0101为100us,0110为150us,0111为200us,1000为250us,1001为300us,1010为350us,1011为400us,1100为450us,1101为500us,1110为550us,1111为600us。它的4到7位表示背压门限最高值,当接收SRAM空闲空间低于该门限值,则MAC将产生一个拥挤状态,默认值为3H,即3K字节空闲空间,不要超过SRAM(16KB)大小。本课题将其赋值为0x3f。对于溢出控制门限寄存器(FCTR), 将其赋值为0x38

35、,它的0到3位表示接收FIFO缓存溢出门限最低值。当接收SRAM空闲空间大于该门限值,则发送一个暂停时间(pause_time)为0000H的暂停包;当溢出门限最高值的暂停包发送之后,溢出门限最低值的暂停包才有效,默认值为8K字节,不要超过SRAM大小。4到7位表示接收FIFO缓存溢出门限最高值;当接收SRAM空闲空间小于该门限值,则发送一个暂停时间(pause_time)为FFFFH的暂停包;若该值为0, 则无接收空闲空间,默认值为3H,即3K字节空闲空间,不要超过SRAM大小。 对于接收/发送溢出控制寄存器(FCR),Bit0表示溢出控制使能,1设置使能溢出控制模式;Bit1表示接收暂停包

36、当前状态;Bit2表示接收暂停包状态,只读清零允许;Bit3表示背压模式,该模式仅在半双工模式下有效,当接收SRAM超过BPHW并数据包DA匹配时,产生一个拥挤状态;Bit4表示背压模式,该模式仅在半双工模式下有效,当接收SRAM超过BPHW并且接收新数据包时,产生一个拥挤状态;Bit5表示强制发送暂停包使能,按溢出门限最高值使能发送暂停包;Bit6表示1发送暂停包,发送完成后自动清零,并设置TX暂停包时间为FFFFH;Bit7表示1发送暂停包,发送完成后自动清零,并设置TX暂停包时间为0000H。将其赋值为0x8。 还用到物理地址寄存器(PAR),多点发送地址寄存器(MAR)。接收控制寄存器

37、(RCR),Bit0表示接收使能;Bit1表示混杂模式(Promiscuous Mode);Bit2表示忽略不完整的数据包;Bit3表示忽略所有多点传送;Bit4表示丢弃CRC校验错误的数据包;Bit5表示丢弃长数据包,1为丢弃数据包长度超过1522字节的数据包;Bit6表示看门狗定时器禁止,1禁止,0使能。赋值0x31。中断屏蔽寄存器(IMR),Bit0表示1使能数据包接收中断;Bit1表示1使能数据包传输终端;Bit2表示1使能接收溢出中断;Bit3表示1使能接收溢出计数器溢出中断;Bit4表示1使能传输“Underrun”中断;Bit5表示1使能连接状态改变中断;Bit7表示1使能指针自

38、动跳回。当SRAM的读、写指针超过SRAM的大小时,指针自动跳回起始位置,需要驱动程序设置该位,若设置则MRRH将自动位0CH。本文将其赋值为0x807。2.4 以太网接口设计1. 以太网的MAC帧格式 目的端的 MAC地址发送端的MAC地址类型数 据FCS 帧的传输方向6624615004 图2.3 以太网帧格式 以太网的MAC帧格式比较简单,由5个字段组成。前两个分别为6字节的目的端地址与发送端地址字段。第三个为两字节的类型字段,标志上一层用的是什么协议,如上层使用的是IP数据报,则该类型字段值为ox0800。第四个是数据字段,其长度为46 1500字节之间。最后为4字节的帧检验序列FCS

39、。MAC帧在物理层传输时还须在帧前面插入8个字节,它有两段组成,第一个字段为7个字节的前同步码,实现位同步。第二个字段是帧开始定界符,定义为10101011。 以太网帧结构体定义如下: struct ethernet_frame UINT8 destinationETH_ADDRESS_LEN;UINT8 sourceETH_ADDRESS_LEN;UINT16 frame_size;UINT16 protocol;UINT16 buf_index; ;2. 以太网的数据链路传输以太网基本上采用总线型的连接方式,在一条电缆上连接所有的计算机,当某台计算机发送数据时,其信号可以传输给连接在电缆上

40、的所有计算机。每台计算机的网卡,可以接收传过来的数据,接收到数据后,网卡给CPU一个中断信号,告诉它应该接收数据了,收到中断请求的CPU就中断现在正在执行的处理,开始准备接收数据包。驱动软件则首先检查MAC地址,从而判断是否有自己应当接收的数据报。如果与自己主机NIC的MAC地址相同,就接着检查类型的字段,以及是否有自己应当接受的协议。当在自己可接受的协议情况下,就使用在内存中的可接纳数据帧长度的内存缓冲器,把NIC中的数据通过数据总线传送到内存,然后再交由上层的软件作进一步的处理。如果与自己主机NIC的MAC地址不同,没有可接收的数据,则删除数据报。3. DM9000A接收数据处理 DM90

41、00A接收以太网数据具体实现函数为DM9000_ReceiveFrame,首先要判断数据帧的合法性,其具体过程是DM9000A从网络中接到一个数据包后,会在数据包前面加上4个字节,分别为01H、status、LENL、LENH。然后要读取这四个字节来确定数据包的状态,若第一个字节是01H表示接收的是有效数据包,若为00H则表示没有收到数据包,若为其它值则表示网卡没有正确初始化,需要重新进行初始化。当接收的数据包长度小于60字节时,DM9000A会自动为不足的字节补上0,使其达到60字节。同时,在接收到的数据包后DM9000还会自动添加4个CRC校验字节,可以不予处理。所以,接收到的数据包的最小

42、长度会是64字节。接收到有效数据后,读取并保存以太网协议头,以太网协议头长度14字节,具体包括6个字节的以太网目的MAC地址,6个字节的以太网源MAC地址和2个字节的帧类型 8。接收处理过程如图2.4所示: 读取接收数据包的地址读取数据包第一个字节 接收有效数据开始 01H ?Y N 可接收的协议 类型?帧头CRC校验 正确?结束保存以太网协议头读取16位数据内部接收数据缓存区Y N YN 图2.4 DM9000A的接收处理的流程图4. DM9000A发送数据处理DM9000A发送处理具体实现函数为DM9000_SendFrame,其过程如图2.5所示,首先由DM9000_outb()函数写入

43、数据命令,再由DM9000_outw()函数按照以太网协议的格式将16位数据写入,发送到DM9000A的数据发送缓存区中,然后将数据长度等信息填充到DM9000A的相应寄存器内,并写入发送数据的长度,发送使能命令,DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去,并设置一个发送完成后的清除标志。写入数据命令16位数据写入数据发送缓存区写入发送数据长度发送数据开始结束清除图2.5 DM9000A的发送处理流程图3 TCP/IP通信协议的实现3.1 TCP/IP通信的设计思想3.1.1 TCP/IP协议的介绍 TCPIP协议起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,到20世纪90年代已经发展成为计算机之间最常用的通信协议。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。TCPIP协议并不完全符合OSI的七层参考模型,它采用4层的层级结构,每一层都呼叫它的下一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922