wandabing_论文

更新时间:2024-06-12 08:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

大连海事大学

毕 业 论 文

┊┊┊┊┊┊┊

装┊┊┊┊┊┊┊订┊┊┊┊┊┊┊线┊┊┊┊┊┊┊

二○一○年六月

基于嵌入式系统的网卡驱动实现

专业班级: 电子商务 2006-1 班

姓 名: 万 大 兵

指导教师: 薛 大 伸

交通运输管理学院

中文摘要

摘 要

当今,随着互联网高速的发展,信息化时代已经到来,给人们的生活带来了极大的便利。致使我们的生活已经离不开网络了。物物相连必定需要网络参与,我们必须解决好数据在网络之间的传输问题才能发挥物联网的巨大作用。

本文通过对网络的结构介绍,了解数据在网络上基本走向。当网卡接受到网络的数据后是如何对数据进行处理的。网卡与数据的通信在这里主要是通过SPI接口。必须理解SPI原理网络的基本结构和特征,网卡控制器的内部结构,数据传输的原理。通过对一些基本概念和原理的理解和分析,最终实现网卡的驱动功能。解决数据在接受和发送端内部的处理。从而为上层应用提供一个接口.

最后通过一个实例,结合原理完成一个嵌入式网卡驱动的实现,软件开发环境介绍和应用,从概要设计到详细设计,编码。

关键词:物联网;网卡控制器;SPI通信;网卡驱动;嵌入式系统

英文摘要

Abstract

Today, with the development of high-speed Internet, the information era has come to people's lives has brought great convenience. Cause our life has been inseparable from the links. Are connected to the network properties will need to participate, we must solve the data transmission problems between the network can play a huge role in Internet of things.

This paper describes the structure of the network to understand the basic trend of the data on the network. When the card receives the network data is how the data processing. And data communications network card here mainly through the SPI interface to. SPI must understand the basic principles of network structure and characteristics of the internal structure of the controller card, the principle of data transmission. Through some basic concepts and principles of understanding and analysis, and ultimately the network card driver functionality. Solve the data receiving and processing within the transmitter. So as to provide an interface to the upper application.

Finally, an example of combining theory to complete the realization of an embedded network card driver, introduction and application software development environment, from outline design to detailed design, coding.

Keywords: Internet of Things; Card controller; SPI communication; Network driver; Embedded systems

目录

目录

1.

绪 论 ............................................................................................................................... 1 1.1. 问题的提出及研究背景 ........................................................................................... 1

1.1.1. 物联网概念的提出与发展 ............................................................................... 1 1.1.2. 嵌入式系统的概念与发展 ............................................................................... 1 1.1.3. 课题的提出 ....................................................................................................... 2 1.2. 本文研究目的及其意义 ........................................................................................... 2 1.3. 论文的基本结构 ....................................................................................................... 3 2. 解决问题的理论和方法 ................................................................................................... 4

2.1. 网络基本知识 ........................................................................................................... 4

2.1.1. OSI七层结构 .................................................................................................... 4 2.1.2. 以太网和IEEE 802封装 ................................................................................. 5 2.2. SPI通信原理 ............................................................................................................ 6

2.2.1. SPI的基本概念 ................................................................................................ 6 2.2.2. SPI的通信原理[5] .......................................................................................... 6 2.2.3. SPI传输数据的时序 ........................................................................................ 7 2.2.4. SPI指令集 ........................................................................................................ 7 2.3. 网卡控制器 ............................................................................................................... 8

2.3.1. 网卡基本概念 ................................................................................................... 8 2.3.2. 网卡接口的种类 ............................................................................................... 8 2.3.3. 以太网控制器 ................................................................................................... 9 2.3.4. 以太网控制器基本结构 ................................................................................... 9 2.3.5. 网卡的功能 ..................................................................................................... 10

3. 解决问题的一个实例 ..................................................................................................... 12

3.1. 网卡的硬件架构(MB96338 + ENC28J60) ......................................................... 12 3.2. 底层驱动程序的实现 ............................................................................................. 12

3.2.1. 概要设计 ......................................................................................................... 12 3.2.2. 详细设计 ......................................................................................................... 16 3.3. 编译与测试 ............................................................................................................. 29

3.3.1. 编译环境 ......................................................................................................... 29 3.3.2. 网卡驱动编译 ................................................................................................. 29

4. 总结与展望 ..................................................................................................................... 30 参考文献......................................................................................................................................... 31 致 谢......................................................................................................................................... 32

基于嵌入式系统网卡驱动的实现

对等的网络层使用网络层协议通信。当实际上只有两个物理层之间才通过媒体进行真正的数据通信。

当通信实体通过一个通信子网进行通信时,必然会经过一些中间节点,通信子网中的节点只涉及到低三层的结构.在OSI/RM中系统间的通信信息流动过程如下:发送端的各层从上到下逐步加上各层的控制信息构成的比特流传递到物理信道,然后再传输到接收端的物理层,经过从下到上逐层去掉相应层的控制住信息得到的数据流最终传送到应用层的进程。 Internet的体系结构

Internet是由无数不同类型的服务器,用户终端以及路由器,网关,通信线路等连接组成,不同网络之间,不同类型设备之间要完成信息的交换,资源的共享需要有功能强大的网络软件的支持,TCP/IP就是能够完成互联网这些功能的协议集。

2.1.2. 以太网和IEEE 802封装

以太网这个术语一般是指数字设备公司( Digital Equipment Corp.)、英特尔公司( I n t e l C o r p .)和X e r o x公司在1 9 8 2年联合公布的一个标准。它是当今T C P / I P采用的主要的局域网技术。它采用一种称作C S M A / C D的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。几年后, I E E E(电子电气工程师协会) 8 0 2委员会公布了一个稍有不同的标准集,其中8 0 2 . 3针对整个C S M A / C D网络,8 0 2 . 4针对令牌总线网络, 8 0 2 . 5针对令牌环网络。这三者的共同特性由8 0 2 . 2标准来定义,那就是8 0 2网络共有的逻辑链路控制( L L C)。不幸的是,8 0 2 . 2和8 0 2 . 3定义了一个与以太网不同的帧格式。文献[Stallings 1987]对所有的IEEE 802标准进行了详细的介绍。在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984]中定义的,IEEE 802网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988]中定义的。主机需求R F C要求每台I n t e r n e t主机都与一个10 Mb/s的以太网电缆相连接:

1) 必须能发送和接收采用RFC 894(以太网)封装格式的分组。

2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。

3) 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。

- 5-

2. 解决问题的理论和方法

2.2. SPI通信原理

2.2.1. SPI的基本概念

SPI(Serial Peripheral Interface,串行外围设备接口):是Motorola公司推出的一种同步串行通讯方式,采用四线同步总线传输数据。在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。

2.2.2. SPI的通信原理[5]

SPI主要是以主从方式工作的,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是:

SDO(数据输出) – 主设备数据输出,从设备数据输入; SDI(数据输入) – 主设备数据输入,从设备数据输出; SCLK(时钟) – 时钟信号,由主设备产生;

CS(片选)– 从设备使能信号,由主设备控制。

其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同

- 6-

基于嵌入式系统网卡驱动的实现

样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

2.2.3. SPI传输数据的时序

数据是否能够正确的发送和接受关键在于接收与发送的时机是否恰当。可能还没有片选发送的从机,我们就已经迫不及待的将数据写到发送寄存器中了。以为数据发送完了有时恰好发送完第二字节的数据时,从机才认为收到的是第一字节数据。所以我们必须搞清楚他们通信的时序。

SPI是一个环形总线结构,由CS、SCK、SDI、SDO构成,其时序主要是在SCK的控制下,两个双向移位寄存器进行数据交换。假设现在有一字节数据(01010101)写进8位发送寄存器中,上升沿发送、下降沿接收、高位先发送。

那么第一个上升沿来的时候 数据将会是SDI=0;寄存器中的01010101左移一位,后面补入送来的一位未知数x,成了0101010x。下降沿到来的时候,SDI上的电平将锁存到寄存器中去,那么这时寄存器=0101010SDI,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成了一个SPI时序。

2.2.4. SPI指令集

主控制器访问网卡主要是通过SPI对网卡写相应的命令,然后通过SPI把需要访问的数据传给主控制器,或者主控制把自己的数据写给网卡。怎样才能区分这些操作呢?所以我们必须规定特定指令去区分所做的事。ENC28J60 所执行的操作完全依据外部主控制器通过SPI 接口发出的命令。 这些命令为一个或多个字节的指令,用于访问控制存储器和以太网

- 7-

2. 解决问题的理论和方法

缓冲区。 指令至少包含一个3 位操作码和一个用于指定寄存器地址或数据常量的5 位参数。 写和位域指令后还会有一个或多个字节的数据。

2.3. 网卡控制器

2.3.1. 网卡基本概念

NIC (Network Interface Card,网卡)是计算机局域网中最重要的连接设备,计算机主要通过网卡连接网络.在网络中,网卡的工作是双重的:一方面它负责接收网络上传过来的数据包,解包后,将数据通过主板上的总线传输给本地计算机;另一方面它将本地计算机上的数据打包后送入网络。

2.3.2. 网卡接口的种类

RJ-45接口:这是最为常见的一种网卡,也是应用最广的一种接口类型网卡,这主要得益于双绞线以太网应用的普及。因为这种RJ-45接口类型的网卡就是应用于以双绞线为传输介质的以太网中,它的接口类似于常见的电话接口RJ-11,但RJ-45是8芯线,而电话线的接口是4芯的,通常只接2芯线(ISDN的电话线接4芯线)。在网卡上还自带两个状态批示灯,通过这两个指示灯颜色可初步判断网卡的工作状态。

BNC接口:这种接口网卡对应用于用细同轴电缆为传输介质的以太网或令牌网中,目前这种接口类型的网卡较少见,主要因为用细同轴电缆作为传输介质的网络就比较少。 AUI接口:这种接口类型的网卡对应用于以粗同轴电缆为传输介质的以太网或令牌网中,这种接口类型的网卡目前更是很少见。

FDDI接口:这种接口的网卡是适应于FDDI(光纤分布数据接口)网络中,这种网络具有100Mbps的带宽,但它所使用的传输介质是光纤,所以这种FDDI接口的接口也是光纤接口的。随着快速以太网的出现,它的速度优越性已不复存在,但它须采用昂贵的光纤作为传输介质的缺点并没有改变,所以目前也非常少见。

ATM接口:这种接口类型的网卡是应用于ATM(异步传输模式)光纤(或双绞线)网络中。它能提供物理的传输速度达155Mbps。

- 8-

基于嵌入式系统网卡驱动的实现

2.3.3. 以太网控制器

以太网是Xerox公司发明的基带LAN标准。它采用带冲突检测的载波监听多路访问协议(CSMA/CD),速率为10Mbps,传输介质为同轴电缆。以太网是在20世纪70年代为解决网络中零散的和偶然的堵塞而开发的,而IEEE802.3标准是在最初的以太网技术基础上于1980年开发成功的。现在,以太网一词泛指所有采用CSMA/CD协议的局域网。以太网2.0版由数字设备公司、Intel公司和Xerox公司联合开发,它与IEEE802.3兼容。以太网和IEEE802.3通常由接口卡(网卡)或主电路板上的电路实现。以太网电缆协议规定用收发器将电缆连到网络物理设备上。收发器执行物理层的大部分功能,其中包括冲突检测及收发器电缆将收发器连接到工作站上。

IEEE802.3提供了多种电缆规范,10Base5就是其中的一种,它与以太网最为接近。在这一规范中,连接电缆称作连接单元接口(AUI),网络连接设备称为介质访问单元(MAU)而不再是收发器。

以太网数据的发送有以下两种方式:

半双工:它的意思是虽然网卡可以接收发送数据,但是一次只能做一种动作,不能同时收发。

全双工:就是能够\同时\接收与发送信号,譬如电话就是一种全双工传输设备,我们在听对方讲话的同时,也可以发话给对方。理论上,全双工传输可以提高网络效率,但是实际上仍是配合其他相关设备才有用。例如必须选用双绞线的网络缆线才可以全双工传输,而且中间所接的集线器(HUB),也要能全双工传输;最后,所采用的网络操作系统也得支持全双工作业,如此才能真正发挥全双工传输的威力。

注意:不同的网卡对可以根据配置的不同而选择,但有些网卡不支持双工模式自适应,不能根据与之相连的设备的传输方式和速度,自动的改变自己的传输模式而适应数据的传输。

2.3.4. 以太网控制器基本结构

我们可以看看以太网控制器(ENC28J60)的结构:

- 9-

2. 解决问题的理论和方法

图2.1 以太网内部结构 Fig. 2.1 Ethernet internal structure

其核心内容是由三大块寄存器组成:

控制寄存器 -- 控制寄存器提供主控制器和片内以太网控制器逻辑电路之间的主要接口。 写这些寄存器可控制接口操作,而读这些寄存器则允许主控制器监控这些操作。控制寄存器存储空间分为四个存储区,可用ECON1 寄存器中的存储区选择位BSEL1:BSEL0进行选择。 每个存储区都是32 字节长,可以用5 位地址值进行寻址。所有存储区的最后五个单元(1Bh 到1Fh)都指向同一组寄存器:EIE、EIR、ESTAT、ECON2 和ECON1。 它们是控制和监视器件工作的关键寄存器,由于被映射到同一存储空间,因此可以在不切换。

存储区的情况下很方便地访问它们。

以太网缓冲器 -- 以太网缓冲器包含供以太网控制器使用的发送和接收存储器。该缓冲器大小为8 KB,分成单独的接收和发送缓冲空间。 主控制器使用SPI 接口可以对发送和接收存储器的容量和位置进行编程。

PHY 寄存器 -- PHY 寄存器提供PHY 模块的配置和控制功能,以及操作的状态信息。 所有PHY寄存器都为16 位宽。 共有32个PHY 地址单元,但只可使用其中的9 个。对未用单元的写操作无效,而读操作将返回0。所有保留单元应写为0,当读取时其内容被忽略。与ETH、MAC 和MII 控制寄存器或缓冲器不同, PHY寄存器不能通过SPI 控制接口直接访问,而是通过一组带有MIIM (Media Independent Interface for Management)的特殊MAC 控制寄存器来访问的。这些控制寄存器被称为MII 寄存器。

2.3.5. 网卡的功能

网卡上面装有处理器和存储器(包括RAM和ROM)。网卡和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的。而网卡和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行。因此,网卡的一个重要功能就是要进行串行/并行转换。由于

- 10-

基于嵌入式系统网卡驱动的实现

网络上的数据率和计算机总线上的数据率并不相同,因此在网卡中必须装有对数据进行缓存的存储芯片。

在安装网卡时必须将管理网卡的设备驱动程序安装在计算机的操作系统中。这个驱动程序以后就会告诉网卡,应当从存储器的什么位置上将局域网传送过来的数据块存储下来。网卡还要能够实现以太网协议。

网卡并不是独立的自治单元,因为网卡本身不带电源而是必须使用所插入的计算机的电源,并受该计算机的控制。因此网卡可看成为一个半自治的单元。当网卡收到一个有差错的帧时,它就将这个帧丢弃而不必通知它所插入的计算机。当网卡收到一个正确的帧时,它就使用中断来通知该计算机并交付给协议栈中的网络层。当计算机要发送一个IP数据报时,它就由协议栈向下交给网卡组装成帧后发送到局域网。

随着集成度的不断提高,网卡上的芯片的个数不断的减少,虽然现在个厂家生产的网卡种类繁多,但其功能大同小异。网卡的主要功能有以下三个:

1.数据的封装与解封:发送时将上一层交下来的数据加上首部和尾部,成为以太网的帧。接收时将以太网的帧剥去首部和尾部,然后送交上一层;

2.链路管理:主要是CSMA/CD(Carrier Sense Multiple Access with Collision Detection ,带冲突检测的载波监听多路访问)协议的实现; 3.编码与译码:即曼彻斯特编码与译码。

- 11-

3. 解决问题的一个实例

3. 解决问题的一个实例

3.1. 网卡的硬件架构(MB96338 + ENC28J60)

MB96338控制器[1]是富士通芯片商生产的一款16位处理器的内核,在16位处理器中功能较强,支持USB,I2C,CAN,SPI等通信,但没有内置以太网模块,为了能够实现上网,我们可以外连一个ENC28J60(美国微芯科技公司制造的28引脚独立以太网控制器),它集成MAC 和10 BASE-T PHY。

ENC28J60 由七个主要功能模块组成:

SPI 接口——充当主控制器和ENC28J60 之间通信通道。 控制寄存器——用于控制和监视ENC28J60。 双端口RAM缓冲器——用于接收和发送数据包。

判优器——当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制。 总线接口——对通过SPI 接收的数据和命令进行解析。

MAC (Medium Access Control)模块——实现符合IEEE 802.3 标准的MAC 逻辑。 PHY(物理层)模块——对双绞线上的模拟数据进行编码和译码。

该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。

3.2. 底层驱动程序的实现

3.2.1. 概要设计

在TCPIP协议栈中,驱动层主要是传输数据的,数据从一台设备通过网络传输到另一个设备。为TCPIP栈发送,接受数据提供接口。如何实现呢?主要是通过设置网卡中的一些特定的寄存器。对缓冲器,PHY寄存器,MAC寄存器的读和写。内部和外部的接口之间的关系如下:

- 12-

基于嵌入式系统网卡驱动的实现

数据处理InPutOutPutsend_Packetreceive_Packetwrite_ENC28J60_Bufferread_ENC28J60_Bufferwrite_ENC28J60read_ENC28J60write_ENC28J60_cmdset_ENC28J60_Bankread_ENC28J60_cmdSPI_InitENC28J60_Initwrite_ENC28J60_Phy 图3.1 函数接口关系

Fig. 3.1 The relationship between function interfaces

初始化SPI口:设置SPI相关寄存器,使其可以与enc28j60数据传输格式相匹配。 初始化接收缓冲器:在接收数据包前,必须编程ERXST和ERXND指针来对接收缓冲器进行初始化;12所有未被用作接收缓冲器的存储空间都作为发送缓冲器。要发送的数据应写入未使用的空间。但在发送完一个数据包后,硬件会在存储器中数据包最后一个字节后写入一个7字节的状态向量。因此主控制器应在接收缓冲器的开始和每个包之间预留至少7个字节。不需要对发送缓冲器进行特定的初始化。

初始化发送缓冲器:应通过写ERXFCON寄存器使能或禁止相应的接收过滤器。 初始化等待OS:如果在上电复位后立即执行初始化,应查询ESTAT.CLKRDY位,确保在开始修改MAC和PHY寄存器前已经过足够的时间。

初始化MAC:在初始化过程中需要配置一些MAC寄存器。这些寄存器只需配置一次。 初始化PHY:对3个PHY模块寄存器中的位进行配置,已实现不同功能。

读PHY 寄存器

读PHY 寄存器可以获取其完整的16 位值。主要的操作步骤如下:

- 13-

3. 解决问题的一个实例

1. 将要读取的PHY 寄存器的地址写入MIREGADR寄存器;

2. 将MICMD.MIIRD 置1 开始读操作,同时MISTAT.BUSY 位置1。

3. 等待10.24 ?s。查询MISTAT.BUSY 位以确定操作是否完成。 当忙时,主控制器不应开始任何MIISCAN 操作或写MIWRH 寄存器。当MAC 得到寄存器内容时,BUSY 位会自动清零; 4. 将MICMD.MIIRD 位清零;

5. 从MIRDL 和MIRDH 寄存器中读取所需数据。先读哪一个寄存器都可以。

写PHY 寄存器

当写PHY 寄存器时,将一次写入全部的16 位数据,不能对位进行写操作。 如果只需要重新编程寄存器中的某几位,控制器必须首先读PHY 寄存器,修改读到的数据,然后将数据写回PHY 寄存器。主要的操作步骤如下:

1. 将要写入的PHY 寄存器的地址写入MIREGADR寄存器。 2. 将数据的低8 位写入MIWRL 寄存器。

3. 将数据的高8位写入MIWRH寄存器。 对MIWRH寄存器的写操作会自动启动MII 事务,所以必须在写入MIWRL 后才能写入该寄存器。MISTAT.BUSY 位置1。在MII 操作完成后写PHY 寄存器,用时10.24 ?s。当写操作完成后,BUSY 位将自动清零。 在忙时主控制器不应开始MIISCAN 或MIIRD 操作。

读缓冲存储器命令

读缓冲存储器(Read Buffer Memory,RBM)命令允许主控制器从8 KB 发送和接收缓冲存储器中读取字节。如果ECON2 寄存器中的AUTOINC 位置1,那么在读完每个字节的最后一位之后, ERDPT 指针将会自动地递增指向下一个地址。 正常情况下下一个地址为当前地址加1。 然而,如果读取了接收缓冲器中的最后一个字节(ERDPT = ERXND),则ERDPT 指针将转而指向接收缓冲器的起始单元。 这样主控制器可以从接收缓冲器中连续读取数据包,而无须跟踪何时需要折回。当读取地址1FFFh 时, 如果AUTOINC 被置1,且ERXND没有指向该地址时,则读指针将递增并折回到0000h。具体的步骤如下:

1. 将CS 引脚拉为低电平启动RBM 命令;

2. 将RBM 操作码及随后的5 位常量1Ah 发送给ENC28J60;

3. 读出缓冲存储器中的数据,在发送 RBM 命令和常量后,由ERDPT 指向的存储器

中的数据将从SO 引脚移出,首先移出最高位。 如果主控制器继续在SCK 引脚提供时钟信号,而没有拉高CS 的电平,ERDPT 指向的字节将再次从SO 引脚移出,同样首先移出最高位。当AUTOINC 被使能时,使用该方式就可以连续地从缓冲存

- 14-

基于嵌入式系统网卡驱动的实现

储器中顺序读取字节而无需多余的SPI 命令。

拉高CS 引脚电平可以结束RBM 命令。

写缓冲器命令

写缓冲存储器(Write Buffer Memory, WBM)命令允许主控制器将字节写入 8KB 发送和接收缓冲存储器。如果ECON2 寄存器中的AUTOINC 位置1,那么在写完每个字节的最后一位之后,EWRPT 指针将会自动地递增指向下一个地址(当前地址加1)。 如果写入地址1FFF 且AUTOINC 置1,则写指针加1 指向0000h。具体的步骤如下:

1. 将CS 引脚拉为低电平启动WBM 命令;

2. 将WBM操作码及随后的5 位常量1Ah 送入ENC28J60;

3. 把要写进缓冲区的数据送到发送寄存器中;在发送WBM 命令和常量之后,EWRPT

指向的存储器中的数据将移入ENC28J60,首先移入最高位。 在接收到8个数据位后,如果AUTOINC 置1,写指针将自动递增。主控制器可以继续在SCK 引脚提供时种信号、在SI 引脚发送数据同时保持CS 为低电平,从而可以连续写入存储器。 当AUTOINC 被使能时,以该方式就可以连续地向缓冲存储器写入字节而无需多余的SPI 命令。

4. 拉高CS 引脚电平可以结束RBM 命令。

读控制寄存器的命令

读控制寄存器(Read Control Register,RCR)命令允许主控制器随意读取ETH、MAC 和MII 寄存器。通过特殊的MII 寄存器接口可以读取PHY 寄存器的内容:

1. 将CS 引脚拉为低电平启动RCR 命令。

2. 将RCR 操作码和随后的5 位寄存器地址(A4 到A0)发送给ENC28J60; 3. 读控制寄存器的内容; 5 位地址决定将使用当前存储区中32 个控制寄存器中的

哪一个。 如果5 位地址指向的是一个ETH寄存器,那么选定寄存器中的数据会立即开始从SO 引脚移出,最高位在前。如果地址指向了一个MAC 或MII 寄存器,则首先从SO引脚移出一个无效数据字节,随后从SO引脚移出数据,最高位在前。 4. 通过拉高CS 引脚的电平可结束RCR 操作。

写控制寄存器的命令

写控制寄存器(Write Control Register,WCR)命令允许主控制器以任何次序写入ETH、MAC 和MII 控制寄存器。通过特殊的MII 寄存器接口对PHY 寄存器执行写操作。主要的操作步骤如下:

1. 将CS 引脚拉为低电平启动WCR 命令。

- 15-

3. 解决问题的一个实例

2. 将WCR操作码及随后的5 位地址(A4 到A0)发送给ENC28J60;

3. 把要写的数据放到发送寄存器中; 5 位地址决定要使用当前存储区中32 个控

制寄存器中的哪一个。在发送WCR 命令和地址后,发送要实际写入的数据,首先发送最高位。 在SCK 的上升沿,数据被写入目标寄存器。拉高CS 引脚的电平可结束WCR 操作。 如果在装载8个位前,CS 线变为高电平,则将中止这个数据字节的写操作。

3.2.2. 详细设计 1) 文件说明

表 3.1 文件一览表

Table 3.1 List of documents

文件名 enc28j60.c 与网卡相关的操作和函数定义 描述 enc28j60.h 与网卡相关的宏定义和函数声明

2) 函数一览表

表 3.2 函数一览表

Table 3.2 Function List 文件名 函数简称 F1_1 F1_2 F1_3 F1_4 F1_5 enc28j60.c F1_6 F1_7 F1_8 F1_9 函数名 ENC28J60_Init write_ENC28J60_Phy read_ENC28J60_Buffer read_ENC28J60_cmd read_ENC28J60 set_ENC28J60_Bank write_ENC28J60 类型 接口 内部 内部 内部 内部 内部 内部 网卡初始化 概要 读PHY寄存器 读缓存器 读控制寄存器 切换Bank时读控制寄存器 切换Bank区 切换Bank时写控制寄存器 些缓存区 写控制寄存器 接收数据包 发送数据包 write_ENC28J60_Buffer 内部 write_ENC28J60_cmd 内部 接口 接口 F1_10 receive_Packet F1_11 send_Packet 3) 函数调用关系

- 16-

基于嵌入式系统网卡驱动的实现

└─F1_10 ├─F1_3 │ └─F1_5 │ └─F1_4 │ └─F1_6 │ └─F1_7 │ └─F1_9 │ └─F1_6 └─F1_11 ├─F1_8 │ └─F1_7 图3.2 函数调用关系

Figure 3.2 The relationship between function call

4) 宏定义

表3.3 使用宏定义一览表

Table 3.3 List of use of macro definitions

值 宏名 描述 SUCCESS FAILED INT8U INT16U

5) 数据结构

- 17-

0x01 0x00 unsigned char unsigned short 函数调用成功返回值 函数调用失败返回值 八位无符号数 十六位无符号数 3. 解决问题的一个实例

表 3.4 数据类型一览表

Table 3.4 List of data types 类型名 Struct BUF{ BUF * B_Next; INT16U B_Len; Void *B_Data ; INT8U B_Type ;} INT8U MACADDR[6]

6) 函数设计

表 3.5 receive_Packet函数

描述 B_Next用于指向下一段数据缓存。 B_Len用于记录本段缓存中数据长度。 B_Data用于记录本段数据的开始位置。 用于记录数据报头类型。 存储6字节的本机MAC地址 Table 3.5 receive_Packet function 函数名称 void receive_Packet(INT8U * packet, INT32U maxlen); 参数 参数类型 COMMENT INPUT packet INT8U * 参数列表 INPUT maxlen INT32U 返回值 void void 全局变量 无 接收数据包 1、允许中断,允许接收 2、判断接收缓存器中是否还有数据包 功能说明 3、接收数据包 4、将接收到的数据包存入BUF 5、释放接收缓存区 制约和注接收缓存区来了一个数据包以后,会将/INT引脚拉低,可通过读/INT意事项 引脚状态判断接收缓存区是否有需要接收的数据包。 异常处理 无

表 3.6 send_Packet函数

Table 3.6 send_Packet function

函数名称 参数列表 返回值 功能说明 制约和注意事项 异常处理 void send_Packet(INT8U * packet, INT32U len) 参数 参数类型 COMMENT packet INT8U * INPUT len INT32U INPUT Void Void 1、编程指向发送缓存区中未用单元;2、写入包控制字节; 3、按顺序以字节为单位发送数据;4、释放数据包占用的BUF; 5、设置寄存器,开始发送数据包。 网络接口层调用此函数,需给定数据包头指针 无 - 18-

基于嵌入式系统网卡驱动的实现

表 3.7 ENC28J60_Init函数

Table 3.7 ENC28J60_Init function 函数名称 void ENC28J60_Init(void); 参数 参数类型 COMMENT 参数列表 Void Void 返回值 Void Void 功能说明 初始化网卡 制约和注无 意事项 异常处理 无 函数流程参见链接 6.9.12 图

表 3.8 SPI_Init函数

Table 3.8 SPI_Init function 函数名称 void SPI_Init(void); 参数 参数类型 COMMENT 参数列表 void void 返回值 void void 功能说明 初始化SPI 制约和注无 意事项 异常处理 无

表 3.8 read_ENC28J60_Buffer函数 Table 3.8 read_ENC28J60_Buffer function

函数名称 参数列表 返回值 功能说明 制约和注意无 事项 异常处理 无 函数流程图 参见链接read_ENC28J60_Buffer

- 19-

void read_ENC28J60_Buffer(INT16U len, INT8U * data) 参数 参数类型 COMMENT len INT16U INPUT data INT8U * INPUT void void 读以太网卡缓冲中的数据

3. 解决问题的一个实例

表 3.10 write_ENC28J60_Buffer函数

函数名称 void write_ENC28J60_Buffer(INT16U len, INT8U * data) 参数 参数类型 COMMENT len INT16U INPUT 参数列表 data INT8U * INPUT 返回值 void void 功能说明 向发送缓存区写入一字节数据 制约和注需使用SPI口,故操作前需配置好SPI 意事项 异常处理 无 函数流程参见链接write_ENC28J60_Buffer 图

write_ENC28J60

表 3.11 write_ENC28J60函数 Table 3.10 write_ENC28J60 function

函数名称 void write_ENC28J60(INT8U address, INT8U data) 参数 参数类型 COMMENT address INT8U 八位寄存器地址 参数列表 data INT8U 要写的数据 返回值 void void 功能说明 向寄存器写入一字节数据 制约和注需使用SPI口,故操作前需配置好SPI 意事项 异常处理 无 函数流程参见链接write_ENC28J60 图

表 3.12 read_ENC28J60函数 Table 3.12 read_ENC28J60 function

函数名称 参数列表 返回值 功能说明 制约和注意需使用SPI口,故操作前需配置好SPI 事项 异常处理 无 函数流程图 参见链接read_ENC28J60 INT8U read_ENC28J60(INT8U address) 参数 参数类型 COMMENT address INT8U 寄存器地址 — INT8U 读出的数 读控制寄存器 - 20-

基于嵌入式系统网卡驱动的实现

表 3.13 read_ENC28J60_cmd函数

Table 3.13 read_ENC28J60_cmd function

函数名称 INT8U read_ENC28J60_cmd(INT8U cmd, INT8U address) 参数 参数类型 COMMENT cmd INT8U SPI指令 参数列表 address INT8U 控制寄存器地址 返回值 —— INT8U 读出的数据 功能说明 读控制寄存器 制约和注无 意事项 异常处理 无 函数流程参见链接read_ENC28J60_cmd 图

表 3.14 write_ENC28J60_cmd函数

函数名称 参数列表 返回值 功能说明 制约和注意无 事项 异常处理 无 函数流程图 参见链接write_ENC28J60_cmd

7) 流程图 Send_Packet

Table 3.14 write_ENC28J60_cmd function void write_ENC28J60_cmd(INT8U cmd, INT8U address, INT8U data) 参数 参数类型 COMMENT cmd INT8U SPI指令 address INT8U 八位地址 data INT8U 要写入的数据 void void 写控制寄存器 - 21-

3. 解决问题的一个实例

FLOW CHART DESIGNFUNCTION NAMEsend_Packet开始传输逻辑复位设置写指针TXND 指向发送末字节数据写包控制字节发送数据复制到缓冲区发送数据包结束图3.3 send_Packet函数流程图

Fig. 3.3 send_Packet function flowchart

- 22-

基于嵌入式系统网卡驱动的实现

read_ENC28J60_Buffer

FLOW CHART DESIGNFUNCTION NAMEread_ENC28J60_Buffer开始CS有效发送SPI读缓存器指令读出数据CS无效结束 图3.4 read_ENC28J60_Buffer函数流程图

Figure 3.4 read_ENC28J60_Buffer function flowchart

- 23-

3. 解决问题的一个实例

write_ENC28J60_Buffer

FLOW CHART DESIGNFUNCTION NAMEwrite_ENC28J60_Buffer开始CS有效发送写缓存器SPI指令发送要写的数据CS无效结束图3.5 write_ENC2860_Buffer函数流程图

Figure 3.5 read_ENC28J60_Buffer function flowchart

write_ENC28J60

- 24-

解决问题的一个实例

4. 总结与展望

本文主要是实现一个嵌入式网卡驱动的功能,在物联网中可以通过该以太网网卡进行数

据的传输,他是建立一个通信网络并为家庭提供信息必要的通路;在家庭网络操作系统的控制下,通过相应的硬件和执行机构,实现对所有家庭网络上家电和设备的控制和监测。其网络结构的组成必然有家庭网关。家庭网关主要实现控制网络和信息网络的信号综合并与外界接口,以便作远程控制和信息交换。不论是网关还是各家电上的控制模块,都需有嵌入式操作系统。这些操作系统必须具有内嵌式、实时性好、多用户的特点。南京东大移动互联技术有限公司研制的智能多媒体家庭网关,就是以嵌入式Linux作为该嵌入式设备的操作系统,设备之间的相互通信遵从蓝牙通信协议,可以支持多个设备同时接入到固定电话网、国际互联网等其它外部网络。嵌入式系统开发和以前从事的开发工作实质上并无区别,唯一改变的是每个硬件平台都是独特的,这一个不同点导致了许多附加的开发复杂性,因而,在嵌入式开发过程中要格外注意软件创建过程;而且,在开发嵌入式产品之前要对选用的嵌入式硬件平台有较多的了解,具备相应的硬件知识,和硬件工程师密切配合;在选用嵌入式操作系统和硬件平台时要根据所要开发的应用的需要以及成本等方面的考虑选择合适的系统和平台在科技快速发展的今天,嵌入式产品将会越来越多地被广泛应用。我们相信,只要遵循嵌入式产品的开发规律,适应市场的需求,就一定能开发出越来越多的嵌入式产品。于小范围无线通信协议的嵌入式产品 以蓝牙为代表的小范围无线接入协议与嵌入式系统的结合,必将推动嵌入式系统的广泛应用。近来,基于这些协议的嵌入式产品层出不穷,包括各种电话系统、无线公文包、各类数字电子设备以及在电子商务中的应用。这些产品以其微型化和低成本的特点为它们在家庭和办公室自动化、电子商务、工业控制、智能化建筑物和各种特殊场合的应用开辟了广阔的前景。

本文中也存在许多不足之处,由于时间有限并且嵌入式是一个比较注重技术的,很多关

键的技术一时难以理解,未加以应用,网卡驱动的功能务必会受到影响,只能作为一个简单的数据流的接受与发送,正真能用于物联网中的信息传输,还必须学习新知识,把许多新的技术应用才能够快速传输数据,达到物联网信息传送水平。在以后的学习与工作中我会加以完善以改正。

- 30-

总结与展望

参考文献

[1]宁焕生,王炳辉。RFID重大工程与国家物联网.机械工业出版社[M]。第一版,2010年 [2]彭舰,陈良银。嵌入式系统设计.重庆大学出版社[M]。第一版,2008年 [3]邓顺国。电子商务概论.清华大学出版社[M]。第一版,2006年

[4]LawrenceBerkeley。TCP/IP详解卷1. 机械工业出版社[M]。第一版,2000年 [5]SPI原理。http://baike.http://www.wodefanwen.com//view/245026.htm 5月 8号 [6]美國微芯科技公司廠家。ENC28J60中文手册[M]。

[7]IEEE Standard for information technology-Telecommunications and information exchange between systems-Local and metropolitan area networks-Specific

requirements.part11: Wireless LAN Medium AccessControl (MAC) and Physical Layer (PHY) specifications. Amendment 8: Medium Access Control (MAC) Quality of Service Enhancements

[8] Adam Dunkels. LwIP source code

[9] (美)Comer,D.E.用TCP/IP 进行网际互联第一卷:原理、协议和结构(第四版)[M].林瑶,等,译.北京:电子工业出版社,2001

- 31-

英文原文

致 谢

论文的选题和写作过程中,自始至终得到了我的导师薛大伸教授的精心指导和无微不至的关心帮助,在薛教授渊博的专业学识和严谨的治学态度的指导下,在他为我创造的良好的学习和研究环境中,我的论文得以顺利完成并且我本人受益匪浅。在此向我的导师表示衷心的感谢!另外我还要感谢在实习期间,王金鹏老师和陈小东老师给我的帮助,给我不少这方面的资料,是我完成论文的重要力量。

感谢管理工程与科学学科的所有老师。感谢在百忙之中评阅本论文的专家、教授和各位老师。

- 32-

英文原文

The Future of the Internet

The year is 2016. You’ve just come out of surgery and are being pushed down the hospital corridor on a gurney toward the recovery room. The nurses know you are on the way because a radio frequency identification (RFID) tag on your plastic patient identification bracelet automatically generated an alert to the nursing station.

The doctor doing rounds checks the Internet to monitor your vital signs. As always, the implants in your body are beaming real-time information about your brain waves and blood pressure to a protected web site 24/7. Your daughter, who is on a different continent, is already whispering words of encouragement into your ear—thanks to an embedded speech processor equipped with 802.11 wireless technology, TCP/IP communications protocol, and specialized software that allows sound from the Internet to flow directly into your cochlea. Using your VOIP-enabled mobile telephone, you tell her not to worry.

“One expects there to be much more organic connection between people and technology,” says Google Chief Internet Evangelist Vint Cerf, who is widely known as one of the “fathers” of the Internet for his role in co-designing the TCP/IP protocol and the Internet’s architecture. Crossing the Line

If Mr. Cerf and about two dozen other pundits Red Herring interviewed about the future of the Internet are right, in 10 years’ time the barriers between our bodies and the Internet will blur as will those between the real world and virtual reality. Red Herring

Automakers, for instance, might conceivably post their parts catalogs in the virtual world of Second Life, a pixilated 3D online blend of MySpace, eBay, and renaissance fair crossed with a Star Trek convention. Second Life participants—who own the rights to whatever intellectual property they create online—will make money both by using the catalog to design their own cars in cyberspace and by selling their online designs back to the manufacturers, says Danish economist and tech entrepreneur Nikolaj Nyholm. eBaySecond Life

Today’s devices will disappear. Electronics will instead be embedded in our environment, woven into our clothing, and written directly to our retinas from eyeglasses and contact lenses, predicts inventor, entrepreneur, author, and futurist Ray Kurzweil. “Devices will no longer be spokes on the Internet—they will be the nodes themselves,” he says.

We will know exactly when our children will be dropped off because the school bus will be connected to the Internet, says Internet doyenne Esther Dyson. Our cars might one day arrange for repairs at dealerships before we realize there’s a problem.

Everything from the family fridge to the office coffee pot—as well as heating, cooling, and security systems—will be managed through the Internet, possibly using souped-up mobile phones doubling as universal remote controls, says Google’s Mr. Cerf. By 2016, he predicts the online population of 1 billion will treble, and a huge portion will be mobile. And by then, the Internet will become so pervasive that connecting to it will no longer be a conscious act.

Bandwidth access of 100 megabits per second or more will become the norm. “It is probably a safe bet that everyone will be able to have a full-motion, high-definition real-time link to

- 33-

英文原文

anyone,” says Bram Cohen, creator of the popular peer-to-peer program BitTorrent. Once that happens, “the concept of who is online and who is offline will melt away,” says Bradley Horowitz, Yahoo’s director of media and desktop search. Taken for Granted

In sum, the Internet “will just become like plumbing, which you won’t notice unless it backs up,” says Brewster Kahle, inventor of the Wide Area Information Server, the Internet’s first publishing system, and co-founder of the Internet Archive, the largest publicly accessible, privately funded digital archive in the world.

While the technical underpinnings of the Internet are likely to undergo drastic change, the nature of those changes will be wrought by policy decisions made by governments with a heightened interest in overseeing the Internet. When a network is this critical to just about everything, it’s reasonable to expect that governments will seek tighter control of what remains today a decentralized and somewhat anarchic system. The trick will be to preserve the creativity that spawns innovation—and profit—in this more vital and inevitably more regulated Internet. No matter what, people will continue to make money from Internet innovation in a variety of ways.

Targeted advertising will continue to be an important revenue generator, as will intellectual property distribution, predicts Mr. Cerf. Tools for content production will evolve to allow for widespread and uniform tagging of content, significantly improving our ability to use sensor data, financial information, medical data, text, imagery, video, and audio. And the semantic web being promoted by World Wide Web inventor Tim Berners-Lee will help us better match computer understanding with human understanding of the world around us, though it will likely be far from perfect.

People will be able to talk to the Internet when searching for information or interacting with various devices—and it will respond, though not necessarily in English, which will cease to be the dominant language on the web, says John Patrick, a founding member of the World Wide Web consortium and former vice president of Internet technology at IBM. IBM

As so-called sensor networks evolve, there will be vastly more machines than people online. As it is, there are almost 10 billion embedded micro-controllers shipped every year. “This is the next networking frontier—following inexorably down from desktops, laptops, and palmtops, including cell phones,” says Bob Metcalfe, the inventor of Ethernet and founder of 3Com. This is what will make up much of the machine-to-machine traffic, he says. 3Com

Services, Services, Services

RFID tags will be in wider use. So will geo-location services, which can be used to locate friends, places, and events of interest. Better real-time language translations will be available, at least for text translations.

Mash-ups won’t be limited to web sites—we’ll see the introduction of “mashed” real-time web applications. The Internet will further revolutionize publishing, film, and television. “You will suddenly have a few hundred thousand producers out to kill each other, competing on the Internet,” predicts Charles Zhang, founder and CEO of Beijing-based portal Sohu.com. “You will have instant rankings of the most popular videos,” adds Mr. Zhang, who reckons China will lead the way in this new form.

- 34-

本文来源:https://www.bwwdw.com/article/m6p6.html

Top