RK3568移植移远的wifi驱动

第一步 找驱动厂家要到源码。

第二步 设置交叉编译环境。

第三步 解决编译过程中源码的报错。

第一步 略过。

第二步 设置编译环境,在sdk中,我们一般使用 build.sh kernel来编译内核。build.sh这个脚本会一键配置编译环境。现在要单独编译驱动,就得从这个脚本中抽取编译环境的脚本。简单的说就是找souce的部分代码。

经过研究发现,脚本主要集中在 ~/Linux/rk3568_linux_5.10/device/rockchip/common/scripts这个目录下。

设置环境变量的脚本主要是 general.sh,打开这个脚本看到。

export LC_ALL=C # 设置本地化环境为C

export SCRIPTS_DIR="$(dirname "$(realpath "$BASH_SOURCE")")" # build.sh脚本路径
export COMMON_DIR="$(realpath "$SCRIPTS_DIR/..")" # common目录路径
export SDK_DIR="$(realpath "$COMMON_DIR/../../..")" # SDK源码根目录路径
export DEVICE_DIR="$SDK_DIR/device/rockchip" # 脚本和板级别配置文件路径
export CHIPS_DIR="$DEVICE_DIR/.chips"  # .chips路径,里面其实也只有一个rk3566_rk3568
export CHIP_DIR="$DEVICE_DIR/.chip" # .chip路径也就是rk3566_rk3568

export RK_DATA_DIR="$COMMON_DIR/data" # 存放了一些调试工具和开发板可执行脚本
export RK_IMAGE_DIR="$COMMON_DIR/images" # 存放了ome userdata PCBA等镜像或者分区文件
export RK_CONFIG_IN="$COMMON_DIR/configs/Config.in" # 存放了一些配置文件,推测根目录的menuconfig就是来自这里

export RK_BUILD_HOOK_DIR="$COMMON_DIR/build-hooks" # 存放编译钩子脚本的目录
export BUILD_HELPER="$RK_BUILD_HOOK_DIR/build-helper" # 编译时钩子的帮助函数
export RK_POST_HOOK_DIR="$COMMON_DIR/post-hooks" # 存放编译完成后的钩子脚本目录
export POST_HELPER="$RK_POST_HOOK_DIR/post-helper" # 编译完成后的钩子帮助函数

export PARTITION_HELPER="$SCRIPTS_DIR/partition-helper" # 文件分区函数

export RK_OUTDIR="$SDK_DIR/output" # 文件输出保存目录
export RK_LOG_BASE_DIR="$RK_OUTDIR/log" #log日志保存总目录
export RK_SESSION="${RK_SESSION:-$(date +%F_%H-%M-%S)}" #日志时间定义
export RK_LOG_DIR="$RK_LOG_BASE_DIR/$RK_SESSION" # 根据时间保存的日志目录
export RK_FIRMWARE_DIR="$RK_OUTDIR/firmware" # 固件存放目录
export RK_INITIAL_ENV="$RK_OUTDIR/initial.env" # 保存的最初环境
export RK_CUSTOM_ENV="$RK_OUTDIR/custom.env"
export RK_FINAL_ENV="$RK_OUTDIR/final.env"      #最终的环境变量
export RK_CONFIG="$RK_OUTDIR/.config" # 保存的Menuconfig配置
export RK_DEFCONFIG_LINK="$RK_OUTDIR/defconfig"  # 默认配置

export PYTHON3=/usr/bin/python3 # 导出环境变量 PYTHON3,指定为 /usr/bin/python3
export CPUS=$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1) # 获取最大CPU核心数

需要推导出这一系列的变量,而第一个变量是build.sh脚本的路径。

build.sh 的路径为 /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/scripts/build.sh

推导环境变量的绝对路径如下:

SCRIPTS_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/scripts
(build.sh 所在目录)

COMMON_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common
(SCRIPTS_DIR 的上一级目录)

SDK_DIR: /home/topeet/Linux/rk3568_linux_5.10
(COMMON_DIR 的上三级目录)

DEVICE_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip
(板级配置文件路径)

CHIPS_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/.chips

CHIP_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/.chip

RK_DATA_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/data

RK_IMAGE_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/images

RK_CONFIG_IN: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/configs/Config.in

RK_BUILD_HOOK_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/build-hooks

BUILD_HELPER: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/build-hooks/build-helper

RK_POST_HOOK_DIR: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/post-hooks

POST_HELPER: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/post-hooks/post-helper

PARTITION_HELPER: /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/scripts/partition-helper

RK_OUTDIR: /home/topeet/Linux/rk3568_linux_5.10/output

RK_LOG_BASE_DIR: /home/topeet/Linux/rk3568_linux_5.10/output/log

RK_SESSION: 动态生成的时间戳,例如 2024-12-22_14-30-45

RK_LOG_DIR: /home/topeet/Linux/rk3568_linux_5.10/output/log/<RK_SESSION>
(其中 <RK_SESSION> 是上面的动态时间戳)

RK_FIRMWARE_DIR: /home/topeet/Linux/rk3568_linux_5.10/output/firmware

RK_INITIAL_ENV: /home/topeet/Linux/rk3568_linux_5.10/output/initial.env

RK_CUSTOM_ENV: /home/topeet/Linux/rk3568_linux_5.10/output/custom.env

RK_FINAL_ENV: /home/topeet/Linux/rk3568_linux_5.10/output/final.env

RK_CONFIG: /home/topeet/Linux/rk3568_linux_5.10/output/.config

RK_DEFCONFIG_LINK: /home/topeet/Linux/rk3568_linux_5.10/output/defconfig

PYTHON3: /usr/bin/python3

CPUS: 动态计算的 CPU 核心数,执行时根据系统配置确定

结合脚本分析,解决第二步编译环境问题:

source /home/topeet/Linux/rk3568_linux_5.10/device/rockchip/common/scripts/general.sh
source  /home/topeet/Linux/rk3568_linux_5.10/output/.config

以及

export CROSS_COMPILE=/home/topeet/Linux/rk3568_linux_5.10/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-

然后make,顺利进行编译。

编译过程中报错。

这个问题主要是头文件包含问题。

修改 8189cd_security.c,在开头加上

#include <linux/sched.h>
#include <linux/pgtable.h>

再次编译顺利生成内核模块

### RK3568 平台 QMI 驱动适配方法 为了实现 RK3568 平台对 EC20 模块的 QMI 驱动适配,可以按照以下方式操作: #### 1. 替换原始驱动文件 需用最新版本的 `qmi_wwan_q.c` 文件替换原有的 `qmi_wwan.c` 文件。具体路径位于 `/kernel/drivers/net/usb/qmi_wwan.c`[^1]。此步骤确保了新功能的支持以及兼容性的提升。 #### 2. 上电时序控制 在硬件初始化阶段,增加上电时序控制逻辑以满足模块启动需求。这一步骤通常涉及修改设备树(Device Tree)中的电源管理部分,并调整 GPIO 设置来匹配实际硬件连接情况。 #### 3. ECM 驱动绑定与测试 完成上述更改之后,在尝试网络通信之前需要执行网卡绑定过程。通过串口工具向目标端发送特定指令完成初步设置。例如,在终端运行以下命令可建立与模组之间的基本通讯链路: ```bash busybox microcom /dev/ttyUSB1 -s 115200 ``` 这条语句的作用是打开指定波特率下的虚拟串行接口用于后续交互操作[^3]。 #### 4. 利用 AT 命令验证连通性并捕获日志信息 对于 Android 系统而言,除了常规手段外还可以借助 ADB 工具读取无线电层的日志数据以便于诊断可能出现的问题。常用的方法包括但不限于利用 `logcat -b radio` 查看实时消息流;另外如果采用的是基于高通芯片解决方案,则可能还需要编写额外脚本来解析来自 RIL 层面反馈出来的事件记录[^4]。 综上所述,整个流程涵盖了从底层固件更新到高层应用层面监控等多个方面的工作内容。值得注意的是不同厂商可能会提供定制化程度较高的文档资料作为指导手册供开发者参考学习之用。 ```python # 示例 Python 脚本:模拟简单日志分析程序 import re def parse_log(log_content): pattern = r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (.*)' matches = re.findall(pattern, log_content) parsed_logs = [] for match in matches: timestamp, message = match parsed_logs.append({'timestamp': timestamp, 'message': message}) return parsed_logs example_log = """ 2023-09-01 12:00:00 Initializing module... 2023-09-01 12:00:01 Successfully initialized. """ print(parse_log(example_log)) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值