Cubietruck Plus 编译linaro-desktop-14.04卡启动固件和8192cu驱动步骤

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

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...