AP6275S移植总结

2023-05-16

RK3308B+AP6275S移植

在rk3308b平台移植rtl8821cs,rlt8821cs是wifi+bt一体的模组,主要记录下移植过程中需要注意的地方

移植驱动

将rtl8821cs的驱动包复制到rk的SDK内,路径如下rockchip_rk3308b_sdk/kernel/drivers/net/wireless/rockchip_wlan/cywdhd,并命名为bcmdhd

DTS修改

主要确认下wireless-bluetooth、wireless-wlan节点信息

wireless-bluetooth {
		compatible = "bluetooth-platdata";
		uart_rts_gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default", "rts_gpio";
		pinctrl-0 = <&uart4_rts>;
		pinctrl-1 = <&uart4_rts_gpio>;
		BT,power_gpio = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>; // BT_REG_ON
		BT,wake_host_irq = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>; // BT_WAKE_HOST
		status = "okay";

	};

BT,power_gpio对应蓝牙的使能脚,BT,wake_host_irq是蓝牙唤醒脚

wireless-wlan {
		compatible = "wlan-platdata";
		rockchip,grf = <&grf>;
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_wake_host>;
		wifi_chip_type = "ap6275s";
		WIFI,host_wake_irq = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
		status = "okay";
	};

WIFI,host_wake_irq对应WiFi唤醒脚

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_xfer &uart4_cts>;
    status = "okay";
};

&uart4_xfer 、&uart4_cts分别为uart4的TX、RX和cts脚。注意RK不同的平台cts的叫法不一样,要区分

内核配置文件修改

内核配置文件没什么特别需要注意的地方,这里主要罗列下蓝牙相关的配置选项

CONFIG_BT=y
CONFIG_BT_BREDR=y
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_DEBUGFS=y
CONFIG_BT_HCIUART=y
CONFIG_BT_HCIUART_H4=y
CONFIG_BT_RFCOMM=y
ONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=y
CONFIG_BT_L2CAP=y
CONFIG_BT_SCO=y

Buildroot配置

关于buildroot配置主要罗列下关于蓝牙的应用,使用的是Bluez5蓝牙协议栈

#BR2_PACKAGE_BLUEZ_ALSA=y
BR2_PACKAGE_BLUEZ5_UTILS=y
#BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
#BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
#BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL=y
BR2_PACKAGE_DBUS=y
BR2_PACKAGE_DBUS_GLIB=y
#BR2_PACKAGE_DBUS_CPP=y
#BR2_PACKAGE_DBUS_TRIGGERD=y
#BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y

前面带“#”的不是必选,可以选择性添加特定功能,RK推荐用的是BROADCOM_BSA协议,这里还是采用bluez5协议,如果要使用BROADCOM_BSA协议,则需要添加该协议的应用依赖(BR2_PACKAGE_BROADCOM_BSA=y BR2_PACKAGE_BROADCOM_BSA_AP6275S=y 路径为rockchip_rk3308b_sdk/buildroot/package/rockchip/broadcom_bsa/Config.in)。另外需要添加AP6275S的依赖和配置文件,添加AP6275S的信息,路径如下rockchip_rk3308b_sdk/buildroot/package/rockchip/rkwifibt/rkwifibt.mk

添加AP6275S的配置信息

ifeq ($(BR2_PACKAGE_RKWIFIBT_AP6275S),y)
CHIP_VENDOR = BROADCOM
CHIP_NAME = AP6275S
BT_FIRMWARE = BCM4362A2.hcd   #蓝牙固件名
WIFI_KO = bcmdhd.ko
endif

选择编译AP6275S的相关应用

BR2_PACKAGE_RKWIFIBT_AP6275S=y

Symbol: BR2_PACKAGE_RKWIFIBT_AP6275S [=y]                                                                                                                                      
   Type  : boolean                                                                                                                                                                
   Prompt: AP6275S                                                                                                                                                                
     Location:                                                                                                                                                                    
       -> Target packages                                                                                                                                                         
         -> rockchip BSP packages (BR2_PACKAGE_ROCKCHIP [=y])                                                                                                                     
           -> rkwifibt (BR2_PACKAGE_RKWIFIBT [=y])                                                                                                                                
   (2)       -> wifi chip support (<choice> [=y])                                                                                                                                 
     Defined at package/rockchip/rkwifibt/Config.in:21                                                                                                                            
     Depends on: <choice>                                                    

功能验证

WiFi功能验证

将驱动挂载后,使用ifconfig -a看看有没有相应的节点,如果有的话进行下一步功能的验证

[root@eufy /oem]$ ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:73464 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:3673200 (3.5 MiB)  TX bytes:3673200 (3.5 MiB)

wlan0     Link encap:Ethernet  HWaddr 10:2C:6B:80:2D:16  
          inet6 addr: fe80::122c:6bff:fe80:2d16/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)

手动修改 wpa_supplicant.conf 文件进行联网验证功能

1、启动 wpa_supplicant:wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf

2、修改wpa_supplicant.conf文件

/ # vi /data/cfg/wpa_supplicant.conf 
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
	scan_ssid=1
	ssid="WFW"  
	psk="12345678"
	key_mgmt=WPA-PSK
}

设置好文件后就重新读,wpa_cli reconfigure,并重新连接wpa_cli reconnect

最后ping下www.baidu.com看能否收到回复

蓝牙功能验证

蓝牙上层操作是基于bluez的各种工具,主要有hcitool、hciconfig 工具,简单介绍下

hciconfig工具

#要带上具体的蓝牙节点,我这以hci0节点为例
hciconfig hci0 up    #激活蓝牙
hciconfig hci0 down  #关闭蓝牙
hciconfig hci0 name XXX #修改蓝牙名
hciconfig hci0 class 0xXXXXXX 修改蓝牙类型
hciconfig hci0 piscan #允许被其它蓝牙扫描到,是PSCAN ISCAN组合
hciconfig hci0 leadv #开启ble蓝牙广播

hcitool工具

因为将该设备作为从设备,所以用到的也就是扫描命令,如下

hcitool scan # 扫描经典蓝牙
hcitool lescan # 扫描ble设备

启动蓝牙

mkdir -p /var/run/dbus/							#启动Dbus进程
dbus-daemon --system
echo 0 > /sys/class/rfkill/rfkill0/state		  #蓝牙使能脚拉低
sleep 1
echo 1 > /sys/class/rfkill/rfkill0/state		  #蓝牙使能脚拉高
brcm_patchram_plus -d --enable_hci --no2bytes --tosleep 200000 --baudrate 1500000 --patchram /system/etc/firmware/BCM4362A2.hcd /dev/ttyS4 &									#下载固件
sleep 30
/usr/libexec/bluetooth/bluetoothd --compat -n &	   #启动蓝牙协议
sleep 3
hciconfig hci0 up								#激活蓝牙
hciconfig hci0 piscan							#允许被其它蓝牙设备扫描

几点说明

1、如果启动Dbus失败,那么在passwd添加如下内容

messagebus:x:500:500::/home/messagebus:/bin/sh
dbus:x:1000:1000:DBus messagebus user:/var/run/dbus:/bin/false

2、brcm_patchram_plus -d --enable_hci --no2bytes --tosleep 200000 --baudrate 1500000 --patchram /system/etc/firmware/BCM4362A2.hcd /dev/ttyS4 &

该命令是下载蓝牙固件,用的是brcm_patchram_plus应用程序,下载地址:brcm_patchram_plus,就一个c文件,交叉编译一下即可。如果下载失败请检查蓝牙使用的串口绑定对不对,AP6275S的rts和cts的初始状态对不对(rts低,cts要为高,如果状态不对,要采取上下拉电阻使其在正确的状态),如果下载成功,会出现下面类似的提示

received 7
04 0e 04 01 4c fc 00 
writing
01 4c fc b2 8e 3e 16 00 00 e0 73 78 a3 74 20 46 
16 f7 1f ff 28 b1 26 4b a2 7c 1b 78 9a 42 38 bf 
a3 74 20 46 ff f7 e3 fe 20 46 be f6 6c f9 d0 b1 
02 23 b5 f8 f2 20 94 f8 24 10 b5 f8 f0 00 db f6 
04 f8 00 23 a5 f8 f0 00 84 f8 a0 30 b5 f8 f0 30 
23 84 b5 f8 f2 30 63 84 02 23 84 f8 24 30 01 23 
84 f8 25 30 06 e0 20 46 18 f7 09 fc 01 46 20 46 
17 f7 22 fa 20 46 17 f7 0c fe 03 9a 3b 68 9a 42 
01 d0 a5 f6 da fa 05 b0 bd e8 f0 8f 00 bf 90 08 
20 00 50 30 20 00 78 6f 20 00 34 30 20 00 4a 30 
20 00 a1 91 20 00 28 30 20 00 64 30 20 00 49 30 
20 00 54 30 20 00 
received 7
04 0e 04 01 4c fc 00 
writing
01 4e fc 04 ff ff ff ff 
received 7
04 0e 04 01 4e fc 00 
writing
01 03 0c 00 
writing
01 03 0c 00 
received 7
04 0e 04 01 03 0c 00 
writing
01 18 fc 06 00 00 60 e3 16 00 
received 7
04 0e 04 01 18 fc 00 
Done setting baudrate
Done setting line discpline

3、如果上述命令都执行成功的话,那么使用hciconfig命令是可以查看到蓝牙节点信息的,而且用其它的蓝牙设备也是能够搜索到的

[root@eufy /oem]$ hciconfig -a
hci0:	Type: Primary  Bus: UART
	BD Address: 10:2C:6B:80:2D:17  ACL MTU: 1021:8  SCO MTU: 64:1
	UP RUNNING PSCAN ISCAN 
	RX bytes:1486 acl:0 sco:0 events:86 errors:0
	TX bytes:1529 acl:0 sco:0 commands:86 errors:0
	Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH SNIFF 
	Link mode: SLAVE ACCEPT 
	Name: 'BlueZ 5.50'
	Class: 0x000000
	Service Classes: Unspecified
	Device Class: Miscellaneous, 
	HCI Version:  (0xa)  Revision: 0x17
	LMP Version:  (0xa)  Subversion: 0x1111
	Manufacturer: Broadcom Corporation (15)

开启ble服务

执行如下命令开启ble服务

my_ble &			  #基于bluez5的/tool/gatt-service.c编译的应用
hciconfig hci0 leadv   #开启ble广播

创建了服务,可以使用ble蓝牙调试工具去扫描服务和进行简单的通讯检验,我使用的是IOS的nRF Connect工具

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AP6275S移植总结 的相关文章

  • 华为2288v5服务器安装Centos7系统

    1 安装准备 1 1 硬件 以虚拟光驱 虚拟软驱为例介绍操作系统的安装过程 xff0c 如果使用物理光驱 物理软驱则以实际的光盘 软盘代替 1 2 软件 xff08 1 xff09 准备好操作系统的 ISO 镜像包 xff08 2 xff0
  • 设置docker自启动

    1 设置docker自启动 sudo systemctl enable docker 2 查看docker中的镜像 sudo docker images 3 配置默认的镜像加速 sudo mkdir p etc docker sudo te
  • ESLint 报错:error Unreachable code no-unreachable

    大多出错的原因都与 return 有关 xff0c 可能是带有返回值的方法之中调用另一个方法的时候 把方法写在了 return 后面 代码的意思就是没有执行到这个方法 xff1b 还有可能就是在遍历判断中使用了 return xff0c 符
  • 程序员:每一份不忘初心的情怀, 都是对技术的追求

    1 真正的情怀 xff0c 是从不矫情 这几年 情怀 大约快成了贬义 创业讲情怀 xff0c 产品讲情怀 xff0c 好像没点情怀都不好意思出门见人 我们曾经充满热情 xff0c 是一位开源软件倡导者 xff0c 我们崇尚全栈工程师才有未来
  • ubuntu 如何用root身份进行登录

    公司有个小项目 需要用python调用 sh脚本来执行一些东西 执行脚本的时候需要输入密码 类似 sudo S paaswd 43 脚本 但是给客户部署的话 再让客户客户 保存密码到配置文件 就显得麻烦 就想到用root方式去登陆系统 结果
  • 创建Maven项目时候弹出setup maven plugin connection解决方案

    今天创建一个maven项目的时候弹出了setup maven plugin connection xff0c 然后有两个选择 xff0c 我们直接选择auto select继续下一步 xff0c 然后等待一下 xff0c 把此页面关掉 然后
  • 基于BERT的知识库问答系统(KBQA)

    基于BERT的知识库问答系统 xff08 KBQA xff09 简介 知识库问答系统主要要做的两点分别是识别问题中的实体和提取问题中我们需要从知识库中查找的属性 xff0c 针对这两个方面我采用了NLP预训练模型BERT分别训练了基于BER
  • libc6-dev : 依赖: libc6 (= 2.23-0ubuntu3) 但是 2.23-0ubuntu10 正要被安装

    无法安装libc6 dev 如果出现下面错误 xff1a 在装libc6 dev时下列的软件包有不能满足的依赖关系 xff1a libc6 dev 依赖 libc6 61 2 23 0ubuntu3 但是 2 23 0ubuntu10 正要
  • VScode使用sftp远程修改文件

    一 下载插件 二 创建任意一个文件夹 sftp插件是在文件夹下生效的 因为你要在文件夹下进行sftp的配置 以及打开远程文件 三 配置远程连接配置 快捷键 Ctrl 43 Shift 43 P 打开config span class tok
  • iOS 上接入Lottie动画 接入Json动画

    iOS设备上的动画借助官方SDK xff1a CoreAnimation那一套已经比较强大了 xff0c 基本上的动效都能实现 xff0c 就是1 开发这边比较累 xff1b 2 安卓那边也比较累况且 俩平台最后展示的可能有些细节还不一样
  • 安装pysyft联邦框架和pysyft代码案例

    pysyft联邦框架 1 新建虚拟环境2 安装pysyft3 安装jaxlib4 安装完成5 安装结果测试6 注意事项7 pysyft框架联邦案例8 一些优秀教程9 报错解决办法 1 新建虚拟环境 由于pysyft和pytorch之间有版本
  • Ps1终端提示符的参数设置

    1 了解PS1 PS1 61 u 64 h W PS1的常用参数以及含义 d xff1a 代表日期 xff0c 格式为weekday month date xff0c 例如 xff1a Mon Aug 1 H xff1a 完整的主机名称 h
  • Python3 实现简单的生命游戏

    Python3 实现简单的生命游戏 生命游戏是英国数学家约翰 何顿 康威在1970年发明的细胞自动机 生命游戏原理 细胞自动机 xff08 又称元胞自动机 xff09 xff0c 名字虽然很深奥 xff0c 但是它的行为却是非常美妙的 所有
  • 图论

    图是数据结构和算法学中最强大的框架之一 xff08 或许没有之一 xff09 图 xff08 graph xff09 并不是指图形图像 xff08 image xff09 或地图 xff08 map xff09 通常来说 xff0c 我们会
  • 【Python】【Pygame】游戏:抓球

    来源 xff1a Python编程 从入门到实践 13 5 14 1 14 2 我感觉这个题目继续学习还可以优化 xff0c 是一个不错的小游戏 等我学了记分再来继续改进 抓球 xff08 13 5 xff09 碗在底部左右移动 xff0c
  • Linux MariaDB 主从复制

    安装MariaDB 安装MariaDB教程 主从复制 搭建主从复制数据库不能先建数据库 xff0c 有数据库 xff0c 需要先删除 xff01 xff01 xff01 Master主数据库 主从复制详细参数列表 主服务器MariaDB的
  • Linux MariaDB使用OpenSSL安装SSL证书

    进入到证书存放目录 xff0c 批量删除 pem证书 警告 xff1a 确保已经进入到证书存放目录 find span class token punctuation span span class token operator span
  • Windows Server 2016创建用户、授权、其他用户远程登录、禁止/恢复administrator远程登录

    创建用户和授权管理员 win 43 s搜索控制面板 用户账户 更改账户类型 添加用户账户 完成 更改账户类型 管理员 更改账户类型 允许其他用户远程登录 win 43 s搜索高级系统设置 远程 远程桌面 允许远程连接到此计算机和勾选仅允许运
  • 使用kotlin扩展插件/依赖项简化代码(在最新版本4.0以后,此插件已被弃用,故请选择性学习,以了解为主。)

    1 添加取代findViewById XXX 的插件 xff1b id 39 kotlin android extensions 39 取代findViewById XXX 可以在kotlin代码中直接使用View上的控件id 2 扩展插件
  • 华为Fusion Compute通过存储LUN快照恢复数据

    上一篇博客里边写到了VMware虚拟化通过存储LUN快照恢复数据 xff0c 在里边提到华为虚拟化和其他KVM有区别 xff0c 这是真的血泪史呀 事情是这样的 xff0c 一个客户用的华为云桌面 xff0c 就是普通架构 xff0c 传统

随机推荐

  • 【转】ubuntu linux取消软件密码环和取消输入开机密码

    所用版本 xff1a ubuntu18 xff08 亲测16也成功了 xff09 取消软件密码环 win键打开菜单 gt 搜索pass word gt login选项 gt 右键删除某个密码环 转自 https www cnblogs co
  • 2_3-numpy-cnn-mnist手写数字识别

    numpy实现神经网络系列 工程地址 xff1a https github com yizt numpy neuron network 基础知识 0 1 全连接层 损失函数的反向传播 0 2 1 卷积层的反向传播 单通道 无padding
  • python获取threading线程返回结果

    python获取threading线程返回结果 span class token keyword class span span class token class name MyThread span span class token p
  • ADX的计算方式

    平均趋向指数是衡量趋势的技术工具 xff0c 简称ADX average directional indicator xff0c 它是由韦尔斯 怀尔德在1978年提出 xff0c 与其他技术分析工具不同的是 xff0c ADX并不能判断多空
  • uni app项目中实现vue和html通信

    vue实现 web view 是一个 web 浏览器组件 xff0c 可以用来承载网页的容器 xff0c 会自动铺满整个页面 个人业务 xff08 需要实现一个本地的html文件的内嵌 xff09 xff0c 由于web view是自动铺满
  • uni app实现中英文语言切换

    因为业务需求很多app都是可以多种语言进行切换的 xff0c 以此来方便用户的使用 做语言的切换一定要开发开始的时候就规划好 xff0c 不然确实太麻烦了 xff0c 我是后期开发的语言切换 xff0c 好多个页面都需要进行修改 main
  • uniapp一套代码开发app和微信小程序

    为什么选择uniapp开发 xff1f 为什么选择uniapp进行开发 xff1f 1 uniapp对于独自开发是相当友好的 xff0c 一套代码可以兼容app xff08 安卓 xff0c ios xff09 小程序 xff0c h5等
  • python + selenium的使用 - mac可能出现的问题

    注意服务器部署selenium时 xff0c 代码中一定要添加关闭浏览器驱动的语句 xff08 代码执行结束后不会自动关闭浏览器驱动 xff09 xff0c 否则会导致服务器磁盘被占满 1 安装selenium pip span class
  • 使用Truffle 和 Ganache编译、发布智能合约

    文章目录 Truffle开发框架步骤1 安装Truffle2 查看安装是否成功3 创建没有合约的空工程 xff0c 可以使用 truffle init4 编译Truffle项目的合约truffle compile编译问题 5 构建文件Art
  • 基于Ganache和MetaMask搭建以太坊私有网络

    使用Truffle 和 Ganache 编译 发布智能合约 请参考作者博客https blog csdn net weixin 43958804 article details 109576016 操作步骤 下载ganache https
  • python面试题--统计文件中字母出现的次数

    统计字母出现的次数 fp span class token operator 61 span span class token builtin open span span class token punctuation span span
  • 迁移EFI分区至固态硬盘

    接上回 加装SSD后的第二天 xff0c 我发现原来20s开机的电脑居然变成了30s开机 于是我就开始思考什么问题导致了这个情况 xff0c 根据启动顺序问题 xff0c 我发现可能是安装系统时 xff0c 我没拔下HDD的SATA0接口的
  • go defer,panic,recover详解 go 的异常处理

    转载 https www jianshu com p 63e3d57f285f golang中defer panic recover是很常用的三个特性 xff0c 三者一起使用可以充当其他语言中try catch 的角色 xff0c 而de
  • 重新在虚拟机上安装了centOS7系统

    参考教程 xff1a VMware 安装 Centos7 超详细过程 菜鸟教程
  • centOS安装

    1 安装ImageMagick yum install y ImageMagick 2 安装GhostScript yum install y ghostscript 验证是否安装成功 gs version 3 安装libreoffice
  • 10问10答:你真的了解线程池吗?

    Java开发手册 中强调 xff0c 线程资源必须通过线程池提供 xff0c 而创建线程池必须使用ThreadPoolExecutor 手册主要强调利用线程池避免两个问题 xff0c 一是线程过渡切换 xff0c 二是避免请求过多时造成OO
  • TensorRT 加载模型onnx报错: Error Code 10: Internal Error (Could not find any implementation for node

    1 背景 在TensorRT加载ONNX文件 bert模型 xff09 过程出现如标题所示的错误信息 在相同的代码 xff0c 相同的TensorRT版本 xff0c 在3090 xff08 43 win10 xff09 可以进行正常加载和
  • 【Git】在IDEA拉取master分支到你的开发分支上

    git checkout到master2 git pull xff0c 拉去master最新代码 3 git checkout到你的开发分支 右键项目 选择远程master 确定后如果有冲突 xff0c 则解决冲突即可 弄完最后git pu
  • UNIX环境高级编程-第一章

    1 UNIX体系结构 xff1a 严格意义上说 xff0c 可将操作系统定义为一种软件 xff0c 它控制计算机硬件资源 xff0c 提供程序运行环境 我们通常将这种软件称为内核 xff0c 因为它相对较小 xff0c 而且位于环境的核心
  • AP6275S移植总结

    RK3308B 43 AP6275S移植 在rk3308b平台移植rtl8821cs rlt8821cs是wifi 43 bt一体的模组 xff0c 主要记录下移植过程中需要注意的地方 移植驱动 将rtl8821cs的驱动包复制到rk的SD