[基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式]

news/2024/5/14 20:57:12/文章来源:https://blog.csdn.net/a812417530/article/details/126787139

基于瑞芯微RV1126调试RTL8818FU WIFI模组支持STA和AP模式

  • 内核menuconfig配置
  • 内核dts配置
  • 文件系统配置和更改
  • 驱动编译
  • wifi工具编译
    • libnl库编译
    • openssl编译
    • wpa_supplicant编译
    • hostapd编译
  • 开机运行脚本测试WIFI—STA模式
  • 运行脚本测试WIFI-AP模式

内核menuconfig配置

CONFIG_NETFILTER=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_INET=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_BRIDGE=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_RAW=y
CONFIG_NETFILTER_XT_MATCH_STATE=y
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PLATFORM=y
CONFIG_USB_NET_RNDIS_WLAN=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
CONFIG_USB_CONFIGFS_RNDIS=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3_ROCKCHIP_INNO=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_HCD_PLATFORM=y
CONFIG_USB_HID=y
CONFIG_USB=y
CONFIG_USB_USBNET=y
CONFIG_PHY_ROCKCHIP_NANENG_USB2=y
CONFIG_RFKILL=y
CONFIG_RFKILL_RK=y
CONFIG_CFG80211=y
CONFIG_CFG80211_WEXT=y

内核dts配置

	wireless_wlan: wireless-wlan {compatible = "wlan-platdata";rockchip,grf = <&grf>;/*clocks = <&rk809 1>;clock-names = "clk_wifi";*/pinctrl-names = "default";pinctrl-0 = <&wifi_init>;wifi_chip_type = "rtl8188fu";WIFI,poweren_gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; /*WIFI,host_wake_irq = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; */status = "okay";};wireless-wlan {/omit-if-no-ref/wifi_wake_host: wifi-wake-host {rockchip,pins = <0 RK_PB0 0 &pcfg_pull_up>;};wifi_init: wifi-init {rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_output_high>,//wifi_enable<0 RK_PB1 RK_FUNC_GPIO &pcfg_output_high>,//usb_hub_enable//usb-switch<3 RK_PC1 RK_FUNC_GPIO &pcfg_output_high>,<3 RK_PC2 RK_FUNC_GPIO &pcfg_output_low>;};};

文件系统配置和更改

删掉中间文件:
buildroot/output/rockchip_rv1126_rv1109_xxx/target/etc/init.d/S45connman
buildroot/output/rockchip_rv1126_rv1109_xxx/target/usr/bin/connmanctl
buildroot/output/rockchip_rv1126_rv1109_xxx/target/usr/sbin/connmand
app/netserver/main.c main函数直接return不执行buildroot/output/rockchip_rv1126_rv1109/target/etc/init.d/S36load_rv1109_wifi_modules
//注释掉下面这两行
printf "load wifi modules: "
#insmod /system/lib/modules/"8188fu.ko"
#[ $? = 0 ] && echo "OK" || echo "FAIL"
#注etc/init.d/目录的文件在系统启动时会依次被调用,所以WiFi的驱动会被自动加载,这里我们注释掉它使用自己的wifi驱动根目录external/下添加softapDemo.tgz.gz
main.c下
+++ main.c/static char softap_name[64] = "wlan0";
+++ main.c/wlan_accesspoint_start(apName, apPassword);
--- main.c/eth_accesspoint_start();
--- main.c/iftables_usb0_to_eth0(wan,lan);
package/rockchip/Config.in 添加:source "package/rockchip/softap/Config.in"根目录
make menuconfig 
BR2_PACKAGE_RKWIFIBT_RTL8188FU =y
# 选择对应的WiFi型号 其实也可不选我们不用原厂wifi驱动
BR2_PACKAGE_IPC_DAEMON = n
BR2_PACKAGE_NETSERVER = n
BR2_PACKAGE_CONNMAN = n
BR2_PACKAGE_DHCPCD = y
BR2_PACKAGE_SOFTAP=y
make savedefconfig
make netserver-dirclean
make connman-dirclean
make ipc-daemon-dirclean
make softap-dirclean
make rkwifibt-dirclean 
#清除掉之前的
./build.sh rootfs 
#编译文件系统
注意:
编译好看看buildroot/output/rockchip_rv1126_rv1109/target/etc/init.d/S36load_rv1109_wifi_modules
有没被覆盖,覆盖掉的话需要重新注释

驱动编译

修改配置
SDK\extern\rtl8188FU_linux_v5.11.5-13-g2482755ff.20210615\Makefile

CROSS_COMPILE := arm-linux-gnueabihf-
KSRC := rockchip_new_20220628/kernel
RTL模组: 使用p2p0作为softap功能,通过内核驱动的配置生成p2p0,如果没有p2p0节点请检查这里的配
置
EXTRA_CFLAGS += -DCONFIG_PLATFORM_ANDROID
CONFIG_PLATFORM_ARM_RK2818 = y
CONFIG_AP_MODE = y
CONFIG_POWER_SAVING = n
CONFIG_MP_INCLUDED = y

make clean && make;

wifi工具编译

libnl库编译

mkdir __install;
./configure CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar --prefix=$(pwd)/__install --host=arm-linux-gnueabihf;
make && make install;

openssl编译

mkdir __install;
./config no-asm no-shared --cross-compile-prefix=arm-linux-gnueabihf- --prefix=$(pwd)/__install 
去掉CFLAG参数中的 -m64 ,SHARED_LDFLAGS参数中的 -m64
make && make install

wpa_supplicant编译

cd SDK/extern/wifi_tool/wpa_supplicant_8_kk_4.4_rtw_r25669.20171213/wpa_supplicant;
cp defconfig .config;
#Makfefile中添加libnl和礼包ssl的路径
CC=arm-linux-gnueabihf-gcc
CFLAGS += -I../../libnl-1.1.4/__install/include
CFLAGS += -I../../openssl-1.0.2g/__install/include
LIBS += -L../../libnl-1.1.4/__install/lib  -lnl -lm -lpthread
LIBS += -L../../openssl-1.0.2g/__install/lib -lssl -lcrypto -ldl
#编译
make clean && make; #生成wpa_supplicant和wpa_cli
arm-linux-gnueabihf-strip wpa_cli
arm-linux-gnueabihf-strip wpa_supplicant

hostapd编译

cd SDK/extern/wifi_tool/wpa_supplicant_8_kk_4.4_rtw_r25669.20171213/hostapd;
cp defconfig .config;
#Makfefile中添加libnl和礼包ssl的路径
CC=arm-linux-gnueabihf-gcc
CFLAGS += -I../../libnl-1.1.4/__install/include
CFLAGS += -I../../openssl-1.0.2g/__install/include
LIBS += -L../../libnl-1.1.4/__install/lib  -lnl -pthread
LIBS += -L../../openssl-1.0.2g/__install/lib -lssl -lcrypto -ldl
#编译
make clean &&& make;

开机运行脚本测试WIFI—STA模式

开机后可以用lsusb命令看看是否有wifi节点(ID为下图:即为wifi模块)
在这里插入图片描述
运行脚本
./wifi_test.sh

cd /mnt/wifi_lib
echo host > /sys/devices/platform/ff4c0000.usb2-phy/otg_mode
#使能usb为Host模式,这个建议放到/etc/ini.d/rcS里面开机执行一次就好
killall softapDemo&&killall hostapd && killall udhcpd
rmmod wlan
sleep 1
insmod wlan.ko
#加载后可以用iwlist wlan0 scan命令验证一下能不能搜索到热点
export LD_LIBRARY_PATH=/mnt/wifi_lib/nl_lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/mnt/wifi_lib/lib:$LD_LIBRARY_PATH
ifconfig wlan0 up
./wpa_supplicant -B -iwlan0 -c  wpa_supplicant.conf -Dnl80211
./wpa_cli -i wlan0 status
route del default;route del 255.255.255.255
udhcpc -iwlan0 -q& 
route add -net 255.255.255.255 netmask 255.255.255.255 dev wlan0

然后板子就可以通过wifi ping外网了

运行脚本测试WIFI-AP模式

./hostapd.sh

killall wpa_supplicant
sleep 2
ifconfig wlan0 0.0.0.0
ifconfig wlan0 down
killall hostapd && killall udhcpd
softapDemo

然后可以用笔记本尝试连接热点ping板子wlan0 ip是否能通

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

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

相关文章

高光谱图像分类简述+《Deep Learning for Hyperspectral Image Classification: An Overview》综述论文笔记

论文题目《Deep Learning for Hyperspectral Image Classification: An Overview》 论文作者:Shutao Li, Weiwei Song, Leyuan Fang,Yushi Chen, Pedram Ghamisi,Jn Atli Benediktsson 论文发表年份:2019 一、高光谱简述高光谱成像是一项重要的遥感技术,它采集了从…

SQL server 2008 安装教程

SQL server 2008 安装教程 1. 安装 SQL server 2008 的主要步骤如下 1.1 点击 setup.exe1.2 选中 “安装”&#xff0c;并点击右边的 “全新 SQL sever 独立或向现有安装添加功能1.3 重启电脑&#xff0c;再找到安装程序 “setup.exe” 重复上面的步骤1.4 输入产品秘钥 “JD8Y…

The Art of Prompting: Event Detection based on Type Specific Prompts

Motivation之前的研究表明prompt可以提高模型在事件检测方面的性能,包括使用特定structure 使用每种事件类型特定的query 原型 trigger这些尝试启发对不同prompt效果的探究Settings 作者在3种setting下做了实验:Supervised event detection Few-shot Event detection两个数据…

对课上相关问题的研究和解答

问题一:从测试中看不足 1、JAVA的基本运行单位是类 2、类中由类变量和类方法共同组成 3、变量的类型相互之间存在可以转换的关系,具体来说,可以分为以下几种情况: 1、(byte、short、char)-int-long-float-double,从低级到高级的排序,数据类型可以直接由低级向高级转换 举…

SpringCloud微服务架构

什么是微服务 微服务架构的基础是将的那个应用程序开发为一组小型独立服务&#xff0c;这些独立服务在自己的进程中运行&#xff0c;独立开发和部署。 SpringCloud Alibaba微服务&#xff1a; Spring Cloud Alibaba 是Spring Cloud的一个子项目&#xff0c;致力于提供微服务…

9--RNN

有隐藏状态的循环神经网络 假设在时间步t有小批量输入&#xff0c;即对于n个序列样本的小批量&#xff0c;的每一行对应于来自该序列的时间步t处的一个样本&#xff0c;用表示时间步t的隐藏变量。与MLP不同的是&#xff0c; 我们在这里保存了前一个时间步的隐藏变量&#xff0c…

《Mycat分布式数据库架构》之数据切分实战

文章目录1、引言2、前期准备2.1 系统环境2.2 数据库集群3 注意事项3.1 分片原则3.2 如何选择分片键4 数据切分实战4.1 配置访问用户及权限4.2 配置逻辑库及逻辑表4.3 配置分片规则4.3.1 简单取模分片4.3.2 哈希取模分片4.3.3 枚举分片4.3.4 字符串范围取模分片前文回顾&#xf…

Selenium操作已经打开的Chrome(只怪自己尝试的太迟)

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f970; 博客首页&#xff1a;…

抖音视频

刻度尺读取方法0n:/ 复制打开抖音,看看【天子骄龙的作品】初中物理-刻度尺读数 ηηQ2VtW0nGyv8▽▽ 秒表读取方法 8.76 aNW:/ 复制打开抖音,看看【天子骄龙的作品】初中物理-秒表读数# 专业的事交给专业的人 初中物理... https://v.douyin.com/6RTySK2/

微信支付v3

文章目录前言1. 微信支付产品介绍2 接入指引2.1 获取商户号2.2 获取appid2.3 获取密钥和证书3 支付安全3.1 对称加密和非对称加密3.2 身份认证3.3 数字证书3.4 https中的数字证书3.5 微信支付中的证书密钥和签名4 基础支付apiv34.1 基础支付APly3-引入支付参数4.2 基础支付APly…

frame标签使用

当页面采用框架集的时候,如果点击,某个部分想在当前页面跳转到一个全新的无框架集的页面,可以在超链接中指定 target属性,如果指定为_top,则是整个页面,也可以指定某个frame 。 默认的几种值有: _self:当前frame(或者当前部分) _blank:打开新的一个窗口 _parent:当…

upload-labs靶场通关指南(9-11关)

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是upload-labs靶场通关指南&#xff08;9-10关&#xff09; 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; …

JavaScript每日一题_立即执行函数中函数名和变量同名,输出的是什么

立即执行函数中函数名和变量同名,输出的是什么 代码如下 var a 1;(function a() {a 2console.log(a)})();首先,不是输出2,也不是输出1 运行代码 输出的是函数a未定义 一句一句代码解读 实现 var a 1;会在window对象上挂载一个属性a,并赋值为1 然后是 (function a() {a …

.NET操作Excel高效低内存的开源框架 - MiniExcel

.Net平台上对Excel进行操作主要有两种方式。第一种,把Excel文件看成一个数据库,通过OleDb的方式进行读取与操作;第二种,调用Excel的COM组件。两种方式各有特点。 今天给大家介绍第三种方式:插件方式,目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗…

【ZJSU - 大红大紫:ACM - Template】比赛用模板12:STL与库函数

模板整理12:STL与库函数(更新至v6.0,2022.09.10)\(\tt STL\) 与库函数 后继 \(\tt lower\_bound、upper\_bound\) lower 表示 \(\ge\) ,upper 表示 \(>\) 。使用前记得先进行排序。 //返回a数组[start,end)区间中第一个>=x的地址【地址!!!】 cout << lower…

剑指offer--重建二叉树

目录Start代码及分析EndingStart 代码及分析 在已知前序遍历和中序遍历之后&#xff0c;如何建树呢&#xff1f; 我们知道&#xff0c;在二叉树的前序遍历当中&#xff0c;第一个数字总是根结点的值。而在中序遍历中&#xff0c;根节点位于中间位置&#xff0c;根结点的左边是…

【数据结构】交换排序之冒泡排序与快速排序

承接上文&#xff1a; (32条消息) 【数据结构】常见排序之插入排序与选择排序_vpurple__的博客-CSDN博客https://blog.csdn.net/vpurple_/article/details/126568614?spm1001.2014.3001.5502https://blog.csdn.net/vpurple_/article/details/126568614?spm1001.2014.3001.55…

【算法刷题日记之本手篇】微信红包与计算字符串的编辑距离

⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解&#xff0c;分别为【微信红包】和【计算字符串的编辑距离】&#xff0c;展示语言java。 小贴士&#xff1a;本专栏所有题目来自牛客->面试刷题必用工具 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 …

索引优化分析_预热_JOIN

索引优化分析_预热_JOIN1.性能下降SQL慢 执行时间长 等待时间长2.常见通用的Join查询2.1.SQL执行顺序2.2.Join图2.3.建表SQL2.4 7种JOIN2.5.扩展(掌门人)1.性能下降SQL慢 执行时间长 等待时间长 数据过多——分库分表 mycat索引失效&#xff0c;没有充分利用到索引——索引建立…

Java项目:ssm流浪狗领养系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 流浪狗领养网站是一个基于ssm(Spring SpringMVC MyBatis)的项目&#xff0c;项目分为前后台。 前台网站主要首页(包含轮播图、关键字搜索、点击排行…