A33芯片+Linux3.4内核+ap6210wifi模块
开发板:全志a33-Vstar-dragonboard
linux:3.4内核
Ubuntu:16.04_amd64 & 16.04_i386 (wpa_supplicant在64位上编译没通过,可能是环境问题,最终在32位机上编译成功)
功能:开发板通过WiFi模块与Ubuntu连接同一路由,构成局域网,分别运行服务器和客户端程序,实现数据交换
一、为全志官方A33_vstar_linux.tar.gz2 搭建编译环境
- Ubuntu-16.04-amd64 上环境搭建
首先备份自己的源:cp /etc/apt/sources.list /etc/apt/sources.list.old
打开sources.list 文件,修改:vi /etc/apt/sources.list
删除全部内容后,添加网易的源:
deb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe main multiverse restricted
保存退出之后,跟新一下,使网易的源生效:apt-get update
2. 安装Uboot镜像制作工具
在官方源上找不到这个软件包,网易上有:apt-get install uboot-mkimage
3. 安装编译环境所需要的库
apt-get install
git gnupg flex bison gperf build-essential
zip curl libc6-dev libncurses5-dev x11proto-core-dev
libx11-dev:i386 libreadline6-dev:i386
libgl1-mesa-glx-lts-quantal:i386 libgl1-mesa-dev-lts-quantal
g+±multilib mingw32 tofrodos lib32ncurses5-dev
python-markdown libswitch-perl libxml2-utils xsltproc zlib1g-dev:i386
注:lib32ncurses5-dev 这是32位运行库,有可能找不到软件包,自行百度解决。
创建库的链接:
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
4. 编译器的安装与配置(非必需)
注:安装完Ubuntu-16.04-amd64之后,先查看一下GCC 的版本,gcc -v
我的是 5.4.0 比要求的 4.4.7 高,所以没有安装,可正常编译。
低于4.4.7版本请自行验证
安装GCC:
apt-get install gcc-4.4 g+±4.4 g+±4.4-multilib
配置GCC:
mv -f /usr/bin/gcc /usr/bin/bak_gcc
mv -f /usr/bin/g++ /usr/bin/bak_g++
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
ln -s /usr/bin/g+±4.4 /usr/bin/g++
二、编译全志A33官方SDK
- 解压官方SDK包,复制到a33_linux文件夹下
tar -vxf A33_vstar_linux.tar.bz2
2. 使用默认配置
cd a33_linux/dragonboard/linux-3.4/
cp a33_vstar_defconfig .config
3. 编译参数
cd …
./build.sh config
4. 编译系统
./build.sh
出现以上内容,代表编译成功
5. 编译uboot,SDK默认不编译
cd a33_linux/dragonboard/brandy/u-boot-2011.09
make distclean
make sun8iw5p1_config
make -j4
出错可以不带 -j4 ,主要是为了多线程编译,提高编译效率
出现以上内容,即代表uboot编译完成。
6. 镜像打包
./build.sh pack
按照提示的路径找到 .img 镜像文件,烧录到开发板。
-----------------------至此,全志官方SDK已全部编译完成,接下来开始WiFi模块移植------------------------------------
ap6210 WiFi模块移植
根据A33官方文档,开发板上搭载的ap6210模组使用SDIO接口,802.11b/g/n 协议,支持Station、Softap、wifi direct 功能。
官方SDK在编译时会默认编译所有的 realtek wifi 驱动,会造成生成的镜像体积很大。
所以:在进入 a33_linux/dragonboard/linux-3.4 之后
make ARCH=arm menuconfig
【】Networking support —>
< > Bluetooth subsystem support —> 取消选中
< > RF switch subsystem support —> 取消选中
Wireless —>
<> cfg80211 - wireless configuration API
[ * ] nl80211 testmode command //这个选项要选上,协议支持的原因
Device Drivers —>
Network device support —>
Wireless LAN —>
Broadcom 4329/30 wireless cards support
此项会生成 /system/vendor/modules/fw_bcmxxx.bin和 /system/vendor/modules/nvram_apxxxx.txt
Interrupt type (Out-of-Band Interrupt)—>
< > Low level trigger for OOB interrupt 此项是否打开取决于 原理图 中,模组的 WL-WAKE-HOST 脚
与主控中间是否接反相器,若有则选中,实际中并没有看到这个选项。
若要实现WiFi工作于AP模式,即作热点,需要把 IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)选上。
执行:make
之后再对内核进行编译 ./build.sh
• WiFi模块移植
1. 新建文件夹 WiFi_AP
2. 下载OpenSSL下载地址 https://www.openssl.org/source/old/,在这里我所下载的版本是openssl-1.0.2l.tar.gz 下载地址https://www.openssl.org/source/old/1.0.2/openssl-1.0.2l.tar.gz ,将下载到的文件拷贝到WiFi_AP,并解压。
3. 下载libnl,下载地址http://www.infradead.org/~tgr/libnl/,在这里我所下载的版本是libnl-1.1.4.tar.gz 下载地址http://www.infradead.org/~tgr/libnl/files/libnl-1.1.4.tar.gz 将下载到的文件拷贝到WiFi_AP,并解压。
4. 最好手动下载hostap,在线克隆的版本可能会比较高,有时会出现一些问题,所以手动下载hostap1.0,编译通过。
5. 下载dnsmasq,http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.75.tar.gz ,将下载到的文件拷贝到WiFi_AP,并解压。
6. 下载wpa_supplicant-0.7.3,http://w1.fi/releases/wpa_supplicant-0.7.3.tar.gz
注:使用WiFi模块搭建热点AP模式,需要 libnl 和 openssl 库支持,即libnl+openssl+hostap
------------------------在32位环境下----------------------------
编译OpenSSL
1、进入openssl 目录:cd WiFi_AP/openssl-1.0.2l
2、配置openssl:./config no-asm shared --prefix=$(pwd)/__install
no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的。
shared :生成动态连接库。
--prefix :指定make install后生成目录的路径,不修改此项则默认为OPENSSLDIR目录(/usr/local/ssl)。
3、修改Makefile:
(1)修改编译工具CC=/home/fan/tool_chain/external-toolchain/bin/arm-linux-gnueabi-gcc交叉编译工具链路径
(2)删除 CFLAG= 中的-m64
(3)将AR= ar $(ARFLAGS) r改为AR= /home/fan/tool_chain/external-toolchain/bin/arm-linux-gnueabi-ar ( A R F L A G S ) r ( 4 ) 将 R A N L I B = / u s r / b i n / r a n l i b 改 为 R A N L