基于全志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 ...
随机推荐
- 洛谷 P3376 【模板】网络最大流 题解
今天学了网络最大流,EK 和 Dinic 主要就是运用搜索求增广路,Dinic 相当于 EK 的优化,先用bfs求每个点的层数,再用dfs寻找并更新那条路径上的值. EK 算法 #include< ...
- git create remote branch (五)
admin@PC-panzidong MINGW64 ~/WebstormProjects/backEndServer (master) 查看本地分支信息$ git branch* master ad ...
- 洛谷 P2312 解方程 题解
P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...
- 洛谷 题解 P2731 【骑马修栅栏 Riding the Fences】
简单的开始 完美の开始 这里数组什么的用来干什么后面标注的清楚了 #include<iostream> #include<cstdio> #include<cmath&g ...
- C++通过迭代修改字符串本身(auto类型说明符)
以字符串这种支持 for (declaration : expression) statement 这样for语句迭代的数据结构为例,我们看看auto关键字在类型推断中的作用. string s = ...
- 【洛谷】P4198 楼房重建(线段树)
传送门 分析 被线段树按在地上摩擦 先把左边转化成斜率,那么这个题就转化成每次修改一个点的值,输出前缀最大值的个数 看到标签是线段树,所以还是想想线段树的做法吧 既然是线段树,那么就要将区间分成两半 ...
- ubuntu之路——day17.1 卷积操作的意义、边缘检测的示例、filter与padding的关系、卷积步长
感谢吴恩达老师的公开课,以下图片均来自于吴恩达老师的公开课课件 为什么要进行卷积操作? 我们通过前几天的实验已经做了64*64大小的猫图片的识别. 在普通的神经网络上我们在输入层上输入的数据X的维数为 ...
- 第10组 Beta冲刺(4/5)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 将数据分析以可视化形式展示出来 新增数据分析展示等功能API 服务器后端部署, ...
- 【转】Android系统中Fastboot和Recovery所扮演的角色。
Android 刷机过程中 Fastboot 和 Recovery 的作用是什么? 自己在知乎的一篇回答,,现在翻出来放到博客,希望可以解答更多人的疑惑,抑或有什么理解上的错误,也望网友指出~ 今天恰 ...
- Python selenium PO By.XPATH定位元素报错
Python selenium PO By.XPATH定位元素报错 如下代码经常报错: # 首页的“新建投放计划”按钮 new_ads_plan = (By.XPATH, "//*[tex ...