基于ARM的Linux网络设备驱动程序开发.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51242009,30(22)计算机工程与设计ComputerEngineeringandDesign
・嵌入式系统工程・
基于ARM的Linux网络设备驱动程序开发
周敬琼,
周凤星
(武汉科技大学冶金自动化与检测技术教育部工程中心,湖北武汉430081)
摘要:对基于ARM的网络设备驱动程序开发进行了研究,分析了嵌入式Linux网络设备驱动程序的实现原理和运行过程,讲述了嵌入式系统中网络设备驱动开发的具体过程.在嵌入式Linux中实现DM9000网卡驱动,并结合实现DM9000网卡驱动的实例讲解了基于Linux操作系统的网卡驱动程序开发流程.具体分析了网络设备的初始化、设备的打开与关闭、数据的传送和接收以及超时处理等相关过程.最后归纳总结了基于嵌入式Linux网络设备驱动程序的一般方法.关键词:ARM;网络设备;Linux系统;DM9000;驱动程序中图法分类号:TP316
文献标识码:A
文章编号:1000.7024(2009)22.5124.04
DevelopmentofnetworkdriverprogrambasedonembeddedLinux
ZHOUJing-qiong.
ZHOUFeng-xing
(EngineeringCenterofEducationMinistryofMetallurgicalAutomationandDetectionTechnology,
WuhanUniversityofScienceandTechnology,Wuhan430081,China)
Abstract:Aresearchaboutthedevelopmentofnetworkdriverprogrambasedonprocessofnetworkdriverin
ARM
is
done.Implementationprincipleandrunning
based
on
embeddedLinuxisintroduced.Andspecificprocessoftherealizationofthenetworkdevicedriver
embeddedsystemsisdiscussed.ThroughtheexampleofDM9000driverthatisdoneinembeddedLinuxoperatingsystem,development
based
on
processofnetworkdriverdriverofbasedon
Linuxoperatingsystemisanalyzed.Atlast,itisthesummaryofthegeneralmethodsaboutnetwork
embeddedLinux.
Keywords:ARM;networkequipment;Linuxsystem;DM9000;driverprogram
1.1嵌入式Linux网络设备驱动的结构
0引言
Linux网络设备驱动程序的结构可分为4层,即网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层和网络设备与媒介层。下面分别介绍各层的功能。
(1)网络协议接口层负责向网络层协议提供统一的数据包收发接口,通过dev_queue_xmitO函数发送数据,并通过netifⅨ()函数接收数据。
(2)网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体netdevice,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。
(3)设备驱动功能层各函数是网络设备接口层net
device
在嵌入式系统中,我们经常需要访问硬件来实现某种目的。而访问硬件就必须与设备驱动程序打交道。在Linux中有很多与硬件相关的部分,以库函数的形式提供给用户。这给嵌入式系统的开发带来了方便。而分析各种驱动程序的编
写,对于我们把软硬件结合起来是至关重要的。因为驱动程序是连接硬件设备和设备文件的纽带,是操作系统内核和硬件设备之间的接口。网络设备驱动作为设备驱动中的一种,可用来实现多种协议,这对于网络在嵌入式系统中的应用和发展有重要作用。
1
Linux网络设备驱动程序体系结构
网络设备在嵌入式Linux里有着特殊的处理方法。嵌入
数据结构的具体成员,是驱使网络设备硬件完成相应动作的
程序,它通过hard_start一枷“)函数启动发送操作,并通过网络
设备上的中断触发接收操作。
(4)网络设备与媒介层是完成数据包发送和接受的物理实体,包括网络适配器和具体的传输媒介,网络适配器被设备驱
式Linux的网络系统主要采用BSDUNIX的socket机制。在socket机制中,系统和驱动程序之间定义有专门的数据结构(sk
系统支持对发送数据和接收数据的缓存,提供流量控制机制,并提供对多协议的支持。
收稿日期:2008.11.25:修订日期:2009.06-09。
动功能层中的函数物理上驱动。对于Linux系统而言,网络设备和媒介都可以是虚拟的。
作者简介:周敬琼(1985--).女.湖北人.硕士研究生,研究方向为嵌入式系统及应用;号与信息处理。E-maih246059020@163.oom
周风星(1952--),男,辽宁人.教授,研究方向为信
万方数据
周敬琼,周凤星:基于ARM的Linux网络设备驱动程序开发
2009,30(22)
5125
在设计具体的网络设备驱动程序时,我们需要完成的主要工作是编写设备驱动功能层的相关函数以填充net_device数据结构的内容并将netdevice注册入内核。
1.2
Linux网络设备驱动程序的运行
网络设备驱动程序用来控制网络设备,是Linux系统中运
行的3大设备驱动程序之一。Linux支持的网络设备非常牢固。Linux为了支持网络设备分为两层,即网络堆栈的协议支持层,以及接受和发送协议的