RK3568------Openharmony 4.0-Release WIFI/BT模组适配

news2024/10/3 10:38:21

RK3568------Openharmony 4.0-Release WIFI/BT模组(ap6236)适配

文章目录

  • RK3568------Openharmony 4.0-Release WIFI/BT模组(ap6236)适配
  • 前言
  • 一、驱动移植
  • 二、设备树配置
  • 三 、内核配置
  • 四、遇到的问题
  • 五、效果展示
  • 总结


前言

随着RK3568适配工作的推进,整体适配工作已经接近结束,本篇文章将讲解最后一个驱动适配,正 wi-fi/BT适配


一、驱动移植

市面上常用的WI-FI/BT模组有3款,正基、海华、realtek。正基的模组驱动在鸿蒙RK3568中,已经通过补丁的形式移植进去了,这里我不在赘述。讨论群里也有群友使用的是realtek模组,提供的相关驱动补丁realtek模组驱动

以上驱动的路径为:

kernel/drivers/net/wireless/rockchip_wlan/
kernel/drivers/net/wireless/rockchip_wlan/rkwifibt/ #正基模组
kernel/drivers/net/wireless/rockchip_wlan/cywdhd/ #cypress海华模组
kernel/drivers/net/wireless/rockchip_wlan/rtlxxx #realtek模组

二、设备树配置

设备树配置:
Wi-Fi/BT硬件管脚的配置主要有以下几点:
切记一定要对照原理图进行配置,且确保使用的dts/dtsi里面包含以下节点

/* WIFI_REG_ON: Wi-Fi的电源PIN脚 */
	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_enable_h>;
		/*
		 * On the module itself this is one of these (depending
		 * on the actual card populated):
		 * - SDIO_RESET_L_WL_REG_ON
		 * - PDN (power down when low)
		 */
		post-power-on-delay-ms = <20>;
		/* 这里的电平状态恰好跟使能状态相反,比如REG_ON高有效,则这里为LOW;如果REG_ON低有效,则填HIGH */
		reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>;
		status = "okay";
	};

&pinctrl {
     sdio-pwrseq {
     wifi_enable_h: wifi-enable-h {
     rockchip,pins =
 /* 对应上面的WIFI_REG_ON */
    rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
          };
      };
};
/* 打开SDIO接口 */
&sdio {
 max-frequency = <150000000>; /* sdio接口的最大频率,可调整 */
 bus-width = <4>; /* 4线模式 */
 sd-uhs-sdr104; /* 支持SDIO3.0 */
 … …
 status = "okay";
};
/* WIFI_WAKE_HOST: Wi-Fi唤醒主控的PIN脚 */
wireless-wlan {
 compatible = "wlan-platdata";
 rockchip,grf = <&grf>;
 /* 注意:下面的clock属性是开启PMU的32.768k的,请按照实际使用的型号填写,否在SDIO/WiFi无法使用 */
 rockchip,grf = <&grf>;
 clocks = <&rk809 1>;
 /* 海华/正基模组兼容可以不用修改此名称,realtek需要按实际填写 */
 wifi_chip_type = "ap6255";
 /* WIFI_WAKE_HOST GPIO_ACTIVE_HIGH特别注意:确认下这个wifi pin脚跟主控的连接关系,
直连的话就是HIGH, 如果中间加了一个反向管就要改成低电平LOW触发 */
 WIFI,host_wake_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
 /* 注意USB接口的Wi-Fi需要添加此配置,对应WIFI_REG_ON PIN, 且无需sdio_pwrseq/sdio等
节点 */
 WIFI,poweren_gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
 status = "okay";
};
/* pinctrl的配置 */
wireless-wlan {
 /omit-if-no-ref/
 wifi_wake_host: wifi-wake-host {
 /* 注意一般Wi-Fi的wake up pin都是高电平触发,所以默认这里要配置为下拉,如果客户的
是硬件设计是反向的则要改为上拉,总之要初始化为与触发电平相反的状态*/
 rockchip,pins = <0 RK_PA0 0 &pcfg_pull_down>;
 };
};

!!!!!!!!!!!!!!!!设备树配置这里有几个注意事项:

  • IO电源域的配置
    说明:外部电源比如VCCIO_SDIO(3.3/1.8v)会同时给芯片的IO和Wi-Fi模组的IO供电,以保证它
    们之间的电压匹配,而主芯片的IO需要设置电源域寄存器以匹配外部的供电电压,所以dts里面需
    要特定配置告诉驱动支持SDIO3.0的模组IO一定要接1.8v,SDIO2.0 3.3v/1.8v都可以,但切记要匹
    配,不能出现供电1.8而配置3.3或者反之。

在这里插入图片描述
在这里插入图片描述

查看上面原理图,找到Wi-Fi对应的sdio接口部分,图中有标注VCCIOX(有些芯片组名字为:APIOX

或者其它),比如这个是VCCIO1,则给VCCIO1供电的是VCCIO_SDIO,查找VCCIO_SDIO连接的网络
是3.3v还是1.8v,如果硬件是3.3v,按照对应关系进行修改,切记不能出现不匹配的问题。

  • 32.768K的配置

正基/海华的模组都是要外供32.768k,而Realtek的模组都是内部封装好的,只有COB芯片才会外供。
如果Wi-Fi模组需要外部供这个频率,则有两种情况:

  1. 从原理图可以看到RK8XX型号的PMU会给Wi-Fi供32k,一般PMU默认打开32k,如果没有打开则需
    要添加如下配置:
    注意:如果用的不是RK的PMU,则不能这样配置;看下原理图的32k是如何供的,然后根据实际情况打
    开32k。
  2. 如果需要CPU去供32K,则dts需要添加如下配置(不建议使用这种方式):
    硬件连接如下图所示:
    在这里插入图片描述
    在这里插入图片描述

三 、内核配置

ap6236:
CONFIG_AP6XXX_WIFI6
CONFIG_BCMDHD
CONFIG_WL_ROCKCHIP
CONFIG_WLAN

rtl8733:
CONFIG_RTL8733BU=y

四、遇到的问题

1.启动后ifconfig找不到网卡
我移植后,ifconfig后找不到网卡,我查找问题的思路有以下几个点:

  • 模组本身有问题
  • 设备树没有正确配置,导致驱动加载失败
    有问题先排查硬件,我更换了一个底板以后,还是找不到网卡,并且测量电源是正确的。排除模组本身问题;接着查看内核打印,查看驱动加载情况
    在这里插入图片描述
    追加了一个打印,发现驱动加载成功,并且也成功分配了wlan0的MAC地址,说明驱动加载成功了。
    最后判断应该是查找网卡出现了问题,使用ifconfig -a 以后,wlan0存在

2.找到网卡但是不能正常运行
追加驱动源码的打印:
在这里插入图片描述
在这里插入图片描述
芯片需要的固件错误,于供应商沟通更换固件
3.运行后搜索不到热点
首先排查硬件,发现没有安装天线

五、效果展示

WIFI展示


总结

本人之前一直从事应用开发,借着这次电鸿的契机进行系统级开发的学习,将我在工作中的遇到的问题及解决思路记录并分享,希望可以与诸君共勉
目前网上技术讨论群大都是鸿蒙的应用开发,总结此类文章也是希望将同样进行鸿蒙设备开发的同僚召集到一起,一起讨论学习。如果有同样在进行鸿蒙设备开发的朋友,可以加我的联系方式,期待您的消息
个人微信
在这里插入图片描述

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

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

相关文章

泛微E9开发 控制日期浏览按钮的可选日期范围

控制日期浏览按钮的可选日期范围 1、需求说明2、实现方法3、扩展知识点控制日期浏览按钮的可选日期范围格式参数说明演示 1、需求说明 控制日期浏览按钮的可选日期范围为2024/07/01~2024/07/31&#xff0c;如下图所示 2. 控制日期浏览按钮的可选日期范围在当前时间的前一周~当…

【基于R语言群体遗传学】-13-群体差异量化-Fst

在前几篇博客中&#xff0c;我们深度学习讨论了适应性进化的问题&#xff0c;从本篇博客开始&#xff0c;我们关注群体差异的问题&#xff0c;建议大家可以先看之前的博客&#xff1a;群体遗传学_tRNA做科研的博客-CSDN博客 一些新名词 Meta-population:An interconnected gro…

4:表单和通用视图

表单和通用视图 1、编写一个简单的表单&#xff08;1&#xff09;更新polls/detail.html文件 使其包含一个html < form > 元素&#xff08;2&#xff09;创建一个Django视图来处理提交的数据&#xff08;3&#xff09;当有人对 Question 进行投票后&#xff0c;vote()视图…

Proteus + Keil单片机仿真教程(五)多位LED数码管的静态显示

Proteus + Keil单片机仿真教程(五)多位LED数码管 上一章节讲解了单个数码管的静态和动态显示,这一章节将对多个数码管的静态显示进行学习,本章节主要难点: 1.锁存器的理解和使用; 2.多个数码管的接线封装方式; 3.Proteus 快速接头的使用。 第一个多位数码管示例 元件…

谷歌云 | Gemini 大模型赋能 BigQuery 情感分析:解码客户评论,洞悉市场风向

情感分析是企业洞察客户需求和改进产品服务的重要工具。近年来&#xff0c;随着自然语言处理 (NLP) 技术的飞速发展&#xff0c;情感分析变得更加精准高效。Google 推出的 Gemini 模型&#xff0c;作为大型语言模型 (LLM) 的代表&#xff0c;拥有强大的文本处理能力&#xff0c…

共生与变革:AI在开发者世界的角色深度剖析

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的概念&#xff0c;而是逐步渗透到我们工作与生活的每一个角落。对于开发者这一群体而言&#xff0c;AI的崛起既带来了前所未有的机遇&#xff0c;也引发了关于其角色定位的深刻讨论——AI…

electron在VSCode和IDEA及webStrom等编辑器控制台打印日志乱码

window10环境下设置 1.打开Windows设置 2.打开时间和语言&#xff0c;选择语言菜单、如何点击管理语言设置 3.打开之后选择管理&#xff0c;选择更改系统区域设置&#xff0c;把Beta版&#xff1a;使用Unicode UTF-8提供全球语言支持 勾上&#xff0c;点击确定&#xff0c;…

氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享

亲爱的创作者们&#xff0c;大家好&#xff01;今天我们来聊聊视频创作中至关重要的一点——氛围感。一个好的视频&#xff0c;不仅要有视觉冲击力&#xff0c;还要能够触动观众的情感。那我们应该去哪里寻找这些充满氛围感且高级的视频素材呢&#xff1f;别急&#xff0c;我这…

isaac sim 与 WLS2 ros2实现通信

Omniverse以及isaac还是windows下使用顺手一点&#xff0c;但是做跟ros相关的开发时候&#xff0c;基本就得迁移到ubuntu下了&#xff0c;windows下ros安装还是过于复杂&#xff0c;那不想用双系统或者ubuntu或者虚拟机&#xff0c;有啥别的好方法呢&#xff1f;这里想到了wind…

希喂、鲜朗和牧野奇迹主食冻干怎么样?第一次喂冻干哪款更好

我是个宠物医生&#xff0c;每天很长时间都在跟猫猫狗狗打交道&#xff0c;送到店里来的猫猫状态几乎是一眼就能看出来&#xff0c;肥胖、肝损伤真是现在大部分家养猫正面临的&#xff0c;靠送医治疗只能减缓无法根治&#xff0c;根本在于铲屎官的喂养方式。 从业这几年&#…

打开ps提示dll文件丢失如何解决?教你几种靠谱的方法

在日常使用电脑过程中&#xff0c;由于不当操作&#xff0c;dll文件丢失是一种常见现象。当dll文件丢失时&#xff0c;程序将无法正常运行&#xff0c;比如ps&#xff0c;pr等待软件。此时&#xff0c;我们需要对其进行修复以恢复其功能&#xff0c;下面我们一起来了解一下出现…

EtherCAT总线冗余让制造更安全更可靠更智能

冗余定义 什么是总线冗余功能&#xff1f;我们都知道&#xff0c;EtherCAT现场总线具有灵活的拓扑结构&#xff0c;设备间支持线型、星型、树型的连接方式&#xff0c;其中线型结构简单、传输效率高&#xff0c;大多数的现场应用中也是使用这种连接方式&#xff0c;如下图所示…

MiniGPT-Med 通用医学视觉大模型:生成医学报告 + 视觉问答 + 医学疾病识别

MiniGPT-Med 通用医学视觉大模型&#xff1a;生成医学报告 视觉问答 医学疾病识别 提出背景解法拆解 论文&#xff1a;https://arxiv.org/pdf/2407.04106 代码&#xff1a;https://github.com/Vision-CAIR/MiniGPT-Med 提出背景 近年来&#xff0c;人工智能&#xff08;AI…

单链表(C语言详细版)

1. 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构跟火车车厢相似&#xff0c;淡季时车次的车厢会相应减少&#xff0c;旺季时车次的车厢会额外增加几节。…

Java面试八股之描述一下MySQL使用索引查询数据的过程

描述一下MySQL使用索引查询数据的过程 1.解析查询语句与查询优化 用户提交一个 SQL 查询语句&#xff0c;MySQL 的查询解析器对其进行词法分析和语法分析&#xff0c;生成解析树。 查询优化器根据解析树、表结构信息、统计信息以及索引信息&#xff0c;决定是否使用 B树索引…

解锁AI大模型潜能:预训练、迁移学习与中间件编程的协同艺术

在人工智能的浩瀚星空中&#xff0c;大型预训练模型&#xff08;Large Language Models, LLMs&#xff09;犹如璀璨的星辰&#xff0c;引领着技术革新的浪潮。这些模型通过海量数据的滋养&#xff0c;学会了理解语言、生成文本乃至执行复杂任务的能力。然而&#xff0c;要让这些…

符号同步、定时同步和载波同步

符号同步、定时同步和载波同步是通信系统中重要的同步技术&#xff0c;它们各自承担着不同的功能和作用。以下是对这三种同步技术的详细解释&#xff1a; 符号同步 定义&#xff1a; 符号同步&#xff0c;也称为定时恢复或时钟恢复&#xff0c;是指在数字通信系统中&#xff…

mysql 5.7.44 32位 zip安装

前言 因为研究别人代码&#xff0c;他使用了5.7的 32位 mysql &#xff0c;同时最新的 8.4 64位 mysql 不能用官方lib连接。所以安装这个版本使用&#xff0c;期间有些坑&#xff0c;在这里记录一下。 下载路径 mysql官方路径&#xff1a;https://downloads.mysql.com/archi…

更深入了解汽车与航空电子等安全关键型应用的IP核考量因素

作者&#xff1a;Philipp Jacobsohn&#xff0c;SmartDV高级应用工程师 中国已经连续十多年成为全球第一大汽车产销国&#xff0c;智能化也成为了汽车行业发展的一个重要方向&#xff0c;同时越来越多的制造商正在考虑进入无人机和飞行汽车等低空设备&#xff0c;而所有的这些…

一周IT资讯 | B站、小红书等应用崩溃,系阿里云服务器异常所致;余承东回西工大演讲,网友:“史上最强招生guang告”

4.B站、小红书等应用崩溃&#xff0c;系阿里云服务器异常所致 7月2日上午&#xff0c;“B站崩了”“小红书崩了”等话题登上热搜。B站APP无法使用浏览历史关注等内容&#xff0c;消息界面、更新界面、客服界面均不可用&#xff0c;用户也无法评论和发弹幕&#xff0c;视频评论…