最近到了学生的毕业季,遇到了学生移植嵌入式系统的问题,尤其是移植无线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.bin、sd8686_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相关的设计,一个一个解答,这下大家都明白了吧,谢谢