WIFI移植全过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于S3C S3C242424440的SDIO 卡WIFI 移植移植
1112/1112/yangjun yangjun yangjun
环境:Ubuntu10.10
LINUX2.26.38
交叉编译工具链:arm-linux-gcc
一、SDIO 设备驱动移植
1、 修改SD 卡驱动使内核支持SD 卡
修改文件:arch/arm/mach-s3c2440/mach-smdk2440.c
添加所需头文件:
#include
#include
#include
//增加平台设备对sd 卡的支持
static struct platform_device *smdk2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_sdi,
};
//添加平台数据dev->platform_data
static struct s3c24xx_mci_pdata smdk2440_mmc_cfg __initdata={
.gpio_detect = S3C2410_GPG(8),//此处保留为使用中断号8,看芯片手册
.set_power = NULL,
.ocr_avail = MMC_VDD_32_33,
};
2、 在smdk2440_machine_init 中添加
s3c24xx_mci_set_platdata(&smdk2440_mmc_cfg);
二、配置内核以支持Marvel 无线WIFI
选择38内核中的wlan marwell sdio 模块
device drivers ---->
[*] Network device support --->
[*] Wireless LAN --->
-*- Wireless --->
<*> cfg80211 - wireless configureation API
{*} common routines for IEEE 802.11 drivers
三、编译内核,生成驱动模块
1、先执行make 然后make modules 最后执行make uImage //内核生成模块的方式
2、将生成的wlan相关ko文件拷贝到目标板中,在这我放在/sdio目录下
/drivers/net/wireless/libertas/$
cp libertas.ko libertas_sdio.ko /opt/filesystemx/sdio/
3、把固件helper_sd.bin sd8686.bin拷贝到相应的位置
/rootfs/filesystem/lib/firmware/mrvl/(后面两个目录是自己创建的,固件的话
我当时也是问老师拿的,没办法!)
4、在目标板子插入SDIO WIFI 并加载驱动
首先插入SDIO WIFI 然后加载驱动
/sdio#insmod libertas.ko
/sdio#insmod libertas_sdio.ko
helper_name=/lib/firmware/mrvl/helper_sd.bin
fw_name=/lib/firmware/mrvl/sd8686.bin (注意要在一行)
驱动加载完成会提示:(注意:如果没有,则再次热插拔你的sdio wifi卡便可以看
到)
if_sdio_intterupt
libertas: 00:01:36:19:b3:6b, fw 9.70.3p23, cap 0x00000303
if_sdio_intterupt
libertas: wlan0: Marvell WLAN 802.11 adapter
sdio_havefister_driver
sdio_init_module have done
(此处提示信息有可能会不一样)
四、制作无线测试工具及测试
1、无码(没有密码)
测试无线网卡用无线工具iwconfig iwlist等命令是通过开源软件
wireless_tools_29.rar编译得到。
步骤:
1、首先在windows目录解压上面那个软件包,把解压后的文件夹复制到虚拟机
/home$ls
wireless_tools_29
/home/wireless_tools_29$
2、修改Makefile:根据下面的行号
8 PREFIX = /home/wtools //指定安装路径
12 CC = arm-linux-gcc (和编译你的文件系统所用保持一致,也可静态编译,对Makefile 适当修改)
14 AR = arm-linux-ar
接着make 然后执行make install 即可。在/home/wtools下查看有:
lib sbin usr
目录,libiw.so(这是个软连接) libiw.so.29库在lib目录 而sbin目录为一
些网络工具,如:iwlist、iwconfig等 可以man xxx查看功能
3、拷贝libiw.so、libiw.so.29库和测试工具
/home/wtools/lib/$cp * /opt/root_38fs/lib -a
/home/wtools/sbin/$cp * /opt/root_38fs/bin (这样就不用考虑环境变量了)
4、ifconfig -a 查看是否检测到无线网卡
在测试工具目录下测试
root_38fs/bin #ifconfig wlan0 up
root_38fs/bin #iwlist wlan0 scanning //搜索热点
root_38fs/bin #iwconfig wlan0 essid "热点名字" //链接热点
root_38fs/bin #ifconfig wlan0 192.168.2.99 netmask 255.255.255.0 up (静
态分配,也可以动态分配。参考我的《基于FS2410的DHCP移植》)
root_38fs/bin #route add default gw 192.168.2.1
root_38fs/bin #ping 192.168.2.1