基于嵌入式linux的无线网卡驱动程序
JOU RNAL O F L IAON IN G UN IV ERS ITY 辽宁大学学报自然科学版 N a tu ra l S ciences Ed ition 第 35 卷 第 1 期 2008 年 Vo l. 35 No. 1 2008
基于嵌入式 linux的无线网卡驱动程序
3 1 2 钱晓华 ,郭继红
( )1. 辽宁大学 经济学院计算机室 ,辽宁 沈阳 110036; 2. 辽宁大学 信息学院 ,辽宁 沈阳 110036
摘 要 :若要在各种嵌入式设备终端上实现无线网络功能 ,基于 L inux PCMC IA 接口的无线网卡驱动和配置就成为需要解决的问题 . 分析了 L inux下无线网卡驱动程序结构及
方法 ,着重研究了无线网卡的初 始化 ,数据包的接收和发送 .
关键词 : L inux; WLAN; PCMC IA;驱动程序 .
( ) 文章编号 : 100025846 2008 01 20055203 中图分类号 : TP391文献标识码 : A
L PC2210 是 基 于 16 /32 位 ARM 7 TDM I2S, 并 随着移动通信和便携通信的发展 ,无线局域
() 支持实时仿真和跟踪的 CPU. L PC2210 的数据和 网 WLAN W ire le ss Loca l A rea N e two rk 应 运 而
地址总线是开放的 ,片内有 16 K字节的 RAM. 对 生 ,日渐普及. 嵌入式系统的无线局域网接入可以
实现嵌入式系统的无线控制 、无线数据传输 . 从而代码规模有严格控制的应用可使用 16 位 Thum b
模式将代码规模降低超过 30 % ,而性能的损失却 使人对嵌入式系统的控制 、运行 ,以及开发更加方
便 ,并可以满足一些特殊的应用场合. 本文通过对 很小 .
() 无线局域网 IEEE802. 11 b
规范和嵌 入式 系 无线网卡是无线局域网 WLAN 的重要组成
部分 , WLAN 的物理层及 MAC层是由无线网卡的 统的深入理解和分析 ,利用基于 ARM 7 内核的嵌 硬件及其软件完成的 ,而 LLC 层以上各层均有计 入式处理器 、操作系统 L inux和 802. 11 b 的无线 算机软件来实现 WLAN 包括进行通信的网络接 网卡来实现嵌入式系统的无线局域网接入. () (口卡 简称 无 线网 卡 和 接 入 点 /桥 接 器 A P /网
) ( )桥 ,无线网卡提供了最终用户设备 PC 机 与接 1 硬件设计 [ 1 ] 入点 /桥接器之间的接口 . 开发一个嵌入式应用的最快捷径就是采用一 目前 ,常见的 802. 11 b 无线网卡还有无线局 个己经搭建好的 ,并且己经验证的参考设计作为
域网 U SB 卡 、无线局域网 CF卡 、无线局域网 PC I 系统的主硬件部分 ,然后在此基础上扩展具体应
用电路. 虽然 ARM 公司不断推出新的 a rm 体系架 卡等 类 型 . 其 中 , PCMC IA 卡 属 于 笔 记 本 电 脑 专
构 ,但是 a rm 7公司由于性价比高 、功耗小 ,非常适 用 ,现也多用于嵌人式系统. 经 ww. linux. o rg认证
用于工业控制 、In te rne t设备 、网络和调制解调器 ( 的 PCMC IA 网卡有两大类 ,分别是基于朗讯 L u2设备 、移动电话等多种多媒体和嵌入式应用 ,在整 ) cen t芯片组的 PC MIC IA 无线网卡和基于 In te rsil2个 a rm 应用中占据绝对的市场 ,约占 71 %. Sm a rt2
P rism Z芯片组的 PCMC IA 的无线网卡 ,其中基于 ARM 2200开发板是由广州周立功公司开发的一In te rsilP rislnZ芯片组的 PCMC IA 的无线网卡价格
比较便宜 ,相当于朗讯芯片组的 PC IMCJA 无线网
款基于a rm7的开发帄台 ,嵌入式芯片采用菲利普 卡的三分之一 .
公司的lp c2210.
本系统中选择了使用 P rism 2 芯片的网卡 ,型.配置的差异
号为 COM PAQNC5004 , 支 持 IEEE802. 11 b, 最 高Ca rd Se rvice是 PCMC IA 子 系 统 中 最 大 的 一
PCMC IA , 个组件 ,提供对于操作 PC Ca rd和 PC Ca rd Socke t 11M b s. 网卡的物理驱动接口为速率为
供电电压为 3. 3V.的
A P .I Ca rd Se rvice的实现采用客户机 /服务
( )器 C lien t / Se rve r结构 ,可同时对多个 Ca rd C lien t2 软件设计 提供服务.由于无线网络的底层协议比较复杂 ,需要操 Ca rd C lien t是使用 Ca rd Se rvice 提供的接口 作系 统 的 支 持 , 目 前 嵌 入 式 主 流 操 作 系 统 有
函数实现对于具体 PC 卡的驱动程序 , 子系统中 W inCE、Pa lmO S、L inux等. 其中 L inux为开放源代
已经有了很多 PC卡的驱动程序. Ca rd C lien t层中 码 ,成本低 ,潜力可观 . L inux的发布版本已经包含
大量驱 动 程 序 , 支 持 多 种 无 线 网 卡 , 多 是 基 于 的 D rive r Se rvice 模块还提供了一个接口给 用户
L inux的 PCMC IA 子系统的 ,可以即插即用 . 用户 ( ) 模式的应用程序 ca rdm gr, ca rdc tl, PC卡的插入 /
唯一要做的就是为自己的系统移植 PCMC IA 的子 取出 , 并 且加 载 /移 去相 应的 Ca rd C lien t驱 动 程
系统. 序 .
驱动程序实现其功能的方式主要有两种 : 一 L inux, PCMC IA 子系统由三层构成 ,如图 1 所 是直接将驱动程序编译进内核 ,当内核启动时 ,直 ( ) 示 socke t d rive r,. 最底层是“插槽 ”驱动层 第二 接调 用 初 始 化 函 数 ; 二 是 通 过 模 块 加 载 的 形 [ 3 ] ( ) 层是 PC 卡服务 层 Ca rd Se rvice s, 最 上层 是 PC 式 . 两种加载 方式 比 较而 言 , 后者 不 改变 内核
( ) 卡客户层 Ca rd C lien t. 一个特殊的 PC 卡客户叫 的结构 ,且灵活性更大 . 此次无线网卡驱动程序的
加载就采用了后者 . () 做驱动服务 D rive r Se rvice,提供一个接口给 PC
[ 2 ] 加载驱动程序模块时 ,首先通过模块加载 in2 卡应用工具 . 每一层都通过标准 A P I接口为上 [ 4 ] smod命令把网络设备驱动程序插入到内核中 . 层提供服务 . 最上层的应用软件也是通过应用层 然后 ,通过驱动程序中的模块初始化函数 modu le
( ) ( )_ in it ,调用 registe r_ne tdev 函数在 L inux系统
中注册该网络设备 . 如果成功 ,驱动程序将调用自 A P I函数实现对PC Ca rd s的读写和操作的 .身的 网 络 设 备 初 始 化 函 数 对 设 备 初 始 化 . 然 后
( )( ) modu le_ in it 通过调用 p cm c ia _ registe r_d rive r ,
注册无线网卡的驱动程序. 驱动程序的函数入口
(( ) ) 即 o rinoco_c s_ a ttach 由结构体定义 o rinoco _
( ) d rive r确定 . o rinoco_ c s_ a ttach 创建一个驱动程
序的“实例 ”,进而经过复杂的函数调用 ,完成 I/O
中断分配 ,硬件测试 、PCMC IA 服务注册等一系列
的相关初始化 操作 , 最 终通 过 调用 o rino _ co _ c s_
( )config 实现设备注册 .
( ) 卸载的过程相对简单 : modu le _ exit 首先调
( )用 p cm c ia_un registe r_d rive r 卸载网卡驱动程序 ;
( ) 再调用 o rinoco _ c s_ re lea se 释放 I/O 中断空间 ;
( ) 最后通过调用 o rinoco_c s_de tach ,进而调用 un2
( )registe r_ne tdev 实现设备注销 .
设备初始化的主要任务是填充该设备的 ne t_
( )device 结构 ,这是装载模块化驱动程序时必须 图 1 L inux PCMC IA 子系统软件结构图完成的工作 . 结构中的 in it函数指针所指的初始
Socke t D rive r是 处理 最 底层 硬件 的 软 件 层 ,
通常是具体操作硬件的函些操数集 ,不同系统帄
台的支持 ,从而屏蔽了 PCMC IA 插槽和硬件资源
化函数 o rinoco _ in it完成了许多重要的初始化工一种嵌入式无线接入网的实现
, 利用 ARM 9
) (( ) 作 ,如 : 初 始 化 firmwa re 固 件 , 获 得 MAC 地 嵌入式处理器 、嵌入式操作系统 L inux和 802. llb 址 、sta tion nam e、允许的频道值 、初始 A P、设置电 的无线网卡来实现嵌入式系统的的无线接入 . 通 源管理 、默认 ESS ID 等. 过对软硬件帄台的测试和实际应用 ,验证了该方
案的有效性. 网络设备的 主 要工 作就 是 数 据 的 发 送 与 接
收 . 与之相应 ,驱动程序的核心是对数据发送 、接 参 考 文 献 :收的处理 .
[ 1 ] 魏洪兴 ,胡 亮 ,曲学楼编著 . 嵌入式系统设计与实 数据包的发送主要是调用 device域中的 ha rd例开发实验教材 ?,清华大学出版社 2005, 12: 98 - _ sta rt_ xm it函数指针完成数据包的发送 , 该函数 102. 将把存放在套接字缓冲区中的数据发送到物理设 李玉 波 , 胡 希 明 . L inux C 编 程 , 清 华 大 学 出 版 社 , [ 2 ] 备上 ;数据包接收的实现稍稍复杂一些 ,当硬件收 2005 , 9: 162 - 179.
高 扬 ,石秀民 . 基于嵌入式帄台的 WLAN 实现 ,吉 到数据包时 ,产生 H ERM ES_EV _RX中断 ,中断处 [ 3 ] ( ) ( ) 林大学学报 , 2006 , 241 : 103 - 107. ( )理函数将调用 o rinoco_ev_ rx 函数完成数据包接 张 湘 ,肖 建 . 嵌入式系统和嵌入式操作系 [ J ]. 收处理. 世界仪
与自动化 , 2002 , 5: 23 - 25. [ 4 ]
3 结语
将嵌入式系统与无线局域网相结合 ,提出了
W ire le ss Ne twork Ca rd D r iver of the Em bedded
Sy stem Ba sed on L in ux
1 2Q IAN X iao2hua, GUO J i2hong
( 1. Econom ics S chool, L iaon ing U n iversity, S henyang 110036, C h ina;
)2. C ollege of Info rm a tion S cbence and Technology, L iaon ing U n iversity, S henyang 110036, C h ina A b s tra c t: If we wan t to rea lize the w ire le ss ne two rk ing cap ab ilitie s on a va rie ty of te rm ina ls of em bedded device s, w ire le ss ne two rk ca rd and d rive r a re the p rob lem s tha t needed to so lve acco rd ing to the em bedded system ba sed on L inux PCMC IA in te rface. In the p ap e r, the struc tu re and de sign m e thod of w ire le ss ne two rk ca rd and d rive r ba sed on L inux a re ana lyzed, the in itia liza tion of w ire le ss ne two rk ca rd and send ing and re2 ce iving of da ta p acke ts a re focu sed on.
Ke y w o rd s: linux; WLAN; PCMC IA; d rive r.
() 责任编辑 郑绥乾