打造国内最大的IC交易平台
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
基于S3C2410A和DM9000网卡接口设计与实现
类别:网文精粹  
 
window.google_render_ad();

Design & Realization of Embedded Ethernet Interface Based on ARM and DM9000

摘要:针对ARM CPU S3C2410的特点,设计开发了外围网卡接口平台,通过驱动程序对以太网控制芯片DM9000的控制,实现了网络数据传输功能。硬件方面主要涉及以太网网络接口的设计,软件方面主要是设计以太网控制芯片驱动程序。该嵌入式系统网络接入方案具有硬件接口简单、外围器件少、价格低廉、开发周期短等特点。

关键词:ARM; DM9000; 网卡

Abstract:The platform of network card interface is designed and realized that can realize data transfer in this paper, as to ARM CPU S3C2410. The Driving program can control Ethernet network chip DM9000 well. Interface design of Ethernet work and driving program controlling the chip are introduced mainly. This mode is provided with simple design、low price、little peripheral equipment and short development cycle.

Key Words:ARM; DM9000; network card

引言

要实现小型嵌入式设备的Internet接入,TCP/IP首先要解决的是底层硬件问题,即协议的物理层。Ethernet具有成熟的技术、低廉的网络产品、丰富的开发工具和技术支持,当现场总线的发展遇到阻碍时,以太网控制网络技术以其明显的优势得到了迅猛的发展,并逐渐形成了现场总线的新标准——Ethernet。考虑到国内局域网大部分是以太网,随着交换式网络、宽带网络的发展,基于以太网的嵌入式设备Internet接入应用有着现实意义。

在现有嵌入式系统中,大多数选用的是10Mb/s的以太网卡,其传输速率慢,已不能再适应现在人们的要求。而其它10/100Mb/s网卡芯片或工艺复杂或成本较高,不适应工业制造。而DM9000是完全综合的、成本较低的单一快速以太网控制器芯片,具有通用的处理器接口。它被设计为低功耗、高处理性能,而其设计又非常简单,所以可以容易的完成不同系统的软件驱动开发。

DM9000——DAVICOM公司的10/100Mb/s自适应以太网芯片。其特点是:支持8位、16位、32位数据总线宽度;寄存器操作简单有效,有成熟的Linux驱动程序支持;3.3V接口电平;成本相当低廉;还可以使用MII接口和PHY芯片连接。

1DM9000S3C2410的连接

硬件整体电路设计

硬件上要完成DM9000与ARM芯片S3C2410三大总线连接,以及DM9000与以太网水晶接头RJ45的连接。基于ARM 嵌入式系统和以太网的接口如图1。

500)this.style.width=500;" border=0>

1.2 DM9000S3C2410连接

实现DM9000S3C2410连接,必须对两者间的数据、地址、控制三大总线进行连接和转换。S3C2410是32位微处理器,有32根地址线,支持4GB存储空间。其中0—40000000的1G空间被分为8块128M 空间,分别由NGCS0—NGCS7片选。DM9000为16位以太网控制芯片。图2给出了S3C2410DM9000的连接方法。

500)this.style.width=500;" border=0>

DM9000读写操作,首先对DM9000正确寻址。AEN (地址允许)是输入引脚片选信号。SA4~SA9是地址总线4~9位,当AEN低且SA9和SA8高,而SA7、SA6、SA5、SA4为低时,则DM9000被选中。

500)this.style.width=500;" border=0>

DM9000 默认I/0 基地址为300H。CMD 引脚用于设置COMMAND 模式,CMD为高时,选择数据端口。CMD为低时,选地址端口。数据端口和地址端口的地址码由下式决定:

DM9000地址端口=高位片选地址+300H+0H

DM9000数据端口=高位片选地址+300H+4H

其中,高位片选地址由S3C2410的NGCS3提供,即为:0X100000000H。

实际设计电路如图3所示,其中nWAIT为读写等待信号。由于在S3C2410中以太网卡的中断为9号中断,所以 EINT9_ETHERNET为中断信号。RESET为网卡芯片重启信号。25MHz OSCILLATOR为芯片提供25MHz的工作频率。(在本图中省去了S3C2410芯片)SD0~SD15数据总线与S3C2410的数据总线连接。

2DM9000驱动程序描述

2.1 驱动程序整体设计

Linux网络驱动程序的体系结构可划分为从上到下依次为网络协议接口、网络设备接口层、提供实际功能的设备驱动功能层以及网络设备媒介层。Linux内核中提供了网络设备接口级别以上层次的代码,所以移植(或编写)特定网络硬件的驱动程序最主要的工作就是完成设备驱动功能层,主要包括数据的接收、发送等控制。在Linux中所有网络都抽象为一个接口,由结构体 net_device来表示网络设备在内核中的运行情况,即网络设备接口。它既包括了网络设备接口,如回环(loopback)设备,也包括了硬件网络设备接口,如以太网卡。

驱动程序运行时,操作系统先调用检测例程以发现安装的网卡,如网卡支持即插即用,检测例程自动发现网卡参数。否则,驱动程序运行前,设置好网卡参数供驱动程序使用。核心发送数据时,调用驱动程序的发送例程。将数据写入空间,再激活物理发送过程。面向物理层接口程序中断处理例程。当网卡接收数据、发送过程结束或出错时,网卡产生中断,核心调用中断处理例程,再判断中断发生原因,并进行处理。

驱动程序流程如图4,分为主程序和中断服务程序,主程序进行DM9000的初始化和网卡检测、网卡参数获取。中断服务程序以程序查询方式识别中断源,完成相应处理。具体分别如图4(a)和(b)。

500)this.style.width=500;" border=0>

在整个过程中,首先要通过检测物理设备的硬件特征判断网络物理设备是否存在,然后决定是否启动这个驱动程序。接着会对设备进行资源配置,比如,即插即用的硬件就可在这个时候进行配置;而在本嵌入式平台上,以太网的MAC地址也在这里指定。配置好硬件占用的资源后,就可向系统申请这些资源,如中断、I/O空间等。最后,对结构体net_device相应的成员变量初始化,使得一个网络设备可被系统使用。

数据包的发送和接收是实现Linux网络驱动程序中关键的过程,对这两个过程处理的好坏将直接影响到网络的整体运行质量。驱动程序中并不存在一个接收方法。应由底层驱动程序来通知系统有数据收到。一般情况下,设备收到数据后都会产生一个中断,在中断处理程序中驱动程序申请一块sk_buff(如定义为skb),从硬件读出数据放到申请好的缓冲区中。

3DM9000驱动程序测试

测试环境

在调试过程中,可以先建立可下载的镜像文件。在目标板上先烧入vivi。通过vivi将内核映像下载到目标板运行。而网络驱动是属于BSP的一部分所以会在下载地过程中一同写入目标板。

(1)主机环境 主机环境是在Fedora上运行的Linux的集成交叉开发环境及相关的测试用软件。

(2)目标机环境 目标机的硬件环境是要作为海信商机使用的SBC2410A(ARM920T内核)开发板。

由主机和目标机共同组成了网络驱动程序的测试环境,两者通过串口及网线相连,在调试网络驱动之前要通过串口加载程序。加载了程序之后就可以针对以太网接口来进行相关的测试工作。

硬件测试

当成功的将DM9000网络芯片的驱动程序加载到Linux内核中后,就要对其进行测试。首先,要进行的就是硬件的测试。因为DM9000有4个GPIO端口,这里我们只要对这4个端口进行测试,如果它们能够正常读写,则可说明DM9000网卡应工作在正常状态下。

在测试程序进行编译运后,运行过程中,用万用表分别测量4个所对应引脚的电压,经测试为3.3V,说明该引脚硬件正常,则芯片工作在正常状态下。

驱动程序测试

测试过程中在目标机上编写基于TCP协议的tcpServer()任务作为测试用程序,其功能是实现最简单TCP服务器端程序。上位机运行相应的Client客户端程序,由两端组成TCP的Client-Sever系统进行网络接口的速度测试和可靠性的测试。

500)this.style.width=500;" border=0>

测试结论:通过对网络驱动程序的测试,证明所开发的网络驱动程序实现了所有先期设计功能,并在速度上得到了验证,能够满足大批量数据的传输工作。

传送3个包到202.108.9.39,从202.108.9.39接收3个包,无丢失。

本文创新点:S3C2410A内部没有内嵌的专用网卡控制器,因此在以S3C2410A为硬件平台的嵌入式设备中增设网卡模块,必须自行设计接口电路并进行相应的驱动开发,本文使用SBC2410(ARM920T内核)开发板,作为软硬件运行的硬件平台,设计DM9000快速以太网网卡硬件电路并进行驱动程序的开发与实现。