210平台使用USB Wi-Fi无线网卡,市面上流行的无线网卡有Ralink Technology公司的RT5370STA系列和Realtek公司的RTL8188系列,我们希望在210开发板上可以兼容这几种流行的USB网卡。
这两个系列的USB无线网卡都有开源的Linux驱动下载,但源码移植到我们的平台还需要一定的配置和修改,下面就分两部分介绍210 USB无线网卡驱动的移植过程。
移植Realtek RTL8188
通过网络下载或者购买设备附送光盘得到Realtek公司的RTL8188系列USB无线网卡设备的Linux驱动。
a) 解压查看源码
$ tar xvf rtl8192CU_linux_v2.0.tar.bz2
$ cd rtl8192CU_linux_v2.0
b) 修改Makefile文件
i. 修改平台为ARM(这里我们选择ARM_S3C6K4)。36行设置为’n’,30行ARM_S3C6K4设置为’y’;
ii. 修改Linux内核路径(146行)及指定交叉工具链(144行);
c) 修改源代码文件;
i. 在新版本的内核中,smp_lock.h头文件已经被移除,一般情况下可以用hardirq.h文件代替。修改以下文件中包含头文件;
./include/rtw_io.h
./core/rtw_security.c
./core/rtw_cmd.c
./core/rtw_mlme.c
./core/rtw_io.c
./hal/rtl8192c/usb/rtl8192c_cmd.c
./hal/.rtl8192c_d_hal_init.o.cmd
./hal/.hal_init.o.cmd
./os_dep/linux/mlme_linux.c
//修改
# include <linux/smp_lock.h>
//为
# include <linux/hardirq.h>
// Linux替换命令
sed -i "s/smp_lock/hardirq/g" `grep smp_lock -rl ./`
ii. 在新版本的内核中,函数init_MUTEX(&sem)已经被移除,一般情况下可以用函数sema_init(&sem, 1)代替。修改os_dep/osdep_service.c文件292行;
d) 编译源码;
$ make clean
$ make –j2//编译
如下即编译成功:
拷贝编译生成的驱动文件(8192cu.ko)到Android文件系统目录。
e) 测试(在开发板运行)
i. 在FS210开发板加载驱动文件,加载成功可以看到RT5370模块上的LED闪烁;
# insmod 8192cu.ko
ii. 使用ifconfig查看网络;
# ifconfig