USB无线网卡的嵌入式Linux驱动移植 - 手记
USB无线网卡的嵌入式Linux驱动移植 - 手记
应用场景:嵌入式Linux开发板要通过wifi上网,需要一个无线网卡和在开发板上加载安装相应的驱动。
【参考资料:】
USB无线网卡的Linux驱动移植:
http://www.eefocus.com/embedded/316975
FS210无线网卡驱动移植:
http://www.embedu.org/Column/Column781.htm
瑞昱RTL8188cus 无线网卡驱动移植:
http://yangguangnanhai686.blog.163.com/blog/static/213779100201211103152226/
RT73 wifi无线网卡驱动移植过程:
http://blog.csdn.net/farsight2009/article/details/5660878
http://www.cnitblog.com/zouzheng/archive/2007/11/16/36358.html
嵌入式Linux下面的网卡驱动移植:
http://www.yeolar.com/note/2009/05/20/embedded-linux-card-driver/
======= 个人手记 =============
通过阅读上述资料,加载驱动程序有两种方法:
Host Linux上编译完成.ko文件,下载到开发板,insmod命令,现加载。
Host Linux上编译完成.ko文件,编译内核,将新的Kernel烧写到开发板。
目测第1种方法比较省事,先搞第1种罢。
****修改Makefile
命令:
vim Makefile
打开Makefile,参考《USBwifi驱动程序for linux快速编译和安装指南》,作如下修改:
PC y -> PC n
S3C2K4 n -> S3C2K4y
CROSS_COMPILE := /usr/local/arm/4.3.2/bin/arm-linux-gcc
(这里前提是安装了交叉编译器http://blog.chinaunix.net/uid-22342877-id-1774722.html)
- KSRC := /root/linux-2.6.32.2
修改完后应该是:
————————–这是分割线—–
ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /usr/local/arm/4.3.2/bin/arm-linux- 【尽管交叉编译器是arm-linux-gcc等其它】
#KVER := 2.6.24.7_$(ARCH)
#KSRC := /usr/src/kernels/linux-$(KVER)
KSRC := /root/linux-2.6.32.2
endif
————————–那是分割线—–
****编译
它说此时就可以编译了(http://yangguangnanhai686.blog.163.com/blog/static/213779100201211103152226/)
执行编译命令:
./make
得到如下错误提示:
make
make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux- -C /root/linux-2.6.32.2 M=/root/Downloads/rtl8188EUS_rtl8189ES_linux_v4.1.2_4787.20120803 modules
make[1]: Entering directory `/root/linux-2.6.32.2'
ERROR: Kernel configuration is invalid.
include/linux/autoconf.h or include/config/auto.conf are missing.
Run ‘make oldconfig && make prepare’ on kernel src to fix it.
WARNING: Symbol version dump /root/linux-2.6.32.2/Module.symvers
is missing; modules will have no dependencies and modversions.
Building modules, stage 2.
/root/linux-2.6.32.2/scripts/Makefile.modpost:42: include/config/auto.conf: No such file or directory
make[2]: *** No rule to make target `include/config/auto.conf’. Stop.
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/root/linux-2.6.32.2’
make: *** [modules] Error 2
———————————————–888888888888——————-
又修改了Makefile,修改完后应该是:
————————–这是分割线—–
ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := /usr/local/arm/4.3.2/bin/arm-linux-
#KVER := 2.6.24.7_$(ARCH)
#KSRC := /usr/src/kernels/linux-$(KVER)
#KSRC := /root/linux-2.6.32.2
KSRC := /usr/src/kernels/2.6.35.6-45.fc14.i686【我怀疑是这里的问题】
endif
————————–这是分割线—–
继续编译,继续出错:
make
make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux- -C /usr/src/kernels/2.6.35.6-45.fc14.i686 M=/root/Downloads/rtl8188EUS_rtl8189ES_linux_v4.1.2_4787.20120803 modules
make[1]: Entering directory /usr/src/kernels/2.6.35.6-45.fc14.i686' make[2]: \*\*\* No rule to make target
/root/Downloads/rtl8188EUS_rtl8189ES_linux_v4.1.2_4787.20120803/core/rtw_cmd.o’, needed by /root/Downloads/rtl8188EUS\_rtl8189ES\_linux\_v4.1.2\_4787.20120803/RTL8188ETV.o'. Stop. make[1]: \*\*\* [\_module\_/root/Downloads/rtl8188EUS\_rtl8189ES\_linux\_v4.1.2\_4787.20120803] Error 2 make[1]: Leaving directory
/usr/src/kernels/2.6.35.6-45.fc14.i686’
make: *** [modules] Error 2
【编译驱动之前,需要一个完整编译好的内核。如果没有,则会先花费大量时间编译好一个内核,再编译驱动。】