第五季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;…

第五季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…

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

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

第七季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;数字油田的主题被冲淡…

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个以上进行排序必须使用快速排序&…

RAM、ROM和FLASH三大类常见存储器简介

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a; Flash、RAM、ROM的区别_天籁东东的博客-CSDN博客_flash和rom的区别 RAM、ROM和FLASH三大类常见存储器简介 - 存储技术 - 电子发烧友网 RAM、NANDFlash、NORFlash的区别详解 - 百度…

wangeditor html编辑,Vue整合wangEditor富文本编辑器

最近在做项目时&#xff0c;客户有个发布新闻动态的功能&#xff0c;具体页面内容让客户自己编写&#xff0c;所以要选择富文本编辑器&#xff0c;这样用户体验好一点。网上有很多的富文本编辑器&#xff0c; 因为项目的功能并不是很复杂&#xff0c;所以选择了wangEditor&…

DreamWeaver连接Tomcat用以编辑和测试JSP

2019独角兽企业重金招聘Python工程师标准>>> 3 、打开软件之后&#xff0c;大家选择【站点】中的【新建站点】 。 4 、填写要填的内容。 站点名称&#xff1a;可以随便起&#xff0c;只是用来区分站点用的。因为&#xff0c;可以建立多个站点。 本地根文件夹&…

2013多校第三场

hdu 4629 题意&#xff1a;给你n个三角形&#xff0c;问覆盖1~n次的面积各是多少&#xff0c;n < 50; 分析&#xff1a;取出所有端点和交点的x坐标&#xff0c;排序&#xff0c;然后对于每一段xi~xi1的范围的线段都是不相交的&#xff0c;所以组成的 面积要么是三角形&#…

TSS 任务状态段

TSS(任务状态段)1 什么是TSS TSS 全称task state segment&#xff0c;是指在操作系统进程管理的过程中&#xff0c;任务&#xff08;进程&#xff09;切换时的任务现场信息。 2 TSS工作细节 TSS在任务切换过程中起着重要作用&#xff0c;通过它实现任务的挂起和恢复。所谓…

Linux下C语言程序的内存布局

以下内容源于C语言中文网的内容学习与整理。如有侵权&#xff0c;请告知删除。 一、C语言内存布局 C程序所占用的内存&#xff0c;可以划分为以下几个部分。 1、栈区&#xff08;stack&#xff09;。由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值…

微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...

‍‍电脑出现死机是很常见的一种故障&#xff0c;造成的原因也有很多种。而最近有些用户的电脑经常死机&#xff0c;开机几分钟就死机&#xff0c;有时还会出现蓝屏&#xff0c;这到底是怎么回事呢&#xff1f;电脑经常死机是什么原因呢&#xff1f;下面小编结合自己的实际情况…

PKI系统深入介绍

公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称PKI&#xff09;是眼下网络安全建设的基础与核心&#xff0c;是电子商务安全实施的基本保障&#xff0c;因此&#xff0c;对PKI技术的研究和开发成为眼下信息安全领域的热点。本文对PKI技术进行了全面的分析…

html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题

完美解决 ios10 及以上 Safari 无法禁止缩放的问题转载自掘金-互联网学徒移动端web缩放有两种&#xff1a;双击缩放双指手势缩放在 iOS 10之前&#xff0c;iOS 和 Android 都可以通过一行 meta 标签来禁止页面缩放&#xff1a;但 iOS 10开始&#xff0c;meta 设置在 Safari 内无…

SCRT软件的使用教程

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 SCRT软件下载&#xff1a;提取码1234 快速链接的步骤与设置 先选择“快速链接”&#xff1b; 然后协议选serial&#xff0c;端口在设备管理器中查看&#xff08;我的是com3&#xff09;&#xff0c;波特率…

KEIL4.12中添加ULINK2的支持

转载自&#xff1a;http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12&#xff0c;但却没有Ulink2下载器&#xff0c;只有早先用的Ulink下载器&#xff0c;那么你按照下面三步升下级就可以了....三步&#xff1a;1.把‘keil-ulink升级至ulink2的文件’解压缩后拷…