linux WiFi源码解析,Wifi移植浅析
作者:熊老师,
大家都知道在做wifi的移植过程中主要是涉及到移植三个东西,一个openssl的移植,一个wpa_suplicant的移植。还有一个就是添加咱们的wifi驱动了,咱们这里使用的rt8192cu.ko。这三个家伙搞定了,咱们的wifi就可以使用了哦。
一 、openssl的移植
我们先来搞清楚openssl是干什么的,为甚么要移植它?带着这些问题咱们往下看吧!
Openssl是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。SSL是Secure
Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。源码下载网站 http://www.openssl.org/source/,咱们用的源码是openssl-0.9.8e.tar.gz
1.1 解压源码
tar xvf openssl-0.9.8e.tar.gz
1.2 给源码打补丁
openssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e,所以我们要拷贝wpa_supplicant-0.7.2/patches/
openssl-0.9.8e-tls-extensions.patch拷贝到openssl-0.9.8e源码下。
(在wifi目录下新建一个openssl目录)
patch –p1
< openssl-0.9.8e-tls-extensions.patch
1.3配置编译安装
./Configure linux-elf-arm
-DL_ENDIAN linux:'arm-none-linux-gnueabi-gcc' shared
--prefix=/home/linux/workdir/wifi/openssl //要视具体路径而定
make
make
install
这些都是咱们移植手册上提供的,那么咱们来看看这些参数的含义和这么运用他们的根据。
Linux-elf-arm 表示咱们的平台是arm,下见图中INSTALL
-DL_ENDIAN 调试
Linux:‘arm-none-linux-gnueabi-gcc’咱们编译使用的交叉工具链
Shared:生成共享库
--prefix:就是咱们的安装路径,
当然以上的这些参数都是可以调整的,其实这些东西都可以在Makefile INSTALL
README中寻找到的,官方文档为咱们的配置移植,都提供了详细的解释说明的,所以移植不要怕,查看官方文档就ok的了
二、wpa_suplicant 移植
上面咱们说了openssl就是一个加密的东东,那么wpa_suplicant简单的说,就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。
具体的移植步骤如下:
进入~/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目录下
makefile修改
下列路径要视具体情况而定
添加
CC=arm-none-linux-gnueabi-gcc
在
CFLAGS
= -I../src
CFLAGS
= -I../src/utils
下添加:
CFLAGS
= -I/home/linux/workdir/wifi/openssl/include
修改
LIBS
= -lssl
为
LIBS
= -lssl -L/home/linux/workdir/wifi/openssl/lib/
修改
LIBS_p
= -lcrypto
为
LIBS_p
= -lcrypto -L/home/linux/workdir/wifi/openssl/lib/
对于makefile的修改的就不用多说了吗,如果你有写的不对的地方,你编译的时候,它直接就会给出错误的提示,根据错误提示,锁定错误的源头,改正即可。
编译
cp defconfig .config
make
编译后将产生的wpa_supplicant和wpa_cli拷贝到根文件系统的bin目录下(/source/rootfs/bin)
三、加载insmod rt8192cu.ko的驱动到开发板上去。
在这里咱们就不详细说了,因为内核中有都有相应的源码,编译后即可有相应的驱动模块了。
四、wifi的测试
前面三步搞定,咱们的wifi移植,基本上搞定了,剩下的就是怎么了进行测试了。
第一个就是配置咱们的/etc/resolv.conf文件中的nameserver了
1、 在根文件中添加/etc/resolv.conf(/source/rootfs/etc/resolv.conf)
内容为:
# Generated by
NetworkManager
nameserver
202.96.64.68
2、
在根文件系统/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件wpa-psk-tkip.conf
内容为:
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="XXXX"
#无线路由ssid //farsight
key_mgmt=WPA-PSK
proto=WPA
pairwise=CCMP
group=CCMP
psk="XXXXXXXX"
#无线路由密码 //12345678
}
这个配置文件咱们是怎么来的呢,大家可以看看README和
在这个example目录下,给出了相应的配置的例子
3、 创建目录/var/run/wpa_supplicant
mkdir /var/run/wpa_supplicant
-p
4、 启动开发板完成如下操作
配置无线网卡ip
ifconfig wlan0 192.168.0.200
配置默认网关
route add default gw
192.168.0.1
启动wpa_supplicant连接无线网络
wpa_supplicant -B -iwlan0 -c
/etc/wpa-psk-tkip.conf
查看连接状态
wpa_cli status
后面的启动wifi,查看工作状态呀,这些信息都是从哪里来的,你上网搜索发现,每个人写的参数各不相同。那么我们还是来看看官方的配置。
linux WiFi源码解析,Wifi移植浅析相关推荐
- linux WiFi源码解析,WIFIDOG 源码解析
WIFIDOG 源码解析 openwrt wifidog是我linux c语言编程的启蒙项目,一年前折腾此项目大半年,从此爱上了linux 系统编程.现在看来,这是一个再简单不过的linux c语言项 ...
- Wifi模块—源码分析Wifi启动2(Android P)
一 前言 在上一篇分析了wifi启动的流程,从Android应用层一直分析到了Java框架层,这次我们接着往下走流程.如果没有看上一篇的建议先回头看看 Wifi模块-源码分析Wifi启动1(And ...
- Wifi模块—源码分析Wifi启动(Android P)
一.前言 Android P在wifi这块改动挺大的,Wifi到AndoidO之后不再使用jni,所以AndroidP也一样不再使用jni来实现Java代码与本地的C/C++代码交互,而是使用HIDL ...
- Wifi模块—源码分析Wifi热点扫描2(Android P)
一 前言 这次接着讲Wifi工程流程中的Wifi热点扫描过程部分的获取扫描结果的过程,也是Wifi扫描过程的延续,可以先看前面Wifi扫描的分析过程. Wifi模块-源码分析Wifi热点扫描(Andr ...
- Wifi模块—源码分析Wifi热点扫描(Android P)
一 前言 这次接着讲Wifi工程流程中的Wifi热点查找过程,也是Wifi启动的过程延续,Wifi启动过程中会更新Wifi的状态,框架层也有相应广播发出,应用层接收到广播后开始进行热点的扫描.可以先看 ...
- linux epoll 开发指南-【ffrpc源码解析】
linux epoll 开发指南-[ffrpc源码解析] 摘要 关于epoll的问题很早就像写文章讲讲自己的看法,但是由于ffrpc一直没有完工,所以也就拖下来了.Epoll主要在服务器编程中使用,本 ...
- 微擎即用WIFI源码V2.1.7
介绍: 微擎即用WIFI源码V2.1.7版本,前端+后端,线下WIFI推广利器. 键融合线下门店无线网络.新闻热点.地区代理代理商.广告词营业额等综合型服务平台,致力于为客户出示免费网络闲暇,服务平台 ...
- FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
源:FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)
- Wifi源码学习(Android5.1)之wifi开关
wifi系列博客地址: Wifi源码学习(Android5.1)之wifi开关 Wifi源码学习(Android5.1)之wifi optionItem Wifi源码学习(Android5.1)之wi ...
最新文章
- 词法分析(1)---词法分析的有关概念以及转换图
- 【SSH异常】InvalidDataAccessApiUsageException异常
- 热点分析图_通过分析功率MOSFET管的工作特性,判断其损坏原因
- 深入理解 nvidia-docker 2.0
- javascript正则表达式复习
- 深入理解PHP内核(十二)函数-函数的定义、传参及返回值
- 【2030】排队打水问题
- 基建管控系统_基建项目管理系统
- 制作数据库导出模板,导出数据库设计说明书
- Servlet的生命周期
- 怎样把多个excel文件合并成一个
- 【Tool】ELF 和 AXF 文件分析详解
- SQL Server中查询累计和与滑动平均值
- Android Studio的报错提示:Error while Launching activity
- Android视频播放器ExoPlayer
- logcat日志文件分析
- SQLException错误码
- 股票作手操盘术-勘误
- Android4.4电池管理
- SPSSModeler的下载与安装
热门文章
- dns的主从服务器的简单配置
- 杭电ACM_1016_素数环
- “尽快成立国家级权威信息安全部门”
- 模板匹配(Match Template)
- Apache-tomcat
- 把存储过程结果集SELECT INTO到临时表
- Python MySQLdb 循环插入execute与批量插入executemany性能分析(list批量写法亲测成功)
- 对NumPy中dot()函数的理解(亲测,矩阵算法)
- 支付宝服务窗的简单开发体会
- 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构