BB-Black 内核编译并加载WL18(wifi)驱动
这篇文章主要是将TI公司提供的官方资料(http://processors.wiki.ti.com/index.php/Using_the_WL18xx_Cape_with_BeagleBone_Black)执行了一遍。
执行命令式一定要看清它在哪个目录下去执行
BB-Black 从SD卡启动,SD卡内存有最新的Angstrom系统镜像文件,启动后信息如下:
这步我是检测下载的最新的镜像文件(Linux 内核版本为 3.8.13)有没有正常工作,很显然没问题。
一:安装ARM交叉编译器
安装git 输入命令:sudoapt-get install git
为自己配置身份信息:
输入命令:
git config --global user.email "your@email.com"
git config --global user.name "yourname"安装ARM交叉编译器
输入命令:sudoapt-get install gcc-arm-linux-gnueabi
交叉编译器安装在了 /usr/bin/ 目录下。
二:BB-Black Angstrom linux kernel(3.8.13)的构建过程
1.创建一个文件夹用来存放内核与wl18xx模块
输入命令:mkdir ti-wl18xx
export "ti-wl18xx" as "BUILD_DIR",
输入命令:export BUILD_DIR=/home/xs/ti-wl18xx
路径按自己的来,我的ti-wl18xx 创建在了/home/xs/ 目录下了,所以我的BUILD_DIR=/home/xs/ti-wl18xx 。(export BUILD_DIR=/home/xs/ti-wl18xx 这个命令说白了就是用BUILD_DIR这个名字替代/home/xs/ti-wl18xx,当你想进入/home/xs/ti-wl18xx目录下时,只需输入:cd $BUILD_DIR 。这样使命令简单,不用记很长的路径名)
在/home/xs/ti-wl18xx目录下创建partial_rootfs文件夹。
输入命令:mkdir -p $BUILD_DIR/partial_rootfs
在/home/xs/ti-wl18xx目录下创建partial_rootfs文件夹。
输入命令 : mkdir-p $BUILD_DIR/partial_rootfs
export WILINK8_PARTIAL_ROOTFS_DIR to "partial_rootfs"
输入命令:export WILINK8_PARTIAL_ROOTFS_DIR=$BUILD_DIR/partial_rootfs
2. 下载内核源代码与WL18xx补丁,进入wl18目录下
输入命令:cd$BUILD_DIR
Checkout updated kernel source for Beaglebone Black frombelow github。
输入以下几个命令:
git clone git://github.com/TI-Wilink8/kernel.git
cd kernel
git checkout wl18xx_bbb_support
./patch.sh
./patch.sh 命令执行完后有警告,警告的原因我也没搞清楚,但不影响使用,只要不出错误就好。
安装LZO,输入命令:sudo apt-get install lzop (LZO compression is being used for the uImage。)
安装mkimage:
输入命令 : sudoapt-get install u-boot-tools ( uboot-mkimage 在 14.04 版本的 ubuntu 下找不到,但是可以用 u-boot-tools 代替。 mkimage is being used forthe uImage )三:编译带有WL18XX补丁的内核
Copy configs file to kernel:
输入命令:cp configs/beaglebone kernel/arch/arm/configs/beagleboneblack_defconfig
Copy firmware.bin to kernel:
输入命令:wget http://arago-project.org/git/projects/?p=am33x-cm3.git\;a=blob_plain\;f=bin/am335x-pm-firmware.bin\;hb=HEAD -O kernel/firmware/am335x-pm-firmware.bin
Building kernel and modules:
输入命令:cd kernel
Build the config:
输入命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-beagleboneblack_defconfig这个命令在运行时有可能会出现错误,错误现象:
出现错误的原因自己百度,解决方法是:修改/home/xs/ti-wl18xx/kernel/kernel/drivers/gpu/drm/tilcdc/Kconfig 配置文件,按下图所示修改(下图是已经修改好的)。
修改后执行命令,错误消失,但是依然有警告。我们不用管警告,只要没错误就好。如图:
Build uImage and dtb:
输入命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 uImage dtbs
Build modules:
输入命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 modules
Install kernel modules into rootfs:
输入命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=$WILINK8_PARTIAL_ROOTFS_DIR modules_install
Build uImage-dtb:
输入命令:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage-dtb.am335x-boneblack
四:编译WL18XX相关组件过程
回到ti-wl18xx目录下,输入命令:cd $BUILD_DIR
Download components and checkout appropriatecommit :
下载wl18xx相关组件
1. 输入命令:git clone git://github.com/TI-OpenLink/wl18xx.git
进入刚刚下载好的文件夹下,输入命令: cd wl18xx
在该目录下输入命令:git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
以下几个命令跟上面这一个步骤基本一样,我就不传图片了。
2.输入命令:git clone git://github.com/TI-OpenLink/hostap.git进入下载的hostap目录,输入命令:cd hostap
在该目录下输入命令:git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
3.输入命令:git clone git://github.com/TI-OpenLink/compat-wireless.git进入compat-wireless目录下,输入命令:cd compat-wireless
在该目录下输入命令:git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
4.输入命令:git clone git://github.com/TI-OpenLink/18xx-ti-utils.git进入18xx-ti-utils目录下,输入命令:cd 18xx-ti-utils
在该目录下输入命令:git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
5.输入命令:git clone git://github.com/TI-OpenLink/wl18xx_fw.git进入wl18xx_fw目录下,输入命令:cd wl18xx_fw
在该目录下输入命令: git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
6.输入命令:git clone git://github.com/TI-OpenLink/wl12xx_target_scripts.git进入wl12xx_target_scripts目录下,输入命令:cd wl12xx_target_scripts
在该目录下输入命令:git checkout ol_r8.a7.01 -b working-branch
返回ti-wl18xx目录下,输入命令:cd ..
7.输入命令:git clone git://github.com/TI-Wilink8/compat.git进入compat目录下,输入命令:cd compat
在该目录下输入命令:git checkout wl18xx_bbb_support
在该目录下输入命令:git reset --hard 5cc37a00cc395a59f54344b04c86aa3e322c0117返回ti-wl18xx目录下,输入命令:cd ..
五.构建系统脚本
在ti-wl18xx目录下创建utility文件夹,并进入该文件夹下,输入命令:mkdir utility && cd utility
进入build_utilites目录下,输入命令:cd build-utilites/你会看到有以下内容:
创建编译环境脚本文件,将setup-env.sample复制一份并以setup-env命名。输入命令:cp setup-env.samplesetup-env
对setup-env文件进行编辑,编辑后的内容如下图:
输入命令:sudo vi setup-env 对环境脚本文件进行编辑
修改后结果如下图:
修改完后,保存并退出。
安装corkscrew:
输入命令:sudo apt-get install corkscrew
下面的几个工具安装基本和上面那个基本相同我也不截图了。
安装python-m2crypto,输入命令:sudo apt-get install python-m2crypto
安装bison工具,输入命令:sudo apt-get install bison
安装flex工具,输入命令:sudo apt-get install flex
至于上面这几个工具的作用,可以百度一下。
编译wl18xx模块,输入命令:./wl18xx_build.sh wl18xx_modules build
将wl18xx模块安装进内核,输入命令:sudo ./wl18xx_build.sh wl18xx_modules install
编译WLAN-wl18xx的相关组件,
1.下载libnl 输入命令:./wl18xx_build.sh libnl download
编译libnl 输入命令:./wl18xx_build.sh libnl build
安装libnl 输入命令:sudo ./wl18xx_build.shlibnl install
2.下载openssl 输入命令:./wl18xx_build.sh openssl download
编译openssl输入命令:./wl18xx_build.sh opensslbuild
安装openssl 输入命令:sudo ./wl18xx_build.sh openssl install
3.下载iw 输入命令:./wl18xx_build.sh iwdownload
编译iw 输入命令:./wl18xx_build.sh iw build
安装iw 输入命令:sudo ./wl18xx_build.sh iw install
4.编译hostapd 输入命令:./wl18xx_build.sh hostapd build
安装hostapd 输入命令:sudo ./wl18xx_build.sh hostapd install
5.编译wpa_supplicant 输入命令:./wl18xx_build.sh wpa_supplicant build
安装wpa_supplicant 输入命令:sudo ./wl18xx_build.sh wpa_supplicantinstall
6.下载crda 输入命令:./wl18xx_build.sh crda download
编译crda 输入命令:./wl18xx_build.sh crda build
安装crda 输入命令:sudo ./wl18xx_build.sh crda install
7.编译calibrator 输入命令:./wl18xx_build.sh cablibrator build
安装calibrator 输入命令:sudo ./wl18xx_build.sh calibrator install
8.编译wlconf 输入命令:./wl18xx_build.sh wlconf build
安装wlconf 输入命令:sudo ./wl18xx_build.sh wlconf install
进入/home/xs/ti-wl18xx/ partial_rootfs 目录下,你会看到以下信息:
六:将编译好的文件拷贝到SD卡中
下图所示是我的SD卡在linux下的识别信息(红点的那两个),注意一下SD卡的挂载名称可能不一样。
进入/home/xs/ti-wl18xx/kernel/kernel 目录下,输入命令:cd $BUILD_DIR/kernel/kernel删除SD卡中/media/xs/Angstrom/boot 目录下的uImage文件,输入命令:rm -f /media/xs/Angstrom/boot/uImage
拷贝新的uImage文件到/media/xs/Angstrom/boot目录下,输入命令:cp arch/arm/boot/uImage /media/xs/Angstrom/boot/
copy am335x-bone.dtb to sdcard 输入命令:sudocp arch/arm/boot/dts/am335x-bone.dtb /media/xs/Angstrom/boot/
copy am335x-boneblack.dtb to sdcardcp输入命令:sudo cp arch/arm/boot/dts/am335x-boneblack.dtb /media/xs/Angstrom/boot/
copy kernel modules to sdcard 输入命令:sudo cp -rf $WILINK8_PARTIAL_ROOTFS_DIR/lib/modules/ 3.8.13-00726-g13f520f-dirty /media/xs/Angstrom/lib/modules/
这个有点问题,网页上给的命令是cp -rf $WILINK8_PARTIAL_ROOTFS_DIR/lib/modules/3.8.13-dirty /media/Angstrom/lib/modules/ 但是我的那个目录下只有这个东西:所以把3.8.13-dirty 改成3.8.13-00726-g13f520f-dirty。具体是什么,看看你的那个目录下就可以了。
进入/home/xs/ti-wl18xx/ partial_rootfs目录下,输入命令:cd $WILINK8_PARTIAL_ROOTFS_DIRcreate aseparate folder "wl18xx_modules" on the target root filesystem andcopy compat-wireless modules in it
输入命令:sudomkdir -p /media/xs/Angstrom/home/root/wl18xx_modules/
输入命令:cp -rf lib/modules/3.8.13-00726-g13f520f-dirty/updates/* /media/xs/Angstrom/home/root/wl18xx_modules/
Finally after copy, following directories exitsunder 'wl18xx_modules' directory
Copy firmware into SD card
输入命令:mkdir -p /media/xs/Angstrom/lib/firmware/ti-connectivitycp -rf$BUILD_DIR/wl18xx_fw/*.bin /media/xs/Angstrom/lib/firmware/ti-connectivity
这个命令执行后,ti-connectivity文件夹下会有wl18xx-fw-2.bin这个文件,这个文件wl18xx驱动版本有点高,不适合,wlan启动不起来。不信的话,这个命令可以执行试试。直接拷贝我提供的那个wl18xx-fw-2.bin文件(http://pan.baidu.com/s/1gdGeOa3)
cpusr/sbin/wlconf/wl18xx-conf-default.bin /media/xs/Angstrom/lib/firmware/ti-connectivity/wl18xx-conf.bin
Copy libnl into sdcard 输入命令:sudocp -rf etc/libnl/* /media/xs/Angstrom/etc/libnl
Copy libnl library files into SD card 输入命令:sudocp -rf lib/libnl* /media/xs/Angstrom/lib/
Copy udev rules to SD card 输入命令:sudo cp etc/udev/rules.d/85-regulatory.rules /media/xs/Angstrom/etc/udev/rules.d/
Copy crda and regdbdump into SD card 输入命令:sudocp -rf sbin/* /media/xs/Angstrom/sbin/
Copy crda regulatory.bin into SD card 输入命令:sudocp -rf usr/lib/crda /media/xs/Angstrom/usr/lib/
Copy crda man page into SD card 输入命令:sudo cp -rf usr/share/man/man8 /media/xs/Angstrom/usr/share/man/
Copy iw into SD card 输入命令:sudocp usr/sbin/iw /media/xs/Angstrom/usr/sbin/
Copy wpa_supplicant into SD card 输入命令:sudocp usr/local/sbin/wpa_supplicant /media/xs/Angstrom/usr/sbin/
Copy hostapd into SD card 输入命令:sudocp -rf usr/local/bin/hostapd /media/xs/Angstrom/usr/sbin/
将SD卡拔出,插入到BB-Black插槽中,上电启动,启动完成后的信息如下图:
这时你会看到WL18(WIFI)的板子上有个蓝灯(LED1)会亮起来。这就说明WL18板成功驱动起来了。下面进行WIFI的连接测试:
dmesg这个命令我执行过,出不来他显示的信息,可能是因为我删除过它里面的一个东西,但不影响使用。
下面启动WIFI,输入以下命令:
ifconfig eth0 down
ifconfig wlan0 up
iw wlan0 scan |grep SSID
SSID是检测到的无线网 输入命令:
iw wlan0 connect TP-LINK_QIU1
iw wlan0 link
输入命令: udhcpc -i wlan0
连接上后,获得的IP地址,输入:ifconfig 查看IP地址信息。可以看到路由器给我的板子分配的IP地址为192.168.1.120:
现在就可以上网了,ping一下路由,输入命令:ping 192.168.1.1可以ping通,至此我们的BB-Black+Wl18组成的网关就可以上网了。