环境:Ubuntu10.10
linux-2.6.38.8
S3C2440
交叉编译工具链:arm-none-linux-gnueabi-
一、 SDIO 设备驱动移植
1、 修改SD卡驱动使内核支持SD卡
修改文件:arch/arm/mach-s3c2440/mach-smdk2440.c
1.1、添加所需头文件:
#include<mach/gpio.h>
#include<linux/mmc/host.h>
#include<plat/mci.h>
1.2、增加平台设备对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,
};
1.3、添加平台数据dev->platform_data
1.4、在smdk2440_machine_init中添加
s3c24xx_mci_set_platdata(&smdk2440_mmc_cfg);
二、 配置内核以支持Marvel无线WIFI
选择38内核中的wlan marwell sdio模块
[*] Networking support --->
-*- Wireless --->
<*> cfg80211 - wireless configuration API
{*} Common routines for IEEE802.11 drivers
Device Drivers -->
[*] Network device support --->
[*] Wireless LAN --->
<M> Marvell 8xxx Libertas WLAN driver support
<M> Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards
三、 编译内核,生成驱动模块
1、 先执行make 然后make modules 最后执行make uImage
2、 将生成的wlan相关模块的.ko文件拷贝到目标板文件系统中,在这里我们放在文件系统根目录下的/sdio中
terry@terry-virtual-machine:~/terry_shared/kernel3/linux-2.6.38.8/drivers/net/wireless/libertas$
3、 cp libertas.ko libertas_sdio.ko /opt/fs2410/filesystem/sdio/
4、 将Marvell 88W8686的固件helper_sd.bin sd8686.bin拷贝到挂载的文件系统相应的位置/opt/fs2410/filesystem/lib/firmware/mrvl
四、 制作无线测试工具及测试
无码(没有密码)
测试无线网卡用无线工具iwconfig iwlist等命令是通过开源软件wireless_tools_29.rar编译得到。
步骤:
1、首先在windows目录解压上面那个软件包,把解压后的文件夹复制到Ubuntu /home$ls
wireless_tools_29
/home/wireless_tools_29$
2、修改Makefile
接着make 然后执行make install 即可。在/home/wtools下查看有:
lib sbin usr
3、拷贝lib目录下的libiw.so、libiw.so.29库和测试工具到文件系统中
/home/wtools/lib/$cp * /opt/fs2410/filesystem/lib -a
/home/wtools/sbin/$cp * /opt/fs2410/filesystem/bin
五、Wifi Module测试:
启动S3C2440加载内核、挂载文件系统、插入wifi module
手动加载wifi module模块
/sdio # ifconfig wlan0 up //启动网络连接
/sdio # iwlist wlan0 scanning //扫描热点
/sdio # iwconfig wlan0 essid "byL" //连接某一个热点
/sdio # ifconfig wlan0 192.168.8.99 netmask 255.255.255.0 up
/sdio # route add default gw 192.168.8.1
/sdio # ping 192.168.8.1
OK!