linux内核wifi驱动,基于2.6.35内核的SDIO-WiFi驱动移植

一、 移植环境

【移植环境】

1、 主机:Ubuntu 10.10发行版

2、 目标机:FS_S5PC100平台

3、 交叉编译工具:arm-none-linux-gnueabi-4.5.1

4、wifi模块:marvell-8686

5、Linux文件系统:rootfs.3g.wifi.tar.bz2

6、内核:linux-2.6.35-farsigt

二、 在linux下的移植

1. 平台代码修改

driver/mmc/host/sdhci.c

屏蔽以下代码

629行 printK (KERN_WARING "%s: too large timeout requested!\n", mmc_hostname(host_>mmc));

2. 内核驱动支持

因为S5PC100平台上SDIO功能已经支持,所以只需要内核驱动支持marvell-8686即可。

[*] Networking support --->

[*] Wireless --->

cfg80211 - wireless configuration API

{*} common routines for IEEE 802.11 drivers

Device Drivers --->

[*] Network device support --->

Wireless LAN --->

Marvell 8xxx Libertas WLAN driver support

Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards

Generic Driver Options --->

(sd8686.bin sd8686_helper.bin) External firmware blobs to build into the kernel (firmware) Firmware blobs root directory

3. 内核的修改

文件arch/arm/mach-s5pc100/mach-smdkc100.c有内核的分区, 把第2个分区改成8M。

因为生成的文件系统太大,大于4M。

4. 固件准备

将固件sd8686.bin和sd8686_helper.bin拷贝到linux-2.6.35/firmware下。编译时会自动编译进内核。

$ make zImage

$ sudo cp zImage /tftpboot

三、 文件系统的制作

1. wpa_suppicant的移植

源码版本选择:

wpa_supplicant-0.7.2

openssl-0.9.8e

openssl移植:

a、补丁安装

openssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e所以我们需要wpa_supplicant-0.7.2/patches/openssl-0.9.8e-tls-extensions.patch拷贝到openssl源码下。

patch -p1 < openssl-0.9.8e-tls-extensions.patch

b、配置编译安装

./Configure linux-elf-arm -DL_ENDIAN linux:'arm-none-linux-gnueabi-gcc' shared --prefix=/home/linux/workdir/wifi/openssl

make

make install

wpa_supplicant移植:

在/wpa_supplicant-0.7.2/wpa_supplicant目录下

a、makefile修改

添加

CC=arm-unknown-linux-gnueabi-gcc//自己的交叉编译工具

CFLAGS += -I../src

CFLAGS += -I../src/utils

下添加:

CFLAGS += -I/home/linux/workdir/wifi/openssl/include

修改

LIBS += -lssl

LIBS += -lssl -L/home/linux/workdir/wifi/openssl/lib/

修改

LIBS_p += -lcrypto

LIBS_p += -lcrypto -L/home/linux/workdir/wifi/openssl/lib/

b、编译

cp deconfig .config

make

编译后将生产的wpa_supplicant和wpa_cli拷贝到根文件系统的bin目录下

2. 文件系统的制作

由于2.6.35的内核不支持yaffs文件系统,而cramfs是只读文件系统,所以选择了jffs文件系统,命令如下:

$ mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x20000 --pad=0x600000 -n

$ sudo cp rootfs.jffs2 /tftpboot

考虑到终生成的文件系统比较大(5M多),--pad用的600000

四、 测试

1. 移植u-boot

关闭开发板电源,将拨码开关SW1调至0001(usb启动模式)后打开电源

a) 加载运行USB Installer_DDR2.bin

USB Port → Transmit → Transmit,选中image目录下的USB Installer_DDR2.bin

10bff12ddc4bd6065c5e6448e32daeb9.png

b) 加载运行u-boot-v45.0.bin

USB Port ? Transmit ? Transmit,选中FS_S5PC100光盘v4.5\Linux-Android\image目录下的u-boot-v45.0.bin

串口终端下能看到如下内容(如果有倒计时数字,按任意键出现提示符)

9e60804bbf12605b09236bc367bdcea4.png

c)设置并保存环境变量

# printenv // 查看环境变量的值并按如下设置

# setenv baudrate 115200

# setenv ethaddr 11:22:33:44:55:66

# setenv gatewayip 192.168.1.1

# setenv serverip 192.168.1.237 // serverip要和虚拟机的ip相同

# setenv ipaddr 192.168.1.223 // ipaddr也可以是192.168.1.x其他值

# setenv netmask 255.255.255.0

保存环境变量

# saveenv

d) 烧写u-boot-v45.0.bin到nand flash起始地址

# tftp 20008000 u-boot-v45.0.bin

# nand erase 0 40000;

# nand write 20008000 0 40000

2. 移植内核

# tftp 20008000 zImage

# nand erase 100000 300000

# nand write 20008000 100000 300000

3. 移植jffs2文件系统

# tftp 20008000 rootfs.jffs2

# nand erase 400000 800000

# nand write 20008000 400000 800000

4. 设置启动参数

# setenv bootdelay 3

# setenv bootcmd nand read 20008000 100000 300000\; bootm 20008000

# setenv bootargs root=/dev/mtdblock2 init=/linuxrc rootfstype=jffs2 rw

console=ttySAC0,115200

# boot

五、 WIFI模块的测试

1. 在根文件中添加/etc/resolv.conf,域名解析。

内容为:

# Generated by NetworkManager

nameserver 8.8.8.8

2. 在根文件系统/etc下添加wpa_supplicant配置文件wpa_supplicant.conf内容为:

# WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant

network={

ssid="XXXX" #无线路由ssid

key_mgmt=WPA-PSK

proto=WPA

pairwise=TKIP

group=TKIP

psk="XXXXXXXX" #无线路由密码

}

3. 创建目录/var/run/wpa_supplicant

mkdir /var/run/wpa_supplicant -p

4. 启动开发板完成如下操作

● 配置无线网卡ip

ifconfig wlan0 192.168.1.200

f004bd29dcc7231b58f34a84af920ef5.png

3f8c172ba58503f67a0b42949b0971b0.png

● 配置默认网关

route add default gw 192.168.1.1

● 启动wpa_supplicant连接无线网络

wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf

● 查看连接状态

wpa_cli status

1c3737f03241d05df04b90548c84a69d.png

ping 220.181.111.147

c0ec9d2907393ad2c1c4f6dab47212a4.png

ping www.youku.com.cn

44e71bc4d01eb04494379c8ce61e147c.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值