第五季1:AP模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

内容总结

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

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

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

一、基本概念

1、WIFI接口

WIFI模块与SoC的接口有多种,如SDIO、USB、串口(低带宽)等,这里用的是USB接口。

2、AP、STA

AP(Access Point,接入点),一般指有线的或者无线的路由器。

STA(Station,站点),指接入路由器的终端设备,比如手机、笔记本等。

3、USB-WIFI的模式选项

USB-WIFI的模式选项,就是让你选择你的(拥有USB-WIFI模块的)设备是作为站点还是作为接入点。如果作为站点,它联网的时候就会搜索一个接入点来接入网络;如果作为接入点,局域网中其他设备在联网的时候会接入它。

二、AP模式USB-WIFI网卡移植

1、准备好软件资源。

(1)参考课程《USB-WIFI网卡在x210板子上的移植》,见博客USB-WiFi在x210板子上的移植。

注意此课程中USB-WIFI网卡仅作station模式,它通过接入房间里的无线路由器来上网。

(2)USB WIFI网卡官方提供的驱动。驱动源码见网盘资源【提取码: p3e7】,注意将Makefile替换掉压缩包里的Makefile。

 (3)基于海思SDK中已经编译过的内核源码树来编译驱动。板载系统的内核和用来编译驱动的内核源码树必须对应一致,这样编译出来的驱动才能在板载系统上安装与工作。

2、设置好各种IP地址。

无线有线
windows192.168.0.30192.168.1.20
开发板192.168.0.100 192.168.1.10
ubuntu192.168.0.50192.168.1.141

3、解压USB WIFI驱动至合适位置。

root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver# ls
ap  sta
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver# cd ap/
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap# ls
Makefile  MT7601U_LinuxAP_3.0.0.1_20130802
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap# cd MT7601U_LinuxAP_3.0.0.1_20130802
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802# ls
ap  ate  chips  common  include  load  mac  Makefile  mcu  mgmt  os  phy  rate_ctrl  RT2870APCard.dat  RT2870AP.dat  tools  unload
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802#

4、修改网络名为“wlan”。

在ap/MT7601U_LinuxAP_3.0.0.1_20130802/include/rtmp_def.h文件中的第1627行左右,修改网络名为“wlan”,但其实不改也行,只是将来网络名字不叫wlan而是叫ra。

//#ifdef ANDROID_SUPPORT
#define INF_MAIN_DEV_NAME               "wlan"
#define INF_MBSSID_DEV_NAME             "wlan"
//#else
//#define INF_MAIN_DEV_NAME             "ra"
//#define INF_MBSSID_DEV_NAME           "ra"
//#endif /* ANDROID_SUPPORT */

5、修改Makefile文件

(1)用MT7601_driver/ap/Makefile文件,替换掉MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802目录下的Makefile文件。

(2)在Makefile文件中第106行附近修改内核源码树的路径。

ifeq ($(PLATFORM),HISI_3518E)
#LINUX_SRC = /home/aston/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
LINUX_SRC = /home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH=arm
endif

(3) 此时执行“make”时会报错,报错原因是找不到某些头文件,但实际上在MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_2013080/include目录中有这些头文件,为何还是找不到呢?猜想是因为没有包含这些文件进来。

在Makefile文件中有下面一句,即包含配置文件config.mk。

include $(RT28xx_DIR)/os/linux/config.mk

进入到MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux/config.mk文件中查看,发现是flag的问题,因此需要在该文件中1044行前后添加下面代码:

ifeq ($(PLATFORM),SMDK)EXTRA_CFLAGS := $(WFLAGS)
endif//添加下面的这三行代码
ifeq ($(PLATFORM),HISI_3518E)EXTRA_CFLAGS := $(WFLAGS)
endif

(4)此时执行make时依然出错,原因是缺少autoconf.h文件。分析发现,海思SDK直接解压后得到的kernel中并没有包含此文件,可能是在执行make distclean时删除了此文件。解决方法是重新单独编译kernel,可以获得此文件。更多解释见博文。

(5)Makefile原来规定将生成的xxx.ko文件存放在/tftpboot目录中,但我们想利用NFS将驱动拷贝到板载系统,因此修改Makefile,将生成的ko文件放到/home/xjh/iot/hisi_development/hisi_rootfs目录中。在Makefile的第416行附近修改如下:

ifeq ($(RT28xx_MODE),AP)
ifneq ($(findstring 7601,$(CHIPSET)),)
#       cp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)ap.ko /tftpbootcp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)ap.ko /home/xjh/iot/hisi_development/hisi_rootfs/
elsecp -f $(RT28xx_DIR)/os/linux/rt$(MODULE)ap.ko /tftpboot
endif

6、执行make进行编译

编译得到MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux/下的mt7601Uap.ko这个驱动文件。由于上面的设置,在/home/xjh/iot/hisi_development/hisi_rootfs中也有这个文件。

root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux# ls *.ko*
mt7601Uap.ko
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux# ls *.o
ap_ioctl.o  mt7601Uap.mod.o  mt7601Uap.o  rt_linux.o  rt_main_dev.o  rt_profile.o  rt_usb.o  rt_usb_util.o  usb_main_dev.o
root@ubuntu:/home/xjh/iot/hisi_development/usb-wifi/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux# 

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

(1)确认模块被识别:先lsusb,然后插入USB WIFI模块,再lsusb,确认模块被识别。

/mnt # lsusb
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001
/mnt # usb 1-1: new high-speed USB device number 8 using hiusb-ehci
usbdev11 -> /dev/usbdev1.8/mnt # lsusb
Bus 001 Device 008: ID 148f:7601
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0001
/mnt #

(2)将虚拟机的MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/RT2870AP.dat文件复制到/home/xjh/iot/hisi_development/hisi_rootfs目录中。然后将开发板中/mnt/RT2870AP.dat这个文件复制到开发板的/etc/Wireless/RT2870AP/目录中(需要自己创建目录),然后修改这个文件(该文件的项目不变,只是修改项目的值):

//复制时去掉注释
SSID=WIFI_XJH     //在pc机上看到的wifi名 
AuthMode=WPA2PSK  //加密方式
EncrypType=TKIP;AES
WPAPSK=123456789  //密码

(3)安装USB WIFI驱动模块,在板载系统/mnt目录下执行“insmod mt7601Uap.ko”。

/mnt # insmod mt7601Uap.ko 
rtusb init rt2870 --->=== pAd = c2f14000, size = 866712 ===<-- RTMPAllocTxRxRingMemory, Status=0
<-- RTMPAllocAdapterBlock, Status=0
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x8
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x4
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x5
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x6
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x7
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x9
NVM is EFUSE
Endpoint(8) is for In-band Command
Endpoint(4) is for WMM0 AC0
Endpoint(5) is for WMM0 AC1
Endpoint(6) is for WMM0 AC2
Endpoint(7) is for WMM0 AC3
Endpoint(9) is for WMM1 AC0
Endpoint(84) is for Data-In
Endpoint(85) is for Command Rsp
usbcore: registered new interface driver rt2870
/mnt #

(4)使用“ifconfig -a”(不带参数-a则只能看到打开状态下的网卡)看是否有wlan0。

/mnt # ifconfig -a
eth0      Link encap:Ethernet  HWaddr B6:F2:52:D3:A1:DA  inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:953 errors:0 dropped:0 overruns:0 frame:0TX packets:512 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:1241589 (1.1 MiB)  TX bytes:40320 (39.3 KiB)Interrupt:12 lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:16436  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wlan0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)/mnt #

(5)启动wlan0,并设置其IP为192.168.0.100。具体操作见代码。

/mnt # ifconfig wlan0 up
/mnt # ifconfig wlan0 192.168.0.100
/mnt # ifconfig
eth0      Link encap:Ethernet  HWaddr B6:F2:52:D3:A1:DA  inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:972 errors:0 dropped:0 overruns:0 frame:0TX packets:515 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:1247164 (1.1 MiB)  TX bytes:40494 (39.5 KiB)Interrupt:12 lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:16436  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wlan0     Link encap:Ethernet  HWaddr 1C:BF:CE:2C:B2:5E  inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)/mnt # 

(6)用PC或手机的WIFI搜索是否有一个名为WIFI_XJH的网络了,有的话则说明移植成功。

三、AP模式USB-WIFI网卡测试

1、准备测试用例

 (1)基于第三季1:ORTP库的移植与局域网视频传输的工作,在mpp/sample/common/sample_common_venc.c文件中,修改LOCAL_HOST_IP为192.168.0.30。

  55 uint32_t g_userts=0;56 RtpSession *pRtpSession = NULL;57 58 //#define LOCAL_HOST_IP  "192.168.1.20"59 #define LOCAL_HOST_IP  "192.168.0.30" //修改这里,注意书PC主机的无线ip

(2)在mpp/sample/venc目录下执行make得到sample_venc,将它复制到/home/xjh/iot/hisi_development/hisi_rootfs目录中。

2、测试实验

(1)为了证明是无线传输,我们拔掉主机与开发板之间的网线,因为拔掉网线后不能再通过/mnt访问虚拟机/home/xjh/iot/hisi_development/hisi_rootfs目录的内容,所以要将用到的文件拷贝到板载系统中,比如拷贝到板载系统的/tmp目录下。

(2)PC端连接无线网络WIFI-XJH,输入密码123456789。

(3)PC端设置无线网络的静态IP地址为192.168.0.30

(4)关闭PC端的防火墙,测试PC端(192.168.0.30)与板载系统(192.168.0.100)是否能够互相ping通。

C:\Users\34316>ping 192.168.0.100正在 Ping 192.168.0.100 具有 32 字节的数据:
来自 192.168.0.100 的回复: 字节=32 时间=13ms TTL=64
来自 192.168.0.100 的回复: 字节=32 时间=2ms TTL=64
来自 192.168.0.100 的回复: 字节=32 时间=5ms TTL=64
来自 192.168.0.100 的回复: 字节=32 时间=6ms TTL=64192.168.0.100 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 2ms,最长 = 13ms,平均 = 6msC:\Users\34316>
/mnt # ping 192.168.0.30
PING 192.168.0.30 (192.168.0.30): 56 data bytes
64 bytes from 192.168.0.30: seq=0 ttl=64 time=2.884 ms
64 bytes from 192.168.0.30: seq=1 ttl=64 time=7.627 ms
64 bytes from 192.168.0.30: seq=2 ttl=64 time=15.521 ms
64 bytes from 192.168.0.30: seq=3 ttl=64 time=6.592 ms
64 bytes from 192.168.0.30: seq=4 ttl=64 time=10.064 ms--- 192.168.0.30 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 2.884/8.537/15.521 ms
/mnt #

(5)在开发板端的/tmp目录下执行“./sample_venc 0”,然后输入c。

(6)在VLC播放器中,选择媒体,打开文件,选择sdp文件(提取码ms4a)(此文件的c=IN IP4 192.168.1.20没有修改为192.168.0.30,但照样可以运行?)。此时如果能看到实时图像(有延迟)就证明整个测试完成了。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费社交类图标集

免费下载 这是一套免费社交类型的图标集&#xff0c;包含35种不同内容的图标。包括当前最热的Instagram&#xff0c;Evernatoe等。和往常推荐的一样&#xff0c;PSD文件可自行调整大小,50*50像素。它们可以被用在商业项目上&#xff0c;如果你也喜欢相关类型的图标&#xff0c;…

如何把图片嵌到html中,自给自足,轻松将图片图片内嵌到HTML

自给自足&#xff0c;轻松将图片图片内嵌到HTML1.为什么要将图片内嵌到HTML&#xff1f;针对于这个问题&#xff0c;我们有如下几种答案1)能减少并发请求&#xff0c;适合且合理的使用&#xff0c;能提高网站的访问速度2)便于分享&#xff0c;完全可以将需要的图片&#xff0c;…

第五季2:STA模式USB-WIFI网卡移植与测试

以下内容源于朱有鹏课程&#xff0c;如有侵权&#xff0c;请告知删除。 参考博客 hisi3518ev200移植MT7601_fsczp的博客-CSDN博客 wpa_supplicant移植与使用_andylauren的博客-CSDN博客 Linux wpa_cli 调试方法_weixin_34168700的博客-CSDN博客 12 海思Hi3518E移植WIFI驱动(ST…

关于ping命令的工作原理

2019独角兽企业重金招聘Python工程师标准>>> 当我们在用ping命令ping地址的时候会向target主机发送一个ICMP协议中的echo包&#xff0c;如果对方living&#xff08;活动状态&#xff09;。 则会返回一个echo包。 TTL的值&#xff1a;这个值对我们有什么用&#xff0…

SPOJ-OPTM Optimal Marks ★★(按位建图 最小割)

【题意】给出一个无向图&#xff0c;每个点有一个标号mark[i]&#xff0c;不同点可能有相同的标号。对于一条边(u, v)&#xff0c;它的权值定义为mark[u] xor mark[v]。现在一些点的标号已定&#xff0c;请决定剩下点的标号&#xff0c;使得总的边权和最小。&#xff08;0 <…

第七季1:分析MP4文件封装格式

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;mp4文件格式解析 - nigaopeng - 博客园&#xff08;推荐&#xff09; &#xff08;2&#xff09;你真的懂 MP4 格式吗&#xff1f; &#xff08;3&#xff09;m…

ESXi主机管理内存资源的方式

因为内存通常是最有限的资源&#xff0c;ESXi采用内存过量配置&#xff08;Memory overcommitment&#xff0c;即配置后的虚拟机内存可能超过物理内存&#xff08;RAM&#xff09;&#xff09;对内存进行管理。使用内存过量配置时&#xff0c;ESXi必须使用技术从一个或多个VM中…

第七季2:移植MP4v2库 与 将H.264码流打包成MP4格式的文件

以下内容源于朱有鹏课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 本文首先移植MP4V2库&#xff0c;然后运行修改后的sample代码以生成MP4文件。 利用MP4v2库&#xff0c;可以将编码方式为H264的视频码流打包、封装为MP4格式的文件。 一、移植MP4v2库 1、下载MP4…

新高考不选物理可以学计算机吗,新高考选科中物理真的那么重要吗?没有选物理是不是完了?...

文/圆梦志愿 伏老师众所周知&#xff0c;选科是我国新高考中最重要的事情之一&#xff0c;且涉及到了多门选考科目。其中&#xff0c;要数物理的话题性相对最强。那么&#xff0c;高考选科是不是物理特别重要&#xff1f;新高考没有选物理是不是完了&#xff1f;一、高考选科是…

参加第三届信息化创新克拉玛依国际学术论坛

据老孙说前二届在克拉玛依的数字油田的会议规格很高&#xff0c;可惜一直没机会参加。2014年9月3日至4日举办第三届&#xff0c;无论如何抓住了这次机会&#xff0c;不过会议的内容有些让我失望&#xff0c;克拉玛依的心思已经放在数字城市上了&#xff0c;数字油田的主题被冲淡…

UNICODE,GBK,UTF-8区别

简 单来说&#xff0c;unicode&#xff0c;gbk和大五码就是编码的值&#xff0c;而utf-8,uft-16之类就是这个值的表现形式&#xff0e;而前面那三种编码是一兼容的&#xff0c;同一个汉字&#xff0c; 那三个码值是完全不一样的&#xff0e;如&#xff02;汉&#xff02;的unco…

学生使用计算机中怎么关机,学会正确开关机初中计算机教案

第1篇&#xff1a;学会正确开关机初中计算机教案学会正确开、关机教案教学目的和要求学会开、关机教学难点&#xff1a;1、了解计算机外设的开、关顺序2、正确学会开、关机教学准备&#xff1a;计算机、网络教学过程()&#xff1a;一、教学导入同学们&#xff0c;在你们面前看到…

Telnet远程登录 与 海思proc文件系统

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c; 如有侵权请告知删除。 内容总结 &#xff08;1&#xff09;添加“ telnet远程登录 ”这种调试方式。 &#xff08;2&#xff09;介绍“ 海思proc文件系统 ”这种调试接口。 一、telnet远程登录 1、telnet远程登录的意…

北邮-上机-提交错误解决及一些经验

2019独角兽企业重金招聘Python工程师标准>>> 1、出现Time Limit Exceed问题 答&#xff1a;三种原因&#xff1a;1、程序死循环或太多的循环&#xff1b;2、对极限状况计算量太大&#xff0c;需要优化程序&#xff0c;如对10000个以上进行排序必须使用快速排序&…

study notes for python

some useful materials Python完全新手教程 http://www.cnblogs.com/taowen/articles/11239.aspx (from taowen, BITer) Note: Part 1 Basic Data Structure List, Dict(dictionary) and Turple are three main data structures in python, which are respond to set,mapping a…

html如何制作滑块,网页制作html5实现滑块功能之type=quot;rangequot;属性-建站-建站教程-建站方法-米云建站 - 米云问答...

html5实现滑块功能之type"range"属性1.html5中添加了关于滑块的标签,其实际是扩展了input标签,type属性值为range。2.感觉挺有意思,就做了一个关于滑块的动画的例子&#xff0c;可以通过开始和结束按钮来控制滑块的滑动和停止&#xff0c;有点类似视频的自动播放和暂…

第七季3:分析“将H.264码流打包成MP4格式的文件”的源码

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 “将H.264MP4码流打包成MP4格式文件”的实验&#xff0c;见博文第七季2&#xff1a;MP4v2库的移植与播放实战。 接下来我们将对相关的源码进行分析。建立SI工程&#xff0c;导入sample_mp4_…

什么代码才是线程安全的

转自&#xff1a;http://www.cnblogs.com/lidabo/archive/2013/04/10/3011518.html 对于多线程编程&#xff0c;很多人概念不清&#xff0c;写代码的时候要么是处处加锁&#xff0c;影响性能不说&#xff0c;还容易莫名其妙的死锁&#xff0c;还有人对多线程敬而远之。所以学习…

百度富文本编辑器的应用技巧---在一个页面中使用多个样式不同功能不同的编辑器...

//1.2.4以后可以使用一下代码实例化编辑器 //UE.getEditor(myEditor)在官方的说明文档上看到这个注释&#xff0c;不是很明白&#xff0c;而且需要在一个页面中使用多次样式功能不同的ueditor&#xff0c;经过多次测试&#xff0c;终于成功自定义功能。代码如下<form><…

计算机基础知识复习题,计算机基础知识理论复习题及答案.doc

《计算机基础知识理论复习题及答案.doc》由会员分享&#xff0c;提供在线免费全文阅读可下载&#xff0c;此文档格式为doc&#xff0c;更多相关《计算机基础知识理论复习题及答案.doc》文档请在天天文库搜索。1、&#xfeff;基础知识复习题及答案一、 选择题1. 第三代计算机所…