DM9161芯片硬件部分不过多介绍,说一下网口模块的驱动程序设计。
网络中的计算机与终端间要想正确的传送信息和数据,必须在数据传输的顺序、数据的格式及内容等方面有一个约定或规则,这种约定或规则称做协议。在实际的网络中使用最多的就是TCP/IP协议。
应用层 Telnet FTP SMTP DNS 其他
传输层 TCP UDP
网际互联层 IP ICMP IGMP ARP RARP
网络接口层 由底层网络定义的协议
图2.3 TCP/IP协议族层次结构
如图2.3所示,TCP/IP协议被组织成四个概念层,从下往上看分为网络接口层、网际互联层、传输层、应用层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。TCP/IP四层参考模型的每层都有相应的协议来保证数据的正确传送。
DM9161网口模块驱动程序是按照TCP/IP四层参考模型编写的,每层都采用了TCP/IP协议,其实现框图如图2.4所示。
图2.4 DM9161网口模块驱动实现框图
当AT91SAM9G20收到一个数据包,首先判断是不是ARP请求,如果是则回复ARP请求,否则判断是什么类型的IP包,如果是UDP包,则进行解包,送到应用程序处理;如果是ICMP包,则进行相应的处理。
2.4.1网络接口层
(1)AT91RM9200的EMAC模块配置 图2.5 EMAC模块功能框图
由于AT91RM9200集成10/100Base-T型以太网接口,它与IEEE802.3u标准兼容,因此只需配置好AT91RM9200的EMAC模块相关寄存器,就能实现以太网数据帧的传输。 EMAC模块配置过程如下:
①开启AT91RM9200的EMAC外设时钟。
②配置EMAC相关的PIO口,使它们处于外设A模式。
③写EMAC PHY文护寄存器,读DM9161状态寄存器值,得到网络连接状态。
④配置EMAC配置寄存器和MAC地址。
⑤分配发送缓冲区和接收缓冲区,设置EMAC接收缓冲队列指针寄存器。
(2)发送数据帧
AT91RM9200发送数据帧首先对EMAC发送状态寄存器(ETH_TSR)的发送结束标志位写l,清除该标志位;接着把待发送数据包的地址载入发送地址寄存器(ETH_TAR),把待发送数据包的长度载入发送控制寄存器(ETH_TCR),EMAC自动开始发送,最后判断EMAC发送状态寄存器的发送完成标志位,等待发送完毕。其流程图如图2.6所示。
图2.6 EMAC发送数据帧流程图
(3)接收数据帧
当接收到一个或者多个数据帧时,AT91RM9200把EMAC接收状态寄存器(ETH_RSR)的帧接收位置为1,对帧接收位写l,可以清除该标志位。此时,EMAC已经把收到的数据帧复制到存储器中,起始地址为EMAC接收缓冲队列指针寄存器中的值。然后对数据进行解包,判断协议类型,并将包送到对应的处理程序。其流程图如图2.7所示。
图2.7 EMAC接收数据帧流程图
2.4.2 网际互联层
(1)ARP协议
在以太网中,一个网络设备要和另一个网络设备进行直接通信,除了知道目标设备的网络层逻辑地址外,还要知道目标设备的物理地址。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
当一个网络设备需要和另一个网络设备通信时,源设备没有获得与目标IP地址相对应的MAC地址信息,则源设备以广播的形式发送ARP请求报文,在ARP请求报文中包含了源设备与目标设备的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。ARP报文格式如图2.8所示。 电路板故障检测仪软件设计仿真+流程图(5):http://www.youerw.com/tongxin/lunwen_2634.html