新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 以太网控制器接□模块的程序设计

以太网控制器接□模块的程序设计

作者:时间:2011-07-20来源:网络收藏

1.软件开发流程   

由于数据帧最大为1518字节,而单片机PIC 16F877的内存容量只有368字节,因此就要利用接 口控制器RTL8019AS内置的16KB的SRAM,用作接收缓收区,并且单片机PlC16F877仅传输和处理数据报的有用 部分。在接收处理时,不使用中断方式,而采用轮询(Polling)方式,其帧接收流程为图1所示。

图1 帧接收流程图   (1)流程说明。

帧接收流程完成NIC初始化后,主程序始终等待是否有数据帧到达,当收到数据帧后,判别接收帧的类型 字段,如果是0806h,转入ARP接收处理;如果是0800h就转入IP接收处理。

如果是发给自己的ARP请求,则生成ARP应答交链路层装帧后发送,否则丢弃;若经判断数据帧为发给自己 的P数据报,则将IP数据报交IP协议处理。

在IP协议处理中要对ICMP和rap报文进行区分,交各自的协议处理。当rap或ICMP协议有数据需要发送时, 则通知P层,IP协议将待发数据进行封装,然后交给链路层装帧发送。对其他数据报没有必要应答,仍然继 续轮询。

接口控制器RTL8019AS的接收缓冲区大约有14KB,但实际上,数据是以256字节为上限(作为一帧) 写入的,假设1页中写入1帧(256字节),最大的缓冲容量为58个帧。一旦发生缓冲区溢出,程序将对以太 网接口控制器RTL8019AS重置,这期间接收的数据帧将全部废弃扔掉。一旦发生溢出,使用上层协议的超时等来保证其可靠性。

(2)初始化过程。

①从内置E2PROM中将必要的数据拷贝至RAM中。在Remote LO画面中,即使改变IP Address或Port号,如果不进行重置,其变更值不会生效。

②如果液晶显示器的端口号不是0的话,将对液晶显示器进行初始化。该过程大概需要数十毫秒的时间。

③对RTL8019AS的RSTDRV端进行RESET,大概需要数毫秒完成该动作。这期间,   RTL8019AS读取93C46的CONFIG1ˉCONFIG4。

④PIC经8019AS从93C46中读MAC地址。

⑤将MAC地址写入8019AS内的寄存器中,8019AS的初始化完毕。

⑥检查JP2,转入普通模式或辅助程序模式。

⑦在普通模式的最初,判别是否有取P地址(IP=0.0.0.0)的必要,如果必要,在DHCP服务器中,使用广播通信方式将DHCP协议中的DISCOVER信息送出。

上述处理完后,进入帧接收处理状态。

  初始化过程如图2~图7所示。

图2 将必要的数据拷贝到RAM   图3 将8019重置,读CONFIG寄存器   

图4 取MAC地址

图5 将MAC地址写入PAR寄存器    图6 检查动作方式   图7 如果是DHCP的话,发出DISCOVER   

(3)协议处理程序。

①ARP协议处理。



评论


相关推荐

技术专区

关闭