原创 linux网卡驱动程序设计

2008-5-28 15:30 3017 1 1 分类: MCU/ 嵌入式
ARM嵌入式Linux网卡驱动开发
Linux作为一个开放源代码
的操作系统,具有稳定、高效、
易裁减和硬件支持广泛等特
点,被广泛应用于嵌入式系统
开发领域。在Linux系统下设计
驱动程序简洁、操作方便、功
能强大,但是支持的函数却较
少,只有一些来源于内核Kernel
中的函数。因此,在嵌入式
Linux系统开发应用时,需要开
发自己专用的网络接口卡,这
时不仅要在硬件上保证与
Linux的兼容性,而且在软件上
需要开发全新的驱动程序。本
文就以ARM 的MC9328MX1
平台网卡C$8900A的驱动为
例来介绍Linux驱动程序的具
体实现。
80 Jf放系统ill= 2006
.o8
网络设备工作原理
在Linux操作系统中,为了
方便对各类外围I/o设备的管
理,将所有设备归结为三类,即
字符设备(如键盘、LCD等)、块
设备(如硬盘、CF卡等)和网络
设备(如网卡等)。类似于对字符
设备和块设备的处理,为了屏
蔽网络环境中物理网络设备的
多榉l生,Linux利用面向对象的
思想对所有的网络物理设备进
行抽象,并且定义了一个统一
的接口。对于所有网络硬件的
访问都是通过接口进行的,接
口向用户提供了一个对于所有
类型的网络硬件一致化的操作
集合,从而屏蔽了x,-t~-种网络
■ 刘莲花郭文成张东军
芯片的具体访问方式,提高了
程序的易用性和通用性。在
Linux系统内核中存在字符设备
管理表chrdevs和块设备管理
表blkdevs,这两张保存着指向
file—operations结构的指针设备
管理表分别用来描述各种字符
设备驱动程序和块设备驱动程
序。此外,在内核中也存在着一
张网络接口管理表dev_base,
但与前两张表不同,dev_base
是指向net_device结构的指针,
因为网络设备是通过
Bet_ device数据结构来表示。
D e v
— ba se实际上是一条
net
_ device结构链表的表头,在
系统初始化完成以后, 系统检
测到的网络设备将自动地保存
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
1
关闭 站长推荐上一条 /2 下一条