瑞芯微Android WiFi驱动编译避坑:内核驱动与外部预编译驱动彻底解析

电子说

1.4w人已加入

描述

做瑞芯微(Rockchip)Android设备固件开发、系统适配的小伙伴,大概率都遇到过这类问题:

 内核明明编译成功了WiFi驱动.ko文件,刷机后系统却不加载;

 替换了外部WiFi驱动,固件却始终不生效;

 编译时偶尔出现WiFi驱动冲突、重复打包、编译报错。

其实所有问题的根源,都来自RK平台默认的WiFi驱动二选一互斥机制

今天我们就通过wifi.mk核心配置修改,彻底讲透瑞芯微Android WiFi驱动编译逻辑,帮大家彻底避开驱动适配坑点。

Android

一、核心文件介绍

本次解析的核心配置文件:

vendor/rockchip/common/wifi/wifi.mk

这是瑞芯微平台专属的编译配置文件,全权控制系统WiFi内核驱动(.ko)的打包、加载、冲突清理规则,直接决定最终固件使用哪一套WiFi驱动。

简单来说:最终设备跑的WiFi驱动,完全由这个文件的逻辑决定

二、底层核心机制:严格二选一,无法共存

这是整个配置最关键、也是最多开发者忽略的核心规则:

外部预编译WiFi驱动 和 内核原生WiFi驱动 是完全互斥关系,二者只能选其一,无法同时生效!

很多适配问题,都是因为误以为“两套驱动可以共存”,实际编译逻辑中,系统会强制择优、清理另一套驱动,从根源杜绝冲突。

接下来我们结合源码逻辑,拆解两种工作模式。

三、模式一:默认逻辑——优先使用外部预编译驱动

不修改、不注释原生代码时,系统默认走外部驱动优先逻辑,完整执行流程如下:

1. 检测外部驱动目录

编译脚本首先检测工程下是否存在external/wifi_driver/外部WiFi驱动目录。

2. 加载所有外部驱动文件

如果目录存在,脚本会自动搜集目录下所有.ko驱动文件,并将其加入系统内核模块打包列表。

3. 强制清理内核原生驱动(关键步骤)

为了避免驱动冲突、版本覆盖、加载异常,脚本会主动执行删除命令:

扫描内核源码中rockchip_wlan、rkwifi目录下与外部驱动同名的内核原生.ko文件,直接静默删除。

4. 最终编译结果

 生效:外部预编译WiFi驱动

 失效:内核编译出来的原生WiFi驱动(不会打包进系统、不会被加载)

小结:开启默认逻辑时,哪怕内核成功编译出WiFi驱动,也会被强制清理,最终系统只会使用外部定制驱动。

四、模式二:本次修改——禁用外部驱动,使用内核原生驱动

本次修改的核心操作非常简单:将所有外部驱动相关的整套逻辑全部注释失效

具体禁用的逻辑包含:

•外部驱动目录检测逻辑

•外部.ko驱动搜集、打包逻辑

•清理内核原生驱动的删除脚本

修改后,整套编译逻辑彻底切换:

系统不再识别、加载任何外部external/wifi_driver驱动,同时保留内核完整的WiFi驱动文件,最终只搜集、打包内核原生编译的WiFi驱动

最终效果

 生效:内核原生WiFi驱动

 失效:所有外部预编译WiFi驱动

五、两种方案适用场景,按需选择不踩坑

没有绝对最优的方案,只有适配项目需求的选择,大家可根据自己的开发场景灵活切换:

1. 选择【外部预编译驱动】(默认开启)

适用场景

•原厂提供专用定制WiFi驱动、新版适配驱动;

•内核原生驱动存在BUG(断流、闪退、兼容性差、不支持特定WiFi模组);

•项目需要固定驱动版本,不跟随内核源码迭代更新。

2. 选择【内核原生驱动】(本次修改方案)

适用场景

•追求系统稳定性,使用内核原生适配驱动;

•工程无外部定制WiFi驱动,external/wifi_driver目录为空或缺失;

•编译报驱动冲突、重复定义、文件找不到等报错;

•需要跟随内核源码调试、迭代WiFi驱动功能。

六、常见问题答疑

Q1:为什么内核编译成功ko,刷机后WiFi不生效?

大概率是默认开启了外部驱动逻辑,内核驱动被脚本自动删除、屏蔽,系统加载的是外部驱动,若外部驱动不匹配硬件,就会出现WiFi失效。

Q2:可以同时保留两套驱动吗?

不可以。RK平台该编译机制强制互斥,为了彻底避免驱动抢占、内核崩溃、开机WiFi初始化失败等问题,官方设计为二选一模式。

Q3:修改mk文件后需要全编吗?

建议执行全量编译,避免缓存的驱动文件残留导致修改不生效。

七、最终总结

1. 核心逻辑:瑞芯微Android WiFi驱动分为「外部预编译驱动」和「内核原生驱动」,二者严格互斥、只能二选一;

2. 默认机制:优先使用外部驱动,并自动清理内核原生驱动,保证版本唯一;

3. 本次修改价值:关闭外部驱动优先级,回归内核原生驱动,解决编译冲突、驱动不生效、适配异常等问题;

4. 开发原则:定制驱动用外部逻辑,稳定调试用内核逻辑,按需切换即可。

吃透这一个mk配置,就能解决90%的瑞芯微平台WiFi驱动编译、适配疑难问题!

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分