文档详情

嵌入式以太网控制器的设计.doc

发布:2017-04-18约3.8千字共6页下载文档
文本预览下载声明
以太网学习板程序说明 注意:单片机程序在wave_project文件夹下。Keil C的版本信息如下: 有用户反应,该代码在最新版本里编译出来烧进去后不能正常运行。请特别注意!上图的Keil C版本在本光盘已经附带。 1、初始化 初始化部分包括8019AS的初始化、W78E516B定时器初始化、系统内存空间分配等。 RTL8019AS内部有两块RAM区。一块16K字节,地址为0x4000~0x7fff;一块32字节,为寄存器区,地址为0x0000~0x001f。RAM按页存储,每256字节为一页。一般将RAM的前12页(即0x4000~0x4bff)存储区作为发送缓冲区;后52页(即0x4c00~0x7fff)存储区作为接收缓冲区。寄存器分为4页:PAGE0、PAGE1、PAGE2、PAGE3,由RTL8019AS的CR(Command Register命令寄存器)中的PS1、PS0位来决定要访问的页。但与NE2000兼容的寄存器只有前3页,PAGE3是RTL8019AS自己定义的,对于其他兼容NE2000的芯片如DM9008无效。远程DMA地址包括10H~17H,都可以用来做远程DMA端口,只要用其中的一个就可以了。复位端口包括18H~1FH共8个地址,功能一样,用于RTL8019AS复位。 8019AS的初始化如下: (1)、复位8019,再使网卡处于停机模式,延时10ms确保芯片处于停机模式; (2)、设置芯片的发送缓冲区和接收缓冲区大小。0x40-0x4B为网卡的发送缓冲区,共12页,刚好可以存储2个最大的以太网包;使用0x4c-0x7f为网卡的接收缓冲区,共52页; (3)、设置芯片MAC地址; (4)、设置芯片工作于8位DMA工作方式 (5)、设置其他工作寄存器,然后使芯片处于正常工作模式。 2、太网包的收发 对以太网包的收发是实现该系统功能的基础,更高层数据通信协议ARP、IP、ICMP、TCP、UDP的实现都必须以这个为基础。 在本系统中,以太网的数据包格式采用802。3。它的帧结构如图3所示。物理信道上的收发操作均使用这个帧格式。其中,前导序列、帧起始位、CRC校验由硬件自动添加/删除,与上层软件无关。收到的数据包格式并不是802.3帧的真子集,而是如图4所示。8019自动添加了“接收状态、下一页指针、以太网帧长度(以字节为单位)”三个数据成员(共4字节)当然,发送数据包的格式是802.3帧的真子集,如图3所示。 图3 802.3帧结构 图4 8019AS接收帧结构 图5 8019AS发送帧结构 将待发送的数据按发送的帧格式封装,通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,就完成帧的发送。需要设置以太网目的地址、以太网源地址、协议类型,再按所设置的协议类型来设置数据段。之后启动远程DMA,数据写入RTL8019AS的RAM,再启动本地DMA,将数据发送网上。 在本系统中,通过对CURR是否为BNRY+1来判断是否收到新的数据包。CURR是网卡写内存的指针,它指向当前正在写的页的下一页,网卡写完接收缓冲区一页,就将这个页地址加一。BNRY要由用户来操作。用户从网卡读走一页数据,要将BNRY加一,然后再写到BNRY寄存器。初始化是将CURR= BNRY+1。当收到新的包时,上述条件不成立,因此查询上述两个寄存器可以判断是否收到新的数据包。当收到新的数据包时,先通过DMA方式读出包的前18个字节,该18个字节包括读状态、包长度、下页地址、发送/接收端MAC地址,以及协议类型。通过这些信息可以决定该包是否有效、将包交给哪个高层协议处理等。 3、ARP及PING的实现 ARP即 “地址解析协议”,本质是完成32位IP地址到以太网48位物理地址的映射。考虑到51单片机资源有限,ARP协议实现了学习、老化、更新、溢出等算法。 PING程序所用到的协议为ICMP协议。完整ping过程主要用4个函数实现。Ping请求(PingRequest())、Ping应答(PingAnswer())、收到应答后回显(PingEcho())、定时操作(PingCycle()),各个函数的功能如图6所示. ???? 图6 A ping B过程 PingRequest完成Ping请求。当输入Ping命令后,调用此函数,发出请求包。PingAnswer完成Ping应答。它工作在后台,每当收到发给自己IP的请求包就自动应答。PingEcho显示应答信息。每当收到应答就立即显示相关信息。PingCycle定时操作pingbuf记录缓冲区。每100毫秒钟扫描一次,并根据当前情况和状态进行状态变迁。 图7 pingbuf记录缓冲区格式 在发出Ping命令后,为了不使处理器一直在等待回应而浪费CPU资
显示全部
相似文档