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

news2024/11/25 10:50:18

目录

1.海思平台上USB WIFI移植概述

1.1、移植WIFI背景

1.2、移植的起点

1.3、实验案例

2.AP模式USB WIFI驱动移植

2.1、源码

2.2、修改移植

3.AP模式USB WIFI传输视频实战

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

3.2、准备测试用例

3.3、测试实验

4.USB WIFI做sta模式的驱动移植和部署

4.1、源码修改

4.2、部署驱动

5.移植wpa_supplicant

5.1、源码下载

5.2、移植openssl

5.3、移植wpa_supplicant

6.USB WIFI做sta模式的ORTP视频传输实验

6.1、部署wpa_supplicant

6.2、sta模式的USB WIFI设置

6.3、ORTP视频传输测试

7.纯WIFI无线调试环境的搭建

7.1、原理

7.2、实战


1.海思平台上USB WIFI移植概述

1.1、移植WIFI背景

(1)必要性:家用camera很多需要wifi联网功能

(2)WIFI接口:SDIO or USB

1.2、移植的起点

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

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

1.3、实验案例

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

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

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

2.AP模式USB WIFI驱动移植

2.1、源码

链接:https://pan.baidu.com/s/1JI-bMboFRbUk6dwR8y6myQ?pwd=0000 
提取码:0000

(1)复制到ubuntu中实验目录

(2)解压进入

2.2、修改移植

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

(2)使用提供的Makefile替换掉原来的Makefile

(3)./os/linux/config.mk中添加EXTRA_FLAGS

(4)修改Makefile或者手工复制xx.ko到/home/aston/rootfs中

3.AP模式USB WIFI传输视频实战

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

(1)先lsusb,

然后插入USB WIFI模块,

再lsusb,

确认模块被识别了

(2)在开发板中部署 /etc/Wireless/RT2870AP/RT2870AP.dat(驱动执行时会加载这个配置文件),

并修改以下几个配置项

SSID=CHM_MT7601AP_WPA(这里的名字是在pc机上看到的连接ssid名)

AuthMode=WPA2PSK(验证模式)

EncrypType=TKIP;AES(加密方式)

WPAPSK=1234567890(这个是密码)

(3)insmod xx.ko安装USB WIFI驱动模块

lsmod查看装载了的驱动模块

(4)ifconfig -a看是否有wlan0

(5)ifconfig wlan0 up, ifconfig wlan0 192.168.0.100

(6)ifconfig查看,确认wlan0工作正常

(7)用PC或手机的WIFI搜索看一下,是否有一个名为:MT7601AP_WPA的网络了,有了就成功了

(8)给PC强制分配静态IP

3.2、准备测试用例

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

(2)make clean,make

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

3.3、测试实验

(1)开发板端:cp /mnt/sample_venc /home/ 然后cd /home

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

(3)PC端WIFI连接 MT7601AP_WPA,输入密码 1234567890,之前已做

(4)PC端设置无线网络的静态IP地址为:192.168.0.30,之前已做

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

(6)开发板端执行 ./sample_venc_ortp_wifi 0

(7)PC端打开vlc播放器,使用第5季中的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

4.USB WIFI做sta模式的驱动移植和部署

4.1、源码修改

(1)修改网卡名称为wlan

(2)用sta版本的driver,可以简单看一下区别

(3)修改makefile,参考AP模式下的修改点修改

(4)config.mk中修改,参考AP模式下的修改点修改

(5)make clean && make

4.2、部署驱动

(1)部署/etc/Wireless/RT2870STA/RT2870STA.dat

(2)部署ko

5.移植wpa_supplicant

5.1、源码下载

(1)wpa_supplicant Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, RSN, IEEE 802.11i)

(2)openssl ftp://ftp.openssl.org/source/old/0.9.x/

下载openssl-0.9.8za.tar.gz

分别tar -zxvf解压wpa_supplicant-2.5.tar.gz和openssl-0.9.8za.tar.gz,

5.2、移植openssl

(1)给openssl打补丁。把wpa_supplicant-2.5里面的patches文件夹下的openssl-0.9.8za-tls-extensions.patch文件拷贝到openssl-0.9.8za目录下,运行:patch -p1 < openssl-0.9.8za-tls-extensions.patch

(2)修改Makefile

CC=arm-hisiv300-linux-gcc

AR=arm-hisiv300-linux-ar $(ARFLAGS) r

ARD= arm-hisiv300-linux-ar $(ARFLAGS) d

RANLIB=arm-hisiv300-linux-ranlib

INSTALLTOP = /tmp/openssl

OPENSSLDIR = /tmp/openssl

(3)make && make install

(4)如果报错

****Expected text after =item, not a number

****Expected text after =item, not a number

****Expected text after =item, not a number

****Expected text after =item, not a number

原因:OpenSSL 与 perl版本不兼容

解决方法:sudo rm -f /usr/bin/pod2man

(5)查看是否安装成功

5.3、移植wpa_supplicant

(1)解压并进入主目录/wpa_supplicant

(2)cp defconfig .config

(3)修改.config,增加以下内容:

CC=arm-hisiv300-linux-gcc -L/tmp/openssl/lib

CFLAGS+=-I /tmp/openssl/include

LIBS+=-L/tmp/openssl/lib

(4)make 如果报错:

driver_nl80211.c:17:31: fatal error: netlink/genl/genl.h

进入wpa_supplicant目录下.config

将CONFIG_DRIVER_NL80211=y 注释掉即可

(5)继续make,生成wpa_supplicant和wpa_cli后整个移植成功完成

6.USB WIFI做sta模式的ORTP视频传输实验

6.1、部署wpa_supplicant

(1)将wpa_supplicant、wpa_cli丢到开发板/usr/bin目录下

(2)创建配置文件/etc/wpa_supplicant.conf(放哪个目录都可以),内容如下:

ctrl_interface=/var/run/wpa_supplicant
network={
ssid="wifipig"
scan_ssid=1
key_mgmt= WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="12345678"
}

6.2、sta模式的USB WIFI设置

(1)安装驱动 insmod mt7601Usta.ko

(2)设置静态IP地址

ifconfig wlan0 up, ifconfig wlan0 192.168.43.233

(3)开发板sta连接AP (-dd打开调试信息)

wpa_supplicant -Dwext -iwlan0 -c /etc/wpa_supplicant.conf -dd &

让wpa_supplicant服务器先工作起来

(4)查看连接状态

wpa_cli -i wlan0 status

(5)测试连接效果

ping 192.168.43.1 (网关AP)

ping 192.168.43.150 (windows)

route add default gw 192.168.43.1 dev wlan0 设置完gw后就可以访问外网了

ping 8.8.8.8 (google的dnw server)

6.3、ORTP视频传输测试

(1)修改LOCAL_HOST_IP 为192.168.43.150(和我的Widnows的WIFI自动分配的IP一样)

(2)编译得到sample并到开发板运行

(3)修改sdp中c=IN IP4 192.168.43.150,打开sdp播放

注:

AP: 192.168.43.1

PC: 192.168.43.150

开发板: 192.168.43.233

ubuntu: 192.168.43.244

7.纯WIFI无线调试环境的搭建

7.1、原理

(1)UBUNTU和Windows桥接,这样ubuntu、windows、开发板三者都做sta,连同一个AP

(2)开发板事先移植部署好USB WIFI驱动、wpa_supplicant等

(3)开发板/etc/profile中设计好配置WIFI启动、连接AP、静态IP等

(4)开发板/etc/profile中设置让开发板通过无线mount虚拟机

7.2、实战

(1)先确认开发板部署好USB WIFI驱动、wpa_supplicant工具

(2)sample放到虚拟机ubuntu的共享文件夹中

(3)开发板/etc/profile中做好各种配置

#ifconfig eth0 192.168.1.10

#mount -t nfs -o nolock 192.168.0.103:/home/aston/rootfs /mnt

cd /ko

./load3518e -i -sensor ar0130 -osmem 32 -total 64

insmod /home/mt7601Usta.ko //装载USB WIFI驱动

ifconfig wlan0 up

ifconfig wlan0 192.168.43.233 //设置IP

wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf & //开启wpa_supplicant服务器

route add default gw 192.168.43.1 dev wlan0 //设置gw,才能访问外面

mount -t nfs -o nolock 192.168.43.244:/home/aston/rootfs /mnt //无线挂载到虚拟机

cd /mnt

(4)设置ubuntu桥接到windows的无线网卡,并给ubuntu设置静态IP地址192.168.43.244

(5)测试windows、ubuntu、开发板互ping

ubuntu ping windows

开发板 ping ubuntu

(6)拔掉网线、开发板重启,看效果

挂载成功,并且开启了wlan0然后设置了IP

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

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

相关文章

python函数详解(超详细)

❄️作者介绍&#xff1a;奇妙的大歪❄️ &#x1f380;个人名言&#xff1a;但行前路&#xff0c;不负韶华&#xff01;&#x1f380; &#x1f43d;个人简介&#xff1a;云计算网络运维专业人员&#x1f43d; 前言 首先零基础是能学python的&#xff0c;很多编程大神入门之前…

Qt中的坐标体系和内存回收

目录 坐标体系 窗口的坐标原点 窗口的相对坐标 示例 内存回收 1. 自动垃圾回收机制 2. 对象树机制 示例 坐标体系 窗口的坐标原点 在Qt中&#xff0c;坐标系统一般是以窗口左上角为原点&#xff0c;向右为正方向X轴&#xff0c;向下为正方向Y轴。 窗口的相对坐标 在一个…

node.js+vue企业人事管理系统q731f

中小企业人事管理系统的主要开发目标如下&#xff1a; &#xff08;1&#xff09;实现管理系统信息关系的系统化、规范化和自动化&#xff1b; &#xff08;2&#xff09;减少维护人员的工作量以及实现员工对信息的控制和管理。 &#xff08;3&#xff09;方便查询信息及管理信…

chatgpt赋能python:Python编程中的警告是什么?

Python编程中的警告是什么&#xff1f; 在Python编程中&#xff0c;警告是指在程序运行时出现的一些提示信息。这些警告通常不会导致程序崩溃&#xff0c;但却表明程序中存在某些问题。例如&#xff0c;警告可以是一个不推荐使用的语法或者可能导致性能退化的某个编码模式。通…

发布关于Strve.js的动态,被Vite团队核心成员点赞的那些事!

近日&#xff0c;在浏览之前发的推特文章时&#xff0c;发现了曾经被Vite团队核心成员 Matias Capeletto 点赞的一篇动态&#xff0c;心里格外的高兴。 被大佬认可&#xff0c;也是值得开心的一件事情。毕竟独立开发一个前端框架&#xff0c;其中的艰辛也只有像参与过类似设计框…

IAB讨论互联网碎片化:互操作性是互联网的关键属性

日前&#xff0c;一场针对互联网碎片化的讨论由互联网体系结构委员会&#xff08;IAB&#xff09;发起&#xff0c;主题涉及互联网碎片化的定义、概念、治理方式与未来发展。互联网治理论坛&#xff08;IGF&#xff09;咨询顾问维姆德格泽尔与大西洋理事会成员康斯坦丁诺斯科迈…

我的个人网站 —— 直接使用GPT4

前期回顾 打造极简风格动效 —— 5 分钟轻松实现惊艳、震撼人心的视觉效果_彩色之外的博客-CSDN博客css Loading 实战教学https://blog.csdn.net/m0_57904695/article/details/131156011?spm1001.2014.3001.5501 目录 ✈ 线上预览&#xff1a; ✅ G4 WEB 效果图例 &…

chatgpt赋能python:Python函数用法查看指南

Python函数用法查看指南 对于Python程序员来说&#xff0c;熟练查看函数用法是必不可少的技能。无论是入门级的学习者还是有多年编程经验的工程师都需要时常查看函数用法&#xff0c;以确保程序的正确性与效率。在本篇文章中&#xff0c;我们将介绍Python函数用法的常用方法与…

chatgpt赋能python:Python如何放在桌面:简单步骤和相关应用

Python如何放在桌面&#xff1a;简单步骤和相关应用 如果你是一名Python程序员&#xff0c;想要将Python放在桌面上以便在日常工作中更快捷地打开&#xff0c;并增强开发效率&#xff0c;那么这篇文章就是为你准备的。在这里&#xff0c;我们将介绍如何将Python安装在桌面上、…

chatgpt赋能python:Python怎么查找序列中的数字

Python怎么查找序列中的数字 在Python编程中&#xff0c;要查找序列中的数字是非常常见的任务。比如&#xff0c;我们需要查找一个列表中是否包含某个数字&#xff0c;或者在一个字符串中查找某个数字的出现次数等等。本文将介绍Python中查找序列中数字的几种方法&#xff0c;…

chatgpt赋能python:Python如何横排输出:实现方法详解

Python如何横排输出&#xff1a;实现方法详解 Python是一种高级编程语言&#xff0c;非常适合初学者入门。Python有很多应用程序领域&#xff0c;例如Web开发、数据分析、人工智能和机器学习等。在这些领域中&#xff0c;输出排版和显示的格式都十分重要。在某些情况下&#x…

C++静态转换

目录 1.1基本类型间的转换 1.2指针转换的限制 1.3空指针的转换 1.4弃值表达式 1.5左值转到右值 1.6类层次结构基类和派生类间的指针或引用转换 用法&#xff1a;static_cast<type_name> (expression) 说明&#xff1a;该运算符把expression转换为type_name类型stat…

ElasticSearch核心详解、文档、查询响应、分页、映射、结构化查询

目录 ElasticSearch核心详解文档元数据&#xff08;metadata&#xff09;index_type_id 查询响应pretty指定响应字段判断文档是否存在 批量操作批量查询_bulk操作 分页映射创建明确类型的索引&#xff1a;测试搜索 结构化查询term查询terms查询range查询exists 查询match查询bo…

Linux 虚拟文件系统 VFS 源码剖析

转自&#xff1a;Linux 虚拟文件系统 VFS 源码剖析 -- 以 ext4 为例&#xff08;Part1&#xff09; - 知乎 虚拟文件系统&#xff08;Virtual File System, VFS&#xff09;是 Linux 内核的一个组件&#xff0c;用于处理与文件和文件系统相关的所有系统调用。VFS 是内核提供文…

架构师怎样绘制系统架构蓝图?

首先&#xff0c;请你设想这样一个场景&#xff1a;如果公司安排你做架构师&#xff0c;要你在项目开发前期进行软件架构设计&#xff0c;你该如何开展你的工作&#xff1f;如何输出你的工作成果&#xff1f;如何确定你的设计是否满足用户需求&#xff1f;你是否有把握最后交付…

人工智能导论复习

Sell Out - Twoset Violin - 单曲 - 网易云音乐 (163.com) 目录 1 归结演绎推理 子句集&#xff1a; 归结&#xff1a; 2 可信度分析 CF模型 加权的不确定性推理 3 模糊推理-构造 扎德方法构造模糊关系 4 A* 5 遗传算法 6 神经网络 1 归结演绎推理 归结推理&#xff…

【ZooKeeper快速入门】 —— 每天一点小知识

&#x1f4a7; Z o o K e e p e r 快速入门 \color{#FF1493}{ZooKeeper快速入门} ZooKeeper快速入门&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专…

GPU 并行计算入门

文章目录 0. 前言1. CPU vs GPU2. 并行计算简介3. CUDA 简介4. CUDA 的处理流程 0. 前言 在没有GPU之前&#xff0c;基本上所有的任务都是交给CPU来做的。有GPU之后&#xff0c;二者就进行了分工&#xff0c;CPU负责逻辑性强的事物处理和串行计算&#xff0c;GPU则专注于执行高…

chatgpt赋能python:Python如何横着输入优化网站SEO

Python如何横着输入优化网站SEO 简介 Python作为一种强大的编程语言&#xff0c;在网络开发、数据处理、机器学习、人工智能等领域得到了广泛应用。随着互联网的发展&#xff0c;优化网站SEO已成为网站管理者不可或缺的重要职责&#xff0c;而如何横着输入也是优化SEO的重要一…

chatgpt赋能python:Python求平方:简单方便的方法

Python求平方&#xff1a;简单方便的方法 Python是一种功能强大、易学易用的编程语言&#xff0c;许多人使用它来进行数学计算。在Python中求一个数的平方是非常简单的。本文将介绍一些方法来实现这一任务。 使用**操作符 Python中的**操作符是求平方的快捷方式。它将一个数…