基于全志a33-vstar开发板的ap6210WiFi模块移植
可以去链接看更详细的,第一次用博客,这个编辑方式太不友好了。
文档:全志a33--系统移植--ap6210WiFi模块移?..
链接:http://note.youdao.com/noteshare?id=85b43ef1977c0b8d75f9e57b9a637845&sub=9BBA64D369974A72B68D7EAB02DCF19F
一、准备工作
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、进入WiFi_AP目录,执行命令git clone git://w1.fi/srv/git/hostap.git 下载最新的hostapd
在线克隆的版本可能会比较高,有时会出现一些问题,所以手动下载hostap1.0,编译通过。
5、下载dnsmasq,http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.75.tar.gz ,将下载到的文件拷贝到WiFi_AP,并解压
6、前期准备工作到此完成,接下对以上4个工具包进行配置及交叉编译才能在开发板上运行
二、编译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=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc交叉编译工具链路径
(2)删除 CFLAG= 中的-m64
(3)将AR= ar $(ARFLAGS) r改为AR= /usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-ar $(ARFLAGS) r
(4)将RANLIB= /usr/bin/ranlib改为RANLIB= /usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-ranlib
(5)将NM= nm改为NM= /usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-nm
(6)执行make命令
(7)make命令执行完毕后执行make install命令
三、编译libnl
1、进入libnl目录:WiFi_AP/cd libnl-1.1.4
2、配置libnl:./configure --prefix=$(pwd)/__install --enable-shared --enable-static
./configure CC=/home/wien/work/GCC_ARM/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --prefix=$(pwd)/__install --enable-shared --enable-static --host=CC=/home/wien/work/GCC_ARM/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi
3、执行命令:make CC=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc 进行交叉编译
4、执行命令:make CC=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc install 进行安装
四、交叉编译hostapd 无线网卡作为路由器,工作于AP模式
1、进入hostapd目录:cd WiFi_AP/hostap/hostapd
2、采用默认配置,执行命令:cp defconfig .config
3、启用CONFIG_DRIVER_NL80211=y
4、修改Makefile,
(1)将
ifndef CC
CC=gcc
endif
改为
ifndef CC
CC=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc
endif
(2)
在Makefile开始添加
CFLAGS += -I../../libnl-1.1.4/__install/include/
CFLAGS += -I../../openssl-1.0.2l/__install/include/
LIBS += -L../../libnl-1.1.4/__install/lib/
LIBS += -L../../openssl-1.0.2l/__install/lib/
5、执行make命令:make CC=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc
可采用同样的方法修改编译wpa_supplicant 0.7.3 无线网卡连接其他设备,工作于STA模式
如果只想WiFi模块工作与AP模式,即热点模式,则不用编译。
五、交叉编译dnsmasq
1、进入dnsmasq 目录:cd WiFi_AP/dnsmasq-2.75
2、修改Makefile:
(1)在Makefile首行添加CC=/usr/local/gcc-arm/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin/arm-linux-gnueabi-gcc
(2)设置安装目录PREFIX = /home/wien/work/Vstar/Wifi/dnsmasq-2.75/__install
3、执行make
4、编译完成后,执行make install 安装
六、至此所有工具均全部编译完成,接下来脚编译得到的可执行文件及相关配置拷贝到开发板对应目录
//需要把编译成功后产生的相关文件复制到根文件系统,再打包烧录
mkdir -p /system/vendor/modules
cp bcmdhd.ko /system/vendor/modules
cp dnsmasq.conf hostapd.conf hostapd.accept hostapd.deny /etc
cp hostapd hostapd_cli dnsmasq /sbin
cp /dragonboard/bin/fw_bcm40181a2.bin /system/vendor/modules/
cp /dragonboard/bin/nvram_ap6210.txt /system/vendor/modules/
cp /dragonboard/bin/config.txt /system/vendor/modules/
cp wifisetap.sh /
mkdir /var/lib/misc
cp dnsmasq.leases(创建一个空文件即可) /var/lib/misc
七、当wpa_supplicant编译完成之后, 会产生wpa_supplicant 、wpa_cli 、wpa_passphrase三个文件,其中wpa_supplicant 与 wpa_cli 是服务器与客户端关系,后台运行wpa_supplicant,使用 wpa_cli来搜索、设置、和连接网络。
Wpa_supplicant作用:
1、读取配置文件
2、初始化配置参数,驱动函数
3、让驱动scan当前所有的bssid
4、检查扫描的参数是否和用户设置的想否
5、如果相符,通知驱动进行权限 认证操作
6、连上AP
wpa_cli 主要用于配置WiFi。
命令:
1. 开机加载bcmdhd.ko 即加载WiFi模块
2. ifconfig wlan0 up 开启WiFi,
3. iwlist wlan0 scanning | grep ESSID 扫描附近热点,参数用于只显示热点名
4. wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0 使用wpa_supplicant 读取 *.conf中事先设置好的热点信息,并连接。
5. udhcpc -b -i wlan0 给STA模式的WiFi模块自动分配IP,否则不能ping百度。
6. ping www.baidu.com
目前仅使用wpa_supplicant 自己写配置文件 .conf 其中预先写死的WiFi名和密码,太局限性,wpa_cli 工具还没使用,另外还有其他 WiFi_tool 更强大,等后续学习使用。
命令介绍:
iw工具:是iwconfig的替代者
(1)可用于 open, WEP两种"认证/加密"的模式的使用
// 列出WIFI网卡的性能
iw list
//启动wifi模块
ifconfig wlan0 up
// 扫描WIFI AP
iw dev wlan0 scan
// 连接到WIFI AP:xxx (open模式) (没有密码的,开放式wifi的连接)
iw wlan0 connect xxx
// 连接到WIFI AP:xxx (WEP模式) 后面的xxxxx表示密码
iw wlan0 connect xxx keys d:0:xxxxxx
d: default, 0: 第0个密码
手动配置wifi热点的ip
ifconfig wlan0 192.168.1.22
ping 一下百度,看是否可以连通网络(前提,已经设置了支持外网)
ping www.baidu.com
断开热点的连接:
iw wlan0 disconnect
killall hostapd
killall dnsmasq
rmmod /system/vendor/modules/bcmdhd.ko
insmod /system/vendor/modules/bcmdhd.ko op_mode=2
ifconfig wlan0 down
ifconfig wlan0 up
hostapd /etc/hostapd.conf -B
ifconfig wlan0 192.168.1.1
dnsmasq
iwlist wlan0 scanning
编译成功之后应有一下库文件
hostapd 共享库
ld-2.11.1.so* libgcc_s.so.1* librt.so.1@
ld-linux.so.3@ libm-2.11.1.so*
libc-2.11.1.so* libm.so.6@
libc.so.6@ libpthread-2.11.1.so*
libdl-2.11.1.so* libpthread.so.0@
libdl.so.2@ librt-2.11.1.so*
dnsmasq 共享库
ld-2.11.1.so* libc.so.6@ libnss_files.so.2*
ld-linux.so.3@ libgcc_s.so.1*
libc-2.11.1.so* libnss_files-2.11.1.so*
基于全志a33-vstar开发板的ap6210WiFi模块移植的更多相关文章
- 全志A33 lichee 开发板 Linux中断编程原理说明
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 本节实验目标实现按键触发中断 ...
- iTOP-4412开发板-LinuxC-继电器模块的测试例程
平台:iTOP-4412开发板 实现:继电器模块测试例程 继电器的 C 的测试程序,C 测试程序可以在 Android系统,Qt 系统以及最小 linux 系统上运行,文档以 Android 系统上测 ...
- 基于讯为4412开发板的Android开发流程
讯为4412开发板 使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略 ...
- 芯灵思Sinlinx A33开发板boa与CGI移植
开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 641395230 在嵌入式设备的管理与交互中,基于W ...
- 基于zigbee与tiny4412开发板的环境监测系统
一.开发板环境搭建 1.tiny4412 linux系统的布置 参考博客:http://www.cnblogs.com/luoxiang/p/4186391.html 二.boa服务器的搭建 下载 ...
- 基于TQ2440开发板的WiFi模块的使用经验总结
一.软.硬件资源准备: 内核版本:linux-2.6.30.4 交叉编译器版本:4.3.3 wpa_supplicant工具:wpa_supplicant-0.7.3.tar ; openssl-0. ...
- [嵌入式开发板]iTOP-4412以模块的方式编译驱动
本文转自迅为:http://www.topeetboard.com 大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动.我们以内核里面蜂鸣器的 驱动为例来讲解. 1)首先 ...
- 东芝开发板驱动OLED模块显示LOGO图片
前言 在之前的两篇评测文章: 使用系统定时器SysTick实现精确延时微秒和毫秒函数 东芝MCU实现位带操作 介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO ...
- s5pc100开发板网卡驱动的移植
相关软件下载地址:http://pan.baidu.com/s/16yo8Y fsc100开发板 交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc 平台代码修改 vim ...
随机推荐
- 初版javascript的思维导图
- STATUS_STACK_BUFFER_OVERRUN不一定是栈缓冲区溢出
STATUS_STACK_BUFFER_OVERRUN异常一般是指栈缓冲区溢出的溢出,代码为0xC0000409,消息提示一般为“Security check failure or stack buf ...
- 27-ESP8266 SDK开发基础入门篇--编写Android SmartConfig一键配网程序
style="font-size: 18pt;">https://www.cnblogs.com/yangfengwu/p/11429007.html https://wik ...
- [RN] React Native 使用 react-native-vector-icons 图标显示问号
我在第一次使用 react-native-vector-icons 时图标显示问号 后来在网上查了很多文章,发现原因有两个 1)安装完 react-native-vector-icons 后,没有li ...
- 均值不等式中的一则题目$\scriptsize\text{$(a+\cfrac{1}{a})^2+(b+\cfrac{1}{b})^2\ge \cfrac{25}{2}$}$
例题已知正数\(a.b\)满足条件\(a+b=1\),求\((a+\cfrac{1}{a})^2+(b+\cfrac{1}{b})^2\)的最小值: 易错方法\((a+\cfrac{1}{a})^2+ ...
- linux命令之------Linux文件系统具体目录
Linux文件系统具体目录 (1)/ Linux文件系统的入口,也是处于最高一级的目录 (2)/bin 系统所需要的那些命令处于此目录,比如Is,cp,mkdir等命令:功能和/usr/bin类似 ...
- (11)Go方法/接收者
方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数.这种特定类型变量叫做接收者(Receiver).接收者的概念就类似于其他语言中的this或者 self. 方法的定义格式如 ...
- php 进制转换base_convert
16进制 转为 8进制 base_convert(number,frombase,tobase); 参数 描述 number 必需.规定要转换的数. frombase 必需.规定数字原来的进制.介于 ...
- koa post提交数据,koa-bodyparser中间件来获取post提交数据
原生 Nodejs 获取 post 提交数据 首先创建并初始化一个node应用,根路由使用index.ejs模板 var Koa=require('koa') var router = require ...
- 游标_oracle
https://blog.csdn.net/weixin_41367660/article/details/80449032