海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)

目录

  • 一、海思平台上USB WIFI移植概述
    • 1、移植WIFI背景
    • 2、移植的起点
    • 3、本季文章安排
  • 二、AP模式USB WIFI驱动移植
    • 1、源码
    • 2、修改移植
  • 三、AP模式USB WIFI传输视频实战
    • 1、部署USB WIFI驱动使之工作为AP
    • 2、测试用例准备
    • 3、测试实验

一、海思平台上USB WIFI移植概述

1、移植WIFI背景

(1)必要性:家用camera很多需要wifi联网功能
(2)WIFI接口:SDIO or USB

2、移植的起点

(1)基于我的 嵌入式Linux小项目专栏中 《USB WIFI网卡在S5PV210上的移植和使用最全攻略(1-2)》文章,欲了解更多的原理知识与技术细节,请阅读这篇文章,本篇文章重操作。

(2)基于USB WIFI网卡官方移植匹配后的驱动来移植

(3)基于海思SDK中已经编译过的内核源码树来编译驱动

(4)使用的模块:联发科的MT7601U

3、本季文章安排

(1)HI3518E+WIFI做AP,PC做sta,实现局域网内ortp视频传输

(2)HI2518E+WIFI做sta,PC做sta,外部路由器做AP,实现局域网内ortp视频传输

(3)HI2518E+WIFI做sta,PC做sta,外部路由器做AP,实现全程无线调试(彻底不用有线网卡)

AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般
的无线路由/网桥工作在该模式下。APAP之间允许相互连接

Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP,一般
无线网卡即工作在该模式。

二、AP模式USB WIFI驱动移植

用到的网卡资料:
链接:https://pan.baidu.com/s/1S90UxpCA-F91v3RyEHZIzg
提取码:lsn3
–来自百度网盘超级会员V5的分享

其实ap和sta中的源码是一样的,但由于要实现不同的功能,进行不同的修改,所以准备的了两份,放在不同的目录中

1、源码

(1)从上述链接中下载源码包到本地,将其复制到ubuntu中的某个目录进行开发
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第1张图片
(2)解压进入

cd MT7601_driver/ap/
tar -jxvf MT7601U_LinuxAP_3.0.0.1_20130802.tar.bz2

大家去MTK官网下载这个模块的资料,发现只有一份代码,没有ap、sta之分,是将二者合并在了一起,这个模块的源码包有很多个版本,我们这里使用的这个版本是将ap、sta分开的。
在这里插入图片描述

2、修改移植

(1)include/rtmp_def.h中1627行左右,修改网络名始终为:wlan

vi include/rtmp_def.h

海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第2张图片
原本安卓是wlan,linux是要用ra,我们进行了修改。如果提示文件不可修改,通过chmod命令修改文件权限后再进行修改。

(2)使用提供的Makefile替换掉原来的Makefile,或者根据以下内容修改:以下图片右半边内容为修改后的:
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第3张图片
在这里插入图片描述
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第4张图片
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第5张图片
  修改后,我们先make clean,再make进行编译,出现以下报错,找不到头文件,修改相应的配置文件添加头文件目录,即第(3)步。编译时若有些文件因为权限无法操作,可进入root用户编译,但需注意交叉编译链可能找不到,需导出环境变量:source /etc/profile
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第6张图片
(3)./os/linux/config.mk中添加EXTRA_FLAGS
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第7张图片
再次make,编译通过。

(4)修改Makefile或者手工复制xx.ko到/home/aston/rootfs中
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第8张图片
  再次make,至此结束。
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第9张图片

三、AP模式USB WIFI传输视频实战

1、部署USB WIFI驱动使之工作为AP

(1)在开发板端先lsusb,然后插入USB WIFI模块,再lsusb,通过前后打印信息的差异从而确认模块被识别了
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第10张图片
(2)在开发板中部署 /etc/Wireless/RT2870AP/RT2870AP.dat,并修改以下几个配置项(这个文件是在源码包中提供的,我们复制到开发板这个目录下,若无这个目录手动创建:mkdir /etc/Wireless/RT2870AP/ -p)
在这里插入图片描述

	SSID=MT7601AP_WPA(这里的名字是在pc机上看到的连接ssid名)
	AuthMode=WPA2PSK(验证模式)
	EncrypType=TKIP;AES(加密方式)
	WPAPSK=1234567890(这个是密码)

(3)insmod xx.ko安装USB WIFI驱动模块
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第11张图片
(4)ifconfig -a看是否有wlan0

(5)ifconfig wlan0 up, ifconfig wlan0 192.168.0.100

(6)ifconfig查看,确认wlan0工作正常
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第12张图片
(7)用PC或手机的WIFI搜索看一下,是否有一个名为:MT7601AP_WPA的网络了,有了就成功了

2、测试用例准备

(1)ORTP版本的sample,common/sample_common_venc.c中,
修改LOCAL_HOST_IP为192.168.0.30

(2)make clean,make #清理并重新编译

(3)复制得到的sample_venc到/home/aston/rootfs中

3、测试实验

(1)开发板端:cp /mnt/sample_venc /home/ 然后cd /home(我们的有线网络还是通的可以工作的,所以开发板依然挂载在ubuntu)

(2)拔掉网线(此时也可以重启下开发板以彻底消除前面的影响)

(3)PC端WIFI连接 MT7601AP_WPA,输入密码 1234567890

(4)PC端设置无线网络的静态IP地址为:192.168.0.30
打开控制面板:
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第13张图片
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第14张图片
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第15张图片
坑比的win10要把下面这个设置打开,不然是无法成功的(被这个问题卡了好久):
海思平台上USB WIFI的移植与局域网无线调试和视频流预览(1)_第16张图片

(5)PC端cmd去ping 192.168.0.100,或者反过来开发板端ping PC的无线IP

(6)开发板端执行 ./sample_venc

(7)PC端打开vlc播放器,使用第3季中的sdp配置,注意c=IN IP4 192.168.0.100,就能播放了。

注:
使用无线网络时:
windows:	192.168.0.30
AP:		192.168.0.100
ubuntu:	192.168.0.50	(ubuntu的IP现在可以不管)

使用有线网络时:
windows:	192.168.1.20
开发板:     192.168.1.10
ubuntu:	192.168.1.141

注:本文章参考了《朱老师物联网大讲堂笔记》,并结合了自己的实际开发经历以及网上他人的技术文章,综合整理得到。如有侵权,联系删除!水平有限,欢迎各位在评论区交流。

你可能感兴趣的:(linux,网络,ubuntu,驱动程序,海思sdk)