基于ARM和DM9000的网卡接口设计与实现
时间:12-07
来源:互联网
点击:
图4 DM9000驱动程序流程
在整个过程中,首先要通过检测物理设备的硬件特征判断网络物理设备是否存在,然后决定是否启动这个驱动程序。接着会对设备进行资源配置,比如,即插即用的硬件就可在这个时候进行配置;而在本嵌入式平台上,以太网的MAC地址也在这里指定。配置好硬件占用的资源后,就可向系统申请这些资源,如中断、I/O空间等。最后,对结构体net_device相应的成员变量初始化,使得一个网络设备可被系统使用。
数据包的发送和接收是实现Linux网络驱动程序中关键的过程,对这两个过程处理的好坏将直接影响到网络的整体运行质量。驱动程序中并不存在一个接收方法。应由底层驱动程序来通知系统有数据收到。一般情况下,设备收到数据后都会产生一个中断,在中断处理程序中驱动程序申请一块sk_buff(如定义为skb),从硬件读出数据放到申请好的缓冲区中。
4 DM9000驱动程序测试
4.1 测试环境
在调试过程中,可以先建立可下载的镜像文件。在目标板上先烧入vivi。通过vivi将内核映像下载到目标板运行。而网络驱动是属于BSP的一部分所以会在下载地过程中一同写入目标板。
(1)主机环境 主机环境是在Fedora上运行的Linux的集成交叉开发环境及相关的测试用软件。
(2)目标机环境 目标机的硬件环境是要作为海信商机使用的SBC2410A(ARM920T内核)开发板。
由主机和目标机共同组成了网络驱动程序的测试环境,两者通过串口及网线相连,在调试网络驱动之前要通过串口加载程序。加载了程序之后就可以针对以太网接口来进行相关的测试工作。
4.2 硬件测试
当成功的将DM9000网络芯片的驱动程序加载到Linux内核中后,就要对其进行测试。首先,要进行的就是硬件的测试。因为DM9000有4个GPIO端口,这里我们只要对这4个端口进行测试,如果它们能够正常读写,则可说明DM9000网卡应工作在正常状态下。
在测试程序进行编译运后,运行过程中,用万用表分别测量4个所对应引脚的电压,经测试为3.3V,说明该引脚硬件正常,则芯片工作在正常状态下。
4.3 驱动程序测试
测试过程中在目标机上编写基于TCP协议的tcpServer()任务作为测试用程序,其功能是实现最简单TCP服务器端程序。上位机运行相应的Client客户端程序,由两端组成TCP的Client-Sever系统进行网络接口的速度测试和可靠性的测试。
表4-1 测试项目及结果
测试项目 | 测试方法 | 测试结果 |
Ping的响应 | 连接好测试机与目标机,进行ping命令包测试。 | 测试结果: 能够成功地响应ping包。 |
速度测试 可靠性测试 | 在Client-Sever系统中,进行数据流量测试。在Client-Sever系统中,进行不间断测试。 | 测试结果: 速度为10.8Mbps; 无丢包现象;误码率0 |
5 测试结论
通过对网络驱动程序的测试,证明所开发的网络驱动程序实现了所有先期设计功能,并在速度上得到了验证,能够满足大批量数据的传输工作。
传送3个包到202.108.9.39,从202.108.9.39接收3个包,无丢失。
本文创新点
S3C2410A内部没有内嵌的专用网卡控制器,因此在以S3C2410A为硬件平台的嵌入式设备中增设网卡模块,必须自行设计接口电路并进行相应的驱动开发,本文使用SBC2410(ARM920T内核)开发板,作为软硬件运行的硬件平台,设计DM9000快速以太网网卡硬件电路并进行驱动程序的开发与实现。
采用此方案设计的网卡接口电路可应用到多种嵌入式设备中,在税控收款机应用中直接经济效益可达20余万元。
嵌入式 总线 Linux S3C2410 电路 ARM 万用表 电压 相关文章:
- 嵌入式系统的定义与发展历史(11-15)
- 嵌入式系统亲密接触(11-22)
- 嵌入式系统设计中的USB OTG方案(02-01)
- 嵌入式线控驾驶系统开发过程中设计和测试考虑(02-02)
- 一个典型的嵌入式系统设计和实现 (02-02)
- DDR SDRAM在嵌入式系统中的应用(02-07)