首页 百科知识 以太网通讯实验

以太网通讯实验

时间:2024-10-27 百科知识 版权反馈
【摘要】:(1)硬件:Embest EduKit-Ⅲ实验平台,ULINK USB-JTAG仿真器套件,PC,以太网集线器(Hub,可选).(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP/7.以太网是由Xeros公司开发的一种基带局域网碰撞检测机制(CSMA/CD),使用同轴电缆作为传输介质,数据传输速率达到10Mbps;使用双绞线作为传输介质,数据

7.9 以太网通讯实验

7.9.1 实验目的

(1)通过实验了解以太网通讯原理和驱动程序开发方法.

(2)通过实验了解IP网络协议和网络应用程序开发方法.

7.9.2 实验设备

(1)硬件:Embest EduKit-Ⅲ实验平台,ULINK USB-JTAG仿真器套件,PC,以太网集线器(Hub,可选).

(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP/7.

7.9.3 实验内容

熟悉以太网控制器CS8900A,在内部以太局域网上基于TFTP/IP协议,下载代码到目标板上.

7.9.4 实验原理

(1)以太网通讯原理.

以太网是由Xeros公司开发的一种基带局域网碰撞检测机制(CSMA/CD),使用同轴电缆作为传输介质,数据传输速率达到10Mbps;使用双绞线作为传输介质,数据传输速率达到100Mbps/1000Mbps.该机制现在普遍遵从IEEE802.3规范.

①结构.

以太网结构如图7-34所示.

img389

图7-34 以太网结构示意图

②类型.

以太网/IEEE802.3——采用同轴电缆作为网络媒体,传输速率达到10Mbps;

100Mbps以太网——又称为快速以太网,采用双绞线作为网络媒体,传输速率达到100Mbps;

1000Mbps以太网——又称为千兆以太网,采用光缆或双绞线作为网络媒体.

③工作原理.

以太网的传输方法,也就是以太网的介质访问控制(MAC)技术称为载波监听多路存取和冲突检测(CSMA/CD),下面我们分步来说明其原理:

载波监听:当你所在的网站(计算机)要向另一个网站发送信息时,先监听网络信道上有无信息正在传输,信道是否空闲.

信道忙碌:如果发现网络信道正忙,则等待,直到发现网络信道空闲为止.

信道空闲:如果发现网络信道空闲,则向网上发送信息.由于整个网络信道为共享总线结构,网上所有网站都能够收到你所发出的信息,所以网站向网络信道发送信息也称为“广播”.但只有你想要发送数据的网站才能识别和接收这些信息.

冲突检测:网站发送信息的同时,还要监听网络信道,检测是否有另一个网站同时在发送信息.如果有,两个网站发送的信息会产生碰撞,即产生冲突,从而使数据信息包被破坏.

遇忙停发:如果发送信息的网站检测到冲突,则立即停止发送,并向网上发送一个“冲突”信号,让其他网站也发现该冲突,从而摈弃可能一直在接收受损的信息包.

多路存取:如果发送信息的网站因“碰撞冲突”而停止发送,就需等待一段时间,再回到第一步,重新开始载波监听和发送,直到数据成功发送为止.

所有共享型以太网上的网站,都是经过上述六个步骤,进行数据传输的.由于CSMA/CD介质访问控制法规定在同一时间里,只能有一个网站发送信息,其他网站只能收听和等待,否则就会产生“碰撞”.所以当共享型网络用户增加时,每个网站在发送信息时产生“碰撞”的概率增大,当网络用户增加到一定数目后,网站发送信息产生的“碰撞”会越来越多,想发送信息的网站不断地进行:监听-Λ发送-Λ碰撞-Λ停止发送-Λ等待-Λ再监听-Λ再发送……

④以太网/IEEE802.3帧的结构.

img390

图7-35 以太网/IEEE 802.3帧的基本组成

如上图所示,以太网和IEEE802.3帧的基本结构如下:

前导码:由0、1间隔代码组成,可以通知目标站作好接收准备.IEEE 802.3帧的前导码占用7个字节,紧随其后的是长度为1个字节的帧首定界符(SOF).以太网帧把SOF包含在了前导码当中,因此,前导码的长度扩大为8个字节.

帧首定界符(SOF):IEEE 802.3帧中的定界字节,以两个连续的代码1结尾,表示一帧的实际开始.

目标和源地址:表示发送和接收帧的工作站的地址,各占据6个字节.其中,目标地址可以是单址,也可以是多点传送或广播地址.

类型(以太网):占用2个字节,指定接收数据的高层协议.

长度(IEEE 802.3):表示紧随其后的以字节为单位的数据段的长度.

数据(以太网):在经过物理层和逻辑链路层的处理之后,包含在帧中的数据将被传递给在类型段中指定的高层协议.虽然以太网版本2中并没有明确作出补齐规定,但是以太网帧中数据段的长度最小应当不低于46个字节.

数据(IEEE 802.3):IEEE 802.3帧在数据段中对接收数据的上层协议进行规定.如果数据段长度过小,使帧的总长度无法达到64个字节的最小值,那么相应软件将会自动填充数据段,以确保整个帧的长度不低于64个字节.

帧校验序列(FSC):该序列包含长度为4个字节的循环冗余校验值(CRC),由发送设备计算产生,在接收方被重新计算以确定帧在传送过程中是否被损坏.

(2)IP网络协议原理.

TCP/IP协议是一组包括TCP(Transmission Control Protocol)协议和IP(Internet Protocol)协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组.

①结构.

img391

图7-36 TCP/IP协议层次

TCP/IP协议采用分层结构,共分为四层,每一层独立完成指定功能,如图7-36所示.

网络接口层:负责接收和发送物理帧,它定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位.网络接口层将帧放在网上,或从网上把帧取下来.

互联层:负责相邻结点之间的通信,本层定义了互联网中传输的“信息包”格式,以及从一个节点通过一个或多个路由器运行必要的路由算法到最终目标的“信息包”转发机制.主要协议有IP、ARP、ICMP、IGMP等.

传输层:负责起点到终点的通信,为两个用户进程之间建立、管理和拆除有效的端到端连接.主要协议有TCP、UDP等.

应用层:它定义了应用程序使用互联网的规程.应用程序通过这一层访问网络,主要遵从BSD网络应用接口规范.主要协议有SMTP、FTP、TELNET、HTTP等.

②主要协议介绍.

a.IP.

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议.

IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层.但IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏.

当前IP协议有IPv4和IPv6两个版本,IPv4正被广泛使用,IPv6是下一代高速互联网的基础协议.下面这个表是IPv4的数据包格式.

IP协议头的结构定义如下:

img392

img393

图7-37 IPv4的数据包格式

ip_v:IP协议的版本号,IPv4为4,IPv6为6.

ip_hl:IP包首部长度,这个值以4字节为单位.IP协议首部的固定长度为20个字节,如果IP包没有选项,那么这个值为5.

ip_tos:服务类型,说明提供的优先权

ip_len:说明IP数据的长度.以字节为单位.

ip_id:标识这个IP数据包.

ip_off:碎片偏移,和上面ID一起用来重组碎片.

ip_ttl:生存时间,每经过一个路由时减1,直到为0时被抛弃.

ip_p:协议,表示创建这个IP数据包的高层协议.如TCP、UDP协议.

ip_sum:首部校验和,提供对首部数据的校验.

ip_src,ip_dst:发送者和接收者的IP地址.

IP地址实际上是采用IP网间网层通过上层软件完成“统一”网络物理地址的方法,这种方法使用统一的地址格式,在统一管理下分配给主机.Internet网上不同的主机有不同的IP地址,在IPv4协议中,每个主机的IP地址都是由32比特,即4个字节组成的.为了便于用户阅读和理解,通常采用“点分十进制表示方法”表示,每个字节为一部分,中间用点号分隔开来.如211.154.134.93就是嵌入开发网WEB服务器的IP地址.每个IP地址又可分为两部分:网络账号和主机号.网络号表示网络规模的大小,主机号表示网络中主机的地址编号.按照网络规模的大小,IP地址可以分为A、B、C、D、E五类,其中A、B、C类是三种主要的类型地址,D类专供多目传送用的多目地址,E类用于扩展备用地址.

b.TCP.

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传送到TCP层.TCP将包排序并进行错误检查,同时实现虚电路间的连接.TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传.

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序.应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层、设备驱动程序和物理介质,最后到接收方.

关于TCP协议的详细情况,请查看RFC793文档.

TCP对话通过三次握手来初始化.三次握手的目的是使数据段的发送和接收同步;告诉其他主机其一次可接收的数据量,并建立虚连接.

这三次握手的简单过程如下:

第一,初始化主机通过一个同步标志置位的数据段发出会话请求.

第二,接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号.

第三,请求主机再回送一个数据段,并带有确认顺序号和确认号.

c.UDP.

UDP与TCP位于同一层,但对于数据包的顺序错误或重发不处理.因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询、应答的服务,如NFS.相对于FTP或Telnet,这些服务需要交换的信息量较小.使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP).

UDP协议适用于无须应答并且通常一次只传送少量数据的应用.

d.ICMP.

ICMP与IP位于同一层,它被用来传送IP的控制信息.它主要是用来提供有关通向目的地址的路径信息.ICMP的“Redirect”信息通知主机通向其他系统的更准确的路径,而“Unreachable”信息则指出路径有问题.另外,如果路径不可用了,ICMP可以使TCP连接“体面地”终止.PING是最常用的基于ICMP的服务.

e.ARP.

要在网络上通信,主机就必须知道对方主机的硬件地址.地址解析就是将主机IP地址映射为硬件地址的过程.地址解析协议ARP用于获得在同一物理网络中的主机的硬件地址.

解释本地网络IP地址过程如下:

第一,当一台主机要与别的主机通信时,初始化ARP请求.当断定IP地址是本地时,源主机在ARP缓存中查找目标主机的硬件地址.

第二,要是找不到映射的话,ARP会建立一个请求,源主机IP地址和硬件地址会被包括在请求中,该请求通过广播,使所有本地主机均能接收并处理.

第三,本地网上的每个主机都收到广播并寻找相符的IP地址.

第四,当目标主机断定请求中的IP地址与自己的相符时,直接发送一个ARP答复,将自己的硬件地址传给源主机.以源主机的IP地址和硬件地址更新它的ARP缓存.源主机收到回答后便建立起了通信.

f.TFTP协议.

TFTP是一个传输文件的简单协议,一种简化的TCP/IP文件传输协议,它基于UDP协议而实现,支持用户从远程主机接收或向远程主机发送文件.此协议设计的时候是进行小文件传输的,因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据.

因为TFTP使用UDP,而UDP使用IP,IP还可以使用其他本地通信方法.因此一个TFTP包中会有以下几段:本地媒介头、IP头、数据报头、TFTP头,剩下的就是TFTP数据了.TFTP在IP头中不指定任何数据,但是它使用UDP中的源和目标端口以及包长度域.由TFTP使用的包标记(TID)在这里被用做端口,因此TID必须介于0~65 535之间.

初始连接时候需要发出WRQ(请求写入远程系统)或RRQ(请求读取远程系统),收到一个确定应答,一个确定的可以写出的包或应该读取的第一块数据.通常确认包包括要确认的包的包号,每个数据包都与一个块号相对应,块号从1开始而且是连续的.因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是0.如果收到的包是一个错误的包,则这个请求被拒绝.创建连接时,通信双方随机选择一个TID,因为是随机选择的,因此两次选择同一个ID的可能性就很小了.每个包包括两个TID,发送者ID和接收者ID.在第一次请求的时候它会将请求发到TID 69,也就是服务器的69端口上.应答时,服务器使用一个选择好的TID作为源TID,并用上一个包中的TID作为目的ID进行发送.这两个被选择的ID在随后的通信中会被一直使用.

此时连接建立,第一个数据包以序列号1从主机开始发出.以后两台主机要保证以开始时确定的TID进行通信.如果源ID与原来确定的ID不一样,这个包会被认识为发送到了错误的地址而被抛弃.

③网络应用程序开发方法.

进行网络应用程序开发有两种方法:一是采用BSD Socket标准接口,程序移植能力强;二是采用专用接口直接调用对应的传输层接口,效率较高.

a.BSD Socket接口编程方法.

Socket(套接字)是通过标准的文件描述符和其他程序通讯的一个方法.每一个套接字都用一个半相关描述,即用{协议、本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述,即{协议、本地地址、本地端口、远程地址、远程端口},每一个套接字都有一个本地的由操作系统分配的唯一的套接字号.

b.传输层专有接口编程方法.

网络协议都可以直接提供专有函数接口给上层或者跨层调用,用户可以调用每个协议代码中特有的接口实现快速数据传递.

实验板的网络协议包提供的就是TFTP协议的专用接口,应用程序可以通过它接收用户从主机上使用TFTP传递过来的数据.主要接口函数有:

extern char*TftpRecv(int*len)——接收用户数据,网络协议包自动完成连接过程,并从网络获取用户传递过来的数据包,每次接收最大长度由len指定,返回前改写成实际接收到的数据长度,函数返回数据首地址指针,若返回值为NULL,表示接收故障.

MakeAnswer()——返回应答信号,每当用户处理完一个数据包后,需要调用此函数给对方一个确认信号,使得数据传输得以继续.

(3)关于CS8900A.

①CS8900A特点介绍.

CS8900A是由美国CIRRUS LOGIC公司生产的以太网控制器,由于其优良的性能、低功耗及低廉的价格,使其在市场上10Mbps嵌入式网络应用中占有相当大的比例.

CS8900A主要性能为:

a.符合Ethernet II与IEEE802.3(10Base5、10Base2、10BaseT)标准.

b.全双工,收、发可同时达到10Mbps的速率.

c.内置SRAM,用于收发缓冲,降低对主处理器的速度要求.

d.支持16位数据总线,4个中断申请线以及3个DMA请求线.

e.8个I/O基地址,16位内部寄存器,IO Base或Memory Map方式访问.

f.支持UTP、AUI、BNC自动检测,还支持对10BaseT拓扑结构的自动极性修正.

g.LED指示网络激活和连接状态.

h.100脚的LQFP封装,缩小了PCB尺寸.

②CS8900A引脚分布.

CS8900A引脚分布如图7-38所示.

③复位与初始化过程.

引起CS8900A复位的因素有很多种,有人为的需要,也有意外产生的复位.如外部复位信号(在RESET引脚加至少400ns的高电平)引起复位,上电自动复位,下电复位(电压低于2.5V),EEPROM校验失败引起复位以及软件复位等.复位之后,CS8900A需要重新进行配置.

img394

图7-38 CS8900A的引脚分布图

每次复位之后(除EEPROM校验失败引起复位以外),CS8900A都会检查EEDataIn引脚,判断是否有外部的EEPROM存在.如果EEDI是高电平,则说明EEPROM存在,CS8900A会自动将EEPROM中的数据加载到内部寄存器中(Embest EduKit-Ⅲ实验平台未采用外接EEPROM的方法,具体的配置过程可以参考CS8900A的硬件手册);如果EEDI为低电平,则EEPROM不存在,CS8900A会按照下表所示进行默认的配置.

表7-9 CS8900A的默认配置

img395

续表

img396

④PacketPage结构.

CS8900A的结构的核心是提供高效访问方法的内部寄存器和缓冲内存.PacketPage是CS8900A中集成的RAM.它可以用作接收帧和待发送帧的缓冲区,除此之外还有一些其他的用途.PacketPage为内存或I/O空间提供了一种统一的访问控制方法,减轻了CPU的负担,降低了软件开发的难度.此外,它还提供一系列灵活的配置选项,允许开发者根据特定的系统需求设计自己的以太网模块.PacketPage中可以供用户操作的部分可以划分为以下几个部分:

0000h~0045h      总线接口寄存器

0100h~013Fh      状态与控制寄存器

0140h~014Fh      发送初始化寄存器

0150h~015Dh      地址过滤寄存器

0400h          接收帧地址

0A00h          待发送帧地址

(具体地址及定义见实验参考程序1)

(4)CS8900A工作模式介绍.

CS8900A有两种工作模式:一种是I/O访问方式,另一种是内存访问方式.网卡芯片复位后默认工作方式为I/O连接,I/O端口基址为300H,下面对它的几个主要工作寄存器进行介绍(寄存器后括号内的数字为寄存器地址相对基址300H的偏移量).

LINECTL(0112H):LINECTL决定CS8900的基本配置和物理接口.在本系统中,设置初始值为00d3H,选择物理接口为10BASE-T,并使能设备的发送和接收控制位.

RXCTL(0104H):RXCTL控制CS8900接收特定数据报.设置RXTCL的初始值为0d05H,接收网络上的广播或者目标地址同本地物理地址相同的正确数据报.

RXCFG(0102H):RXCFG控制CS8900接收到特定数据报后会引发接收中断.RXCFG可设置为0103H,这样当收到一个正确数据报后,CS8900会产生一个接收中断.

BUSCT(0116H):BUSCT可控制芯片的I/O接口的一些操作.设置初始值为8017H,打开CS8900的中断总控制位.

ISQ(0120H):ISQ是网卡芯片的中断状态寄存器,内部映射接收中断状态寄存器和发送中断状态寄存器的内容.

PORT0(0000H):发送和接收数据时,CPU通过PORT0传递数据.

TXCMD(0004H):发送控制寄存器,如果写入数据00C0H,那么网卡芯片在全部数据写入后开始发送数据.

TXLENG(0006H):发送数据长度寄存器,发送数据时,首先写入发送数据长度,然后将数据通过PORT0写入芯片.

以上为几个最主要的工作寄存器(为16位),CS8900支持8位模式,当读或写16位数据时,低位字节对应偶地址,高位字节对应奇地址.例如,向TXCMD中写入00C0H,则可将00h写入305H,将C0H写入304H.

系统工作时,应首先对网卡芯片进行初始化,即写寄存器LINECTL、RXCTL、RCCFG、BUSCT.发数据时,写控制寄存器TXCMD,并将发送数据长度写入TXLENG,然后将数据依次写入PORT0口,如将第一个字节写入300H,第二个字节写入301H,第三个字节写入300H,依此类推.网卡芯片将数据组织为链路层类型并添加填充位和CRC校验送到网络同样,处理器查询ISO的数据,当有数据来到后,读取接收到的数据帧.

(5)CS8900A驱动程序设计.

以太网驱动程序是针对实验板上的以太网络接口芯片CS8900A编程,正确初始化芯片,并提供数据输入输出和控制接口给高层网络协议使用.

源码中,cs8900a.c文件是CS8900A的驱动程序,函数功能如下:

CS_Init()——CS8900A初始化.初始化步骤为:①检测CS8900A芯片是否存在,然后软件复位CS8900A;②如果使用Memory Map方式访问CS8900A芯片内部寄存,就设置CS8900A内部寄存基地址(默认为IO方式访问);③设置CS8900A的MAC地址;④关闭事件中断(本例子使用查询方式,如果使用中断方式,则添加中断服务程序再打开CS8900A中断允许位);⑤配置CS8900A10BT,然后允许CS8900A接收和发送,接收发送64~1518字节的网络帧及网络广播帧(见实验参考程序2).

CS_Close()——关闭CS8900A芯片数据收发功能,以及关闭中断请求.

CS_Reset()——复位CS8900A芯片.

CS_Identification()——获得CS8900A芯片ID和修订版本号.

CS_TransmitPacket()——数据包输出.将要发送的网络数据包从网口发送出去.发送数据包时,先把发送命令写到发送命令寄存器,把发送长度写到发送长度寄存器,然后等待CS8900A内部总线状态寄存器发送就绪位置位,便将数据包的数据顺序写到数据端口寄存器(16位宽,一次两个字节).

CS_ReceivePacket()——数据包接收.查询数据接收事件寄存器,若有数据帧接收就绪,读取接收状态寄存器(与接收事件寄存器内容一致,忽略之),及读取接收长度寄存器,得到数据帧的长度,然后从数据端口寄存器顺序读取数据(16位宽,一次两个字节).

7.9.5 实验操作步骤

(1)准备实验环境.

使用ULINK USB-JTAG仿真器连接到目标板上,使用Embest EduKit-Ⅲ实验板附带的串口线,连接实验板上的UART0和PC的串口.

(2)串口接收设置.

在PC上运行Windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口通信程序.

(3)配置.

①将PC机IP地址设置为192.192.192.x(x取值在30~200之间).

②运行PC机DOS窗口或者"开始"系统按钮上的"运行"菜单,输入命令command:

C:\DOCUME~1\SS>cd\

C:\>arp-s 192.192.192.200 00-06-98-01-7e-8f

C:\>arp-a

Interface:192.192.192.36——0x2

Internet Address   Physical Address   Type

192.192.192.200    00-06-98-01-7e-8f  static

为PC机添加一个到目标板的地址解析.

③在PC机上运行windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口通信程序.使用教学系统提供的交叉网线连接开发板网口(NET1)和PC;也可以使用直通网线,连接到与PC同一局域网的HUB上.

(4)打开实验例程.

①拷贝实验平台附带光盘CD1\CD1_Basic_070615\Software文件夹到RealView MDK软件的安装目录的Keil\ARM\Boards\Embest\目录下(如果已经拷贝,可跳过此步骤).

②使用ULINK USB-JTAG仿真器连接到目标板上,打开实验例程目录6.2_tftp_test子目录下的tftp_test.Uv2例程,编译链接工程,直到链接工程成功.

③根据ReadMe目录下的ReadMeCommon.txt及readme.txt文件配置集成开发环境(工程默认已经配置正确),点击工具栏img397”,在Option for Target对话框的Linker页中选择RuninRAM.sct分散加载文件,点击MDK的Debug菜单,选择Start/Stop Debug Session项或点击工具栏“img398”,下载工程生成的.axf文件到目标板的RAM中调试运行.

④如果需要将程序烧写固化到Flash中,仅需要更改分散加载文件即可(须慎用,这一步的操作将会破坏Flash中原有固化程序,建议实验中不操作).在Option for Target对话框的Linker页中选择RuninFlash.sct分散加载文件,重新编译工程,点击MDK的Flash菜单,选择Download烧写调试代码到目标系统的Nor Flash中,重启实验板,实验板将会运行烧写到Nor Flash中的代码.

⑤点击Debug菜单的Run或F5键全速运行程序.

⑥运行光盘中附带的DHCP Server软件(Tools\tftpd32\tftpd32.exe),以动态分配IP地址(也可用网络中的DHCP服务器),如图7-39所示,设置DHCP Server.

img399

图7-39 DHCP Server设置图

在PC上观察超级终端程序主窗口,可以看到如下界面:

boot success...

Reset CS8900A successful, Rev F.

S/s——DHCP IP addr

D/d——Default IP addr(192.192.192.200)

Y/y——Input New IP addr

选择s,表示DHCP测试,选择d,默认IP,选择y,输入新IP,超级终端显示如下:

Press a key to continue...s

Set local ip 192.192.192.201

Press any key to exit...

Press a key to continue...d

Set local ip 192.192.192.200

Press any key to exit...

Press a key to continue...y

Please input IP address(xxx.xxx.xxx.xxx)

then press ENTER:192.192.192.218

Set local ip 192.192.192.218

Press any key to exit...

⑦在PC上运行TFTPDown.exe程序(在CD1根目录Tools下),目标板地址输入192.192.192.200,Flash Start Address输入0x33000000,然后选取想要下载的文件(BIN文件、ELF文件等各种文件均可),点击Download,程序开始通过TFTP协议下载文件到目标板Flash中,成功或者出错都有提示对话框.

img400

图7-40 TFTP Download运行后的配置界面

注:Flash Start Address也可以是SDRAM地址:0x30000000~0x37fffc00

用户按照图7-40参数设置完毕后,点击Download按钮,TFTP正确下载会出现图7-41所示的提示.

img401

图7-41 TFTP Download测试成功图

当开发板所在的网络不能正常通信或开发板硬件不正常时,TFTP文件下载会显示下载失败提示.用户可以先检查网络通信是否正常再进行调试,直到通信成功.

(5)观察实验结果.

使用MDK停止目标板运行,打开Memory窗口,输入0x33000000,然后检查Flash中的数据是否和下载的文件数据一致.

7.9.6 实验参考程序及流程图

img402

图7-41 以太网通讯实验流程图

代码

(1)CS8900A的寄存器定义.

img403

img404

(2)CS8900A初始化程序.

img405

img406

(3)相关协议数据结构

img407

(4)tftp下载测试程序.

img408

img409

img410

img411

7.9.7 练习题

改写TFTP_TEST例程,改变实验板IP地址,下载的时候改变Flash起始地址,重新进行实验,检查是否正确下载.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈