APP下载

TFTP以太网通信

2013-08-07张希遥

赤峰学院学报·自然科学版 2013年16期
关键词:链路层以太网数据包

张希遥

(南京晓庄学院,江苏 南京 211171)

1 引言

自上世纪80年代至今,嵌入式系统的发展历史已经将近四十多年.如今,嵌入式系统依然在逐渐渗入我们生活的各个领域,小到简单的单片机控制系统,大到复杂的工业控制工程.无论是在民用还是军用领域,无论是在日常生活还是在工农业生产中随处可以发现嵌入式系统的身影.本文介绍了一种基于S3C2410芯片,通过外扩以太网控制器CS8900来实现嵌入式设备与PC间TFTP通信的目的.

2 以太网简介

以太网(Ethernet)是一种由XEROS公司开发的,当前世界范围内广泛使用,采用采用共享总线型传输媒体结构的局域网.它采用基带局域网碰撞检测(CSMA/CD)机制,即载波监听多路存取机制.以太网普遍从IEEE802.3规范.

以太网的传输方法,也就是以太网的介质访问控制(MAC)技术,称为载波监听多路存取和冲突检测(CSMA/CD).其工作原理大致分为载波监听、信道忙碌、信道空闲、冲突检测、遇忙停发、多路存取几个步骤.

2.1 TCP/IP协议

TCP/IP采用分层结构,共分为4层,每层独立完成指定功能:应用层(第四层)(TFTP层),传输层(第三层)(UDP层),互联层(第二层)(IP层),网络接口层(第一层).

2.2 TFTP协议

TFTP(Trivial File Transfer Protocol)是传输文件的简单协议的一种,同时也是一个基于UDP协议而实现的简化的TCP/IP传输协议.支持用户从远程主机接收或向远程主机发送文件.由于TFTP协议是基于UDP,而UDP协议依托IP,因此一个TFTP包的包格式如下:本地媒介头,IP头,数据报头,TFTP头和TFTP数据.TFTP在IP头当中并不会指定任何的数据,但是它使用UDP中的源和目标端口以及包长度域.因为TFTP使用的包标记(TID)在这里被用做端口,因此TID的范围必须介于0到65535之间.

3 嵌入式处理器S3C2410简介

S3C2410是Samsung公司开发的一款利用ARM920T内核和0.18um CMOS工艺的16/32位RISC微处理器,它适用于低成本、低功耗、高性能的手持设备或其它电子产品.S3C2410的工作主频为203MHz,片上资源比较丰富,它集成了以下的通用的系统外设和接口:外部的SDRAM存储控制器,LCD控制器,4通道的DMA,3通道UART,117个通用I/O口,24个外部中断源,4个PWM时钟和1个内部时钟,1个IIC和1个IIS总线控制器,3端口USB接口和一个看门狗时钟,8通道10位ADC和触摸屏接口,SD接口和MMC接口.

4 CS8900A简介

CS8900A是一款16位以太网控制器,由美国CIRRUS LOGIC生产.CS8900A性能优良,成本低廉,工业级温度范围较广,大约在-40~+80摄氏度之间;工作电压为3.3V,功耗较低;这种高度集成的设计,使其适合作为智能嵌入设备网络接口;由于采用Packet page结构作为高速缓存,占用系统资源少,从而增加系统效率.对于没有集成MAC控制器的嵌入式处理器来说,实现以太网通信的更为通用的方法就是使用以太网控制器.

CS8900A有两种操作模式,一种是I/O访问模式,一种是内存访问模式.网卡芯片复位后默认工作方式为I/O连接.I/O端口基址为300H.CS8900支持8位模式,当读写16位数据时,高位字节依次对应奇地址,低位字节依次对应偶地址.

CS8900A通常被S3C2410外扩为以太网通信模块,拥有10Mb/s的传输速率.在电路接口中,CS8900通常工作在16位模式下,网卡芯片复位默认工作方式通常为I/O工作模式,寄存器的默认基地址为300H.在I/O工作模式下,访问8个16位寄存器进行寻址用以访问Packet page结构,地址映射表如表1所示.

表1 I/O模式地址映射

5 基于S3C2410的TFTP通信的实现

5.1 硬件电路接口的实现

由于S3C2410自身并没有集成网络MAC模块,若要实现TCP/IP协议中的数据链路层的功能,就必须外扩CS8900A网络芯片完成网络底层的数据传输,.再以此为基础,根据TCP/IP协议编写代码解析数据,完成相应的网络通信.

CS8900与S3C2410简单电路框图如下图所示.CPU的nGCS3连接CS8900的CHIPSEL引脚提供片选信号的同时也连接到AEN引脚,当AEN置低电平保证能够在I/O模式下读写操作有效;中断信号EINT9引脚接在了CS8900的第一个中断引脚INTERQ0上;内存读写nMEMR/W与I/O读写nIOR/W分别通过门电路对应想连接提供读写使能信号;同时当addr24=1时,可以确保CS8900 I/O模式有效,并且MEM模式有效.S3C2410_NET的nOE和nWE分别与门电路nOE及nWE相连构成一个”或“门电路.nGCS3的起始地址为0x18000000,其中CS8900上电后的基地址默认为300H.addr24被用来控制I/O或者MEM模式进行读写操作,当addr24置1,可以确保CS8900 I/O模式有效,并且MEM模式有效.所以会有0x19000000如下:

门电路

S3C2410与CS8900简单电路框图

5.2 CS8900A的网络层实现

数据链路层:数据链路层主要进行收发底层数据,它具体由CS8900实现.

网络层:网络层由IP协议来实现,包括了ARP地址解析协议,具体实现了从IP地址到数据链路MAC地址的映像.

互联层:互联层主要通过UDP和TCP来实现,其目的是让网络程序通过明确定义的数据结构获得数据.

应用层:通过以太网和TCP/IP进行数据传输,实现与以太网数据终端之间的交互通信.

5.3 CS8900A初始化及收发数据流程

系统上电工作之后,网卡芯片首先初始化四个写寄存器,分别为:RXCTL、LINTCTL、RCCFG和BUSCT.数据发送时,写控制寄存器TXCMD,TXLENG中写入发送数据的长度,然后将依次将数据写入PORT0口中,第一个字节写入300H,第二个字节写入301H,第三个字节写入302H,以此类推.CS8900芯片将数据封装为链路层类型,然后向网络中添加填充位和CRC校验.CPU查询ISO数据,一旦有数据到来,就读取接收到的数据帧.其初始化程序主要有检测芯片,设置Mac地址,定义存储模式和内存基址,提供中断及配置芯片等步骤.

CS8900的收发数据主要通过函数int CS_ReceivePacket和int CS_TransmitPacket实现.发数据时,对控制寄存器TXCMD进行写操作,向长度寄存器TXLENG中写入发送数据长度,然后把数据依次写入PORT0口.网卡芯片将数据封装为链路层类型并添加填充位和CRC校验送到网络,然后处理器再对ISO的数据进行查询.当有数据来到后,读取接收到的数据帧,处理器在读数据时依次读地址.

5.4 TFTP的通信流程

发送请求:PC向主机发出WRQ请求,收到一个确认能够写出的数据包.在一般情况下,被确认的包的包号就包含在该包中.每个数据包都有一个从1开始且连续的块号.然而WRQ包则较为特殊,其包号是0,在收到错误包的同时该请求会被拒绝.如果发送成功,则在文件名段指明要发送的文件名,在模式段写入“OCTET”,表示用于传输文件,这种文件在源机上以8位格式存储.然后,嵌入式设备向PC机发出确认包(ACK),并在数据块段填充0.

数据传输:PC对嵌入式设备发数据包,在数据块段填充数据包的数据块号.在数据段填充要发送的数据.TFTP协议每次发送512B,附带四个字节的报文信息,若包小于516时就代表它是最后一个包.当嵌入式设备收到数据包包后,会向PC发出确认包(ACK).最后,只需在数据块段填充观察所接收到的数据包的数据块号,就可知道是否成功接收到这个数据包.

5.5 TFTP的数据接收

CS8900在收到数据包后,芯片将接收的数据包保存到内存,它主要通过调用数据处理函数net_handle来实现.并根据包的帧结果,依次调用arp_rcv_packet和ip_rcv_packet处理数据包.

其中net_handle函数源代码如下所示:

该函数实际上是一个中断,当CS8900接收到数据包时则产生该中断进入net_handle函数进行数据处理.

5.6 TFTP的实际测试

将开发平台利用网线通过集线器与PC连接,分配MAC地址和IP地址,使用PC机的ping程序测试,若其连接正常,则说明ARP,IP和ICMP协议正常.利用TFTP命令,将本机的TXT文件发送到嵌入式设备内存空间的0x30008000处.利用网络抓包软件,观察网络数据包,结果符合TFTP通信流程.在嵌入式设备的内存地址0x30008000处观察数据,结果数据与TXT文件内容一致,则说明TFTP执行正确,UDP协议正常.

6 结束语

本文主要介绍了S3C2410嵌入式以太网通信,以及CS8900A这一实时性强且可靠的以太网控制器的使用和工作模式.通过对CS8900进行直接一系列操作,实现数据链路层功能,最终完成嵌入式开发平台的使用以及TFTP协议连接到以太网进行文件传输的目的.该方案在实际应用中有着一定的应用价值.

〔1〕王兴亮,高利平,等.通信系统概论.西安电子科技大学出版社,2008.

〔2〕杨铸,唐攀.深入浅出嵌入式底层软件开发.北京航空航天大学出版社,2011.

〔3〕王黎明,陈双桥等.ARM9嵌入式系统开发与实践.北京航空航天大学出版社,2008.

〔4〕王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001.

〔5〕Cirrus Logic,Inc.CS8900A Product Data sheet.2001.

〔6〕EduKit3ARM9_UserGuide_V3.0_cn.

猜你喜欢

链路层以太网数据包
基于Jpcap的网络数据包的监听与分析
基于多空间内存共享的数据链路层网络包捕获方法
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
SmartSniff
谈实时以太网EtherCAT技术在变电站自动化中的应用
基于FPGA全功能MVB网络从设备链路层IP核设计
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现