以太网控制器接□模块的程序设计
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协议处理。
- 基于S3C44B0X+μcLinux的嵌入式以太网设计(07-08)
- TM1300 DSP系统以太网接口的设计(03-07)
- 工业级特性在嵌入式处理中至关重要(05-08)
- 基于VxWorks的双端口网卡智能双冗余驱动(07-01)
- 基于μC/OS-II和TCP/IP协议的多串口服务器(08-23)
- 基于DSP/FPGA的以太网控制器的运动控制器设计(02-06)