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所示。
上一篇:ARM嵌入式系统的数据采集传输系统研究+源程序
下一篇:有限元方法在波导计算的应用仿真

基于VC的分层AltaRica故障建模和分析

单片机的环境参数检测仪的设计+电路图

STC89C51单片机便携式环境检...

Matlab离散时间网络化控制系统故障检测策略

MATLAB动车组转向架轴承故障的分析与诊断仿真

MATLAB重载货运列车滚动轴承故障振动信号分析

国产ELF系列CPLD开发板设计...

中国古代秘书擅权的发展和恶变

拉力采集上位机软件开发任务书

浅谈新形势下妇产科护理...

辩护律师的作证义务和保...

《醉青春》导演作品阐述

谷度酒庄消费者回访调查问卷表

多元化刑事简易程序构建探讨【9365字】

国内外无刷直流电动机研究现状

高校网球场馆运营管理初探【1805字】

浅谈传统人文精神茬大學...