Cubietruck Plus 编译linaro-desktop-14.04卡启动固件和8192cu驱动步骤
先上图片,这个是我自己编译的linaro-desktop-14.04卡启动固件,以及8192cu驱动,可以看到有两个接口,可以正常使用无线功能。
cubietruck plus,cb5,cubieboard5是一个意思。
下面说说具体步骤:
一. 搭建ubuntu 12.04 x64交叉编译环境
首先在配置高机器上搭建ubuntu 12.04 x64交叉编译环境,编译出整个系统固件。没错,再说一次,就是编译出来整个系统固件!!
参考文章
Cubietruck Plus linux-sdk环境搭建以及系统固件编译步骤
http://www.jb51.cc/article/p-gyrtmqas-bew.html
这个步骤需要下载cb5的源代码和文件系统等,需要编译整个系统,需要花费些时间。按照步骤编译出自己的tf card启动固件,具体可参考官方文档。
为什么要编译出整个固件?因为编译出可正常使用的8192cu驱动需要和当前系统的内核一致版本的内核源码,编译整个固件,就能达到这个目标。然后,在这个基础上,才能编译出来可以正常使用的8192cu驱动。
这样的步骤也是最不会出问题的。
我搭建的交叉编译环境目录是:
root@ubuntu12-dev-x64:~/ct_plus-linux-sdk# pwd
/root/ct_plus-linux-sdk
root@ubuntu12-dev-x64:~/ct_plus-linux-sdk# ls
binaries linux-3.4 products rootfs tools
二. 下载8192cu的驱动源代码
地址如下
http://download.csdn.net/detail/mizaizyf/7018269
注:这个压缩包里面还包含应用层工具,可以忽略掉,只编译drivers的源代码.
三. 在交叉编译环境下修改源代码并编译8192cu驱动
进入解压后的驱动源代码目录,如下
root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# ls clean core hal ifcfg-wlan0 include Kconfig Makefile os_dep runwpa wlan0dhcp
首先,修改Makefile,变动的地方如下,KSRC参数按实际目录修改.
CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_ARM_S3C2K4 = y ...... ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4),y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-linux-gnueabihf- KVER := 3.4.39 KSRC := /root/ct_plus-linux-sdk/linux-3.4 endif
然后,修改include/autoconf.h,去掉前面的双斜线注释符号,把这个CONFIG_CONCURRENT_MODE打开。
原来//#define CONFIG_CONCURRENT_MODE 1 改成#define CONFIG_CONCURRENT_MODE 1
这样驱动在加载的时候同时创建两个设备节点。
root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# make make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /root/ct_plus-linux-sdk/linux-3.4 M=/root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911 modules make[1]: Entering directory `/root/ct_plus-linux-sdk/linux-3.4' CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_cmd.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_security.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_debug.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_io.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_ioctl_query.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_ioctl_set.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_ieee80211.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_mlme.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_mlme_ext.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_wlan_util.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_pwrctrl.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_rf.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_recv.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_sta_mgt.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_ap.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_xmit.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_p2p.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_tdls.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_br_ext.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_iol.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/rtw_sreset.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/core/efuse/rtw_efuse.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/hal_intf.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/hal_com.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/dm.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_hal_init.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_phycfg.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_rf6052.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_dm.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_rxdesc.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_cmd.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/usb_halinit.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/rtl8192cu_led.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/rtl8192cu_xmit.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/rtl8192cu_recv.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/usb_ops_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_sreset.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/rtl8192c_xmit.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/hal/rtl8192c/usb/Hal8192CUHWImg.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/osdep_service.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/os_intfs.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/usb_intf.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/usb_ops_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/ioctl_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/xmit_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/mlme_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/recv_linux.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/ioctl_cfg80211.o CC [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/rtw_android.o LD [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/8192cu.o Building modules,stage 2. MODPOST 1 modules CC /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/8192cu.mod.o LD [M] /root/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/8192cu.ko make[1]: Leaving directory `/root/ct_plus-linux-sdk/linux-3.4' root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# ls 8192cu.ko 8192cu.mod.o clean hal include Makefile Module.symvers runwpa 8192cu.mod.c 8192cu.o core ifcfg-wlan0 Kconfig modules.order os_dep wlan0dhcp
编译后的8192cu.ko包含了调试信息,可以strip瘦身。
arm-linux-gnueabihf-strip -d 8192cu.ko如下所示,瘦身后的效果非常明显。
root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# ll 8192cu.ko -rw-r--r-- 1 root root 10621041 Feb 10 20:55 8192cu.ko root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# arm-linux-gnueabihf-strip -d 8192cu.ko root@ubuntu12-dev-x64:~/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911# ll 8192cu.ko -rw-r--r-- 1 root root 856920 Feb 10 21:02 8192cu.ko
四. 在cb5上加载8192cu.ko
第一步我们已经编译并烧写了自己的tf card固件,将tf card插入cb5,上电启动。
把8192cu.ko使用u盘或者网络传到/lib/modules/3.4.39/kernel/drivers/net/wireless/8192cu/。
插入8192cu无线网卡,并加载8192cu驱动。如下命令:
cd /lib/modules/3.4.39/kernel/drivers/net/wireless mkdir 8192cu cp path/8192cu.ko 8192cu depmod -a modprobe 8192cu ifname=wlan1 if2name=p2p1
运行命令启动链路
ip link set wlan1 up
默认开机不自动加载驱动,
可以vi /etc/modules加入以下内容,即可开机加载无线网卡驱动。
bcmdhd是板载的wifi驱动名。
bcmdhd 8192cu ifname=wlan1 if2name=p2p1
可以使用Wicd Network Manager工具,设置配置里面的无线接口为wlan1,然后扫描wifi连接。
后记:
第一步已经搭建了源代码环境,实际上把ubuntu 12.04 x64的/root/ct_plus-linux-sdk/linux-3.4目录的源代码运行make clean后,复制到cb5的系统相同的目录/root/ct_plus-linux-sdk/linux-3.4,然后在cb5这个目录运行make prepare&&make modules_prepare,即可在cb5的系统里面搭建本机驱动编译环境,也可以成功编译出来8192cu.ko。O(∩_∩)O