snifer

[原创]基于嵌入式s5pc100的无线wifi模块的移植与实现

0
阅读(5171)

最近到了学生的毕业季,遇到了学生移植嵌入式系统的问题,尤其是移植无线wifi模块的问题特别多,我现在在嵌入式s5pc100的板子上实现,与大家一同分享这个过程。

在linux官网下载最新的稳定版本版本的系统

下载好以后:

# tar xvf linux-3.9.8.tar.xz

二、解压源码

#tar xvf linux-3.9.8.tar.xz

三、打补丁

# xz patch-3.9.8.xz

# mv patch-3.9.8 linux-3.9.8

# cd linux-3.9.8

# patch -Np1 -i patch-3.9.8

重要的是 移植 SDIO Marvell 8686 wifi

1、内核选配

[*] Networking support --->

-*- Wireless --->

<*> cfg80211 - wireless configuration API

[*] enable powersave by defaul

[*] cfg80211 wireless extensions compatibility

[*] Wireless extensions sysfs files

{*} Common routines for IEEE802.11 drivers

<*> Generic IEEE 802.11 Networking Stack (mac80211)

[*] Enable mac80211 mesh networking (pre-802.11s) support

Device Drivers --->

Generic Driver Options --->

(sd8686.bin sd8686_helper.bin) External firmware blobs to build into the kernel binary

(firmware) Firmware blobs root directory

[*] Network device support --->

[*] Wireless LAN --->

<*> Marvell 8xxx Libertas WLAN driver support

<*> Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards

2、添加固件

sd8686.binsd8686_helper.bin拷贝到源码目录树下的firmware目录下。

3、驱动修改

固件匹配可能出错

修改驱动drivers/net/wireless/libertas/if_sdio.c

MODULE_FIRMWARE("libertas/sd8385_helper.bin");

MODULE_FIRMWARE("libertas/sd8385.bin");

MODULE_FIRMWARE("sd8385_helper.bin");

MODULE_FIRMWARE("sd8385.bin");

MODULE_FIRMWARE("libertas/sd8686_v9_helper.bin");

MODULE_FIRMWARE("libertas/sd8686_v9.bin");

MODULE_FIRMWARE("libertas/sd8686_v8_helper.bin");

MODULE_FIRMWARE("libertas/sd8686_v8.bin");

MODULE_FIRMWARE("sd8686_helper.bin");

MODULE_FIRMWARE("sd8686.bin");

MODULE_FIRMWARE("libertas/sd8688_helper.bin");

MODULE_FIRMWARE("libertas/sd8688.bin");

MODULE_FIRMWARE("sd8688_helper.bin");

MODULE_FIRMWARE("sd8688.bin");

改为:

#if 0

MODULE_FIRMWARE("libertas/sd8385_helper.bin");

MODULE_FIRMWARE("libertas/sd8385.bin");

MODULE_FIRMWARE("sd8385_helper.bin");

MODULE_FIRMWARE("sd8385.bin");

MODULE_FIRMWARE("libertas/sd8686_v9_helper.bin");

MODULE_FIRMWARE("libertas/sd8686_v9.bin");

MODULE_FIRMWARE("libertas/sd8686_v8_helper.bin");

MODULE_FIRMWARE("libertas/sd8686_v8.bin");

#endif

MODULE_FIRMWARE("sd8686_helper.bin");

MODULE_FIRMWARE("sd8686.bin");

#if 0

MODULE_FIRMWARE("libertas/sd8688_helper.bin");

MODULE_FIRMWARE("libertas/sd8688.bin");

MODULE_FIRMWARE("sd8688_helper.bin");

MODULE_FIRMWARE("sd8688.bin");

#endif

就这样就OK了,实现了系统的配置,三个同学做wifi相关的设计,一个一个解答,这下大家都明白了吧,谢谢

Baidu
map