"); //-->
1 WiFi 基础知识
WiFi 是当今使用最广泛的一种无线网络技术之一,广泛应用与广告机,投影仪,智能家居,智能门禁,智能音箱,智能手机等智能联网设备之中,为了加速产品设计,大部分都是以 wifi 模块来应用的。市场上WiFi 模块的型号很多,不同的应用场景对 wifi 模块的功能要求不同,有的只需要点对点数据传输,有的需要在线播放视频,音乐,在线互动,所以通常会从功能上将 wifi 模块分为俩大类:通用型 WIFI 模块,透传型 WIFI 模块。如下图所示:
通用型 wifi 模块:比如手机,笔记本上的 USB 或者 SDIO 接口模块,WiFi 协议栈和驱动是在Android,windows 等系统里面跑的,是需要 CPU 来配合完成应用。
透传型 WiFi 模块通常应用与点对点数据传输场景,模块中内置 wifi 驱动和协议,用户不需要关心 WiFi协议是如何实现的,只需要做的是 A 通过串口发数据,B 通过串口接收数据,WiFi 模块对于开发者来说变成了透明的,这种类型的模块接口一般是 MCU 接口的,如 UART 等。像乐鑫,安信可的 WiFi 模块都是透传型 WiFi 模块。
本文档移植的 wifi 模块是 RTL8822cs 模块,是 SDIO 接口的模块。本次 wifi 移植是在光盘资料【20210702】日期的 Linux 源码的基础上进行移植的。
移植的环境:
1.iTOP-3399 开发板+ RTL8822CS 模块
2.Android 8.1
3.搭建好编译环境的 ubuntu16.04 64Bit 开发环境
本文档配套资料在网盘资料“iTOP-3399 开发板\02_iTOP-3399 开发资料汇总(不含光盘内容)\13_嵌入式 Linux 开发指南(RK3399)手册配套资料\6.Android 底层驱动\Android8wifi 移植\”目录下。如果您移植出现问题,可以对比下修改好的文件。光盘资料【20210927】日期的 Android8 源码是支持 rtl8822cs 模块 wifi 功能的。
2 移植步骤
2.1 设备树配置
输入以下命令修改 Android8 的设备树文件。
vim kernel/arch/arm64/boot/dts/rockchip/itop-3399.dtsi
将下面的 wifi_chip_type 后面的内容修改为 rtl8822cs
查找 sdio,注释掉下面的语句,注释掉这句是因为注册 sdio 设备时,会注册不上。
2.2 修改内核驱动
将厂商提供的源码文件夹放入内核目录 drivers/net/wireless/rockchip_wlan/下,厂商提供的源码文件夹在网盘资料“iTOP-3399 开发板\02_iTOP-3399 开发资料汇总(不含光盘内容)\13_嵌入式 Linux 开发指南(RK3399) 手 册 配 套 资 料 \6.Android 底 层 驱 动 \Android8wifi 移 植 \ 厂 商 提 供 的 驱 动 文 件 ” 路 径 下 的rtl88x2CS_WiFi_linux_v5.12.1.1-0-gf673ce3.20210125_COEX20200922-1e1e.tar.gz。解压并修改文件夹名称为rtl8822cs。
接着修改以下文件:
(6)rtl8822cs 文件夹下的 Makefile,添加以下代码,如下图所示:
obj-$(CONFIG_RTL8822CS) += rtl8822cs/
(7)rtl8822cs 文件夹下的 Kconfig,添加以下代码,如下图所示:
source "drivers/net/wireless/rockchip_wlan/rtl8822cs/Kconfig"
(8)rtl8822cs 下的 Makefile
将文件中的 CONFIG_PLATFORM_I386_PC 的值修改为 n
将文件中的 CONFIG_PLATFORM_ARM_RK3188 的值修改为 y
如下图所示:
然后将以下图一的“wlan”改为“8822cs”,如下图所示:

(4)rtl8822cs 下的 Kconfig
将第一行的 RTL8822BS 修改为 RTL8822CS,这里是厂家的源码写错了,不改正的话不会编译到这个源码目录。
(5)然后在 Android8 内核目录(itop-3399_8.1/kernel)下输入以下命令配置加载驱动。
make ARCH=arm64 menuconfig
Device Drivers --->
Network device support --->
Wireless LAN --->
Rockchip Wireless LAN support --->
Realtek 8822C SDIO WiFi
修改后保存到.config 文件
(6)输入以下命令,将保存好的.config 文件复制替换 defconfig 文件
cp .config arch/arm64/configs/rockchip_defconfig
(7)然后修改 itop-3399_8.1/kernel/net/rfkill/rfkill-wlan.c 文件,添加如下所示内容。
} else if (strcmp(wifi_chip_type_string, "rtl8822cs") == 0) {
type = WIFI_RTL8822CS;
(8)然后修改 include/linux/rfkill-wlan.h 文件,添加如下内容,如下图所示:
WIFI_RTL_8822CS,
3 修改 HAL 层
(1)我们修改 frameworks/opt/net/wifi/libwifi_hal/rk_wifi_ctrl.cpp 文件,添加如下所示代码,如下图所示:
{"RTL8822CS", "024c:c822"},
(2)将 strcpy(recoginze_wifi_chip, "APXXX");注释掉,修改为 strcpy(recoginze_wifi_chip, "RTL8822CS");
strcpy(recoginze_wifi_chip, "RTL8822CS");
(3)修改 frameworks/opt/net/wifi/libwifi_hal/wifi_hal_common.cpp 文件,添加代码
#define RTL8822CS_DRIVER_MODULE_PATH "/vendor/lib/modules/wifi/8822cs.ko"
(4)添加代码,如下图所示。
#define RTL8822CS_DRIVER_MODULE_NAME "8822cs"
添加代码,如下图所示:
{"RTL8822CS", RTL8822CS_DRIVER_MODULE_NAME, RTL8822CS_DRIVER_MODULE_PATH, UNKKOWN_DRIVER_MODUL
更多内容请关注迅为电子
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
51单片机开发板
AN2131开发板原理图.rar
Microchip PIC24FJ256DA210开发板在图形显示上的应用
单片机开发板
建议王总组织个开发板的捐赠活动
在米尔FPGA上实现Tiny YOLO V4,助力AIoT应用
CFUMEVK-KIT开发板设计方案
3G高分辨率平板开发板设计方案
米尔出席openEuler Summit 2024,携全志T536和RK3562核心模组亮相
Jobs芯科EFR32xG24 Dev Kit开发板开箱视频
米尔-瑞萨RZ/G2L核心板开发板的系统启动时间优化应用笔记
12路1080P高清视频流,米尔RK3576开发板重塑视频处理极限
6TOPS算力驱动30亿参数LLM,米尔RK3576部署端侧多模态多轮对话
利用PIC24F Curiosity开发板简化设计
Badge USB OCD 与 78F0513D 使用演示视频
当6 TOPS不再是极限:米尔RK3576 + Hailo-8,让高帧率摄像头真正“实时”
SL811HS开发板原理图.rar
出一个全新正点原子STM32战舰开发板,全新板二手价
NEC MCU 78F0513D开发板使用教程
ARM嵌入式系统开发板三星S3C44B0X的完整Protel电路图.rar
CY7C68013开发板原理图.rar
(已送出,结贴)送一块51开发板,你出邮费
莱迪思联手英伟达推出 Sensor Bridge 方案 加速边缘 AI 产品落地
米尔出席2025安路科技FPGA技术沙龙
AM3359支持WINCE7.0
国产FPGA SoC芯选择,米尔安路飞龙核心板重磅发布
GWEVB_XC蓝牙设备开发板
拆解:树莓派5 8 GB AI 套件
Kinetis K60系列MCU开发板CFUMEVK-KIT
慕尼黑电子展上展出的开发板(还有3D 打印机等~)