RK3566 泰山派 IMX415驱动移植+设备树修改+iq文件复制

本文章与以下文件强相关(建议优先阅读)

由于 rk3566 与 rk3568 属于同一系列,大量内容是通用的,因此如果你有 4K 画面的需求,那么这篇文章应该对你有帮助。


本文涉及到的部分代码、IQ 文件源自 正点原子 rk3568 开发板。
为避免资源因平台变化而丢失,我已将驱动文件、设备树文件、IQ 文件全部上传到 GitHub,需要自取即可。

👉 https://github.com/SweerItTer/imx415_about/tree/main


第一部分:内核驱动移植

以下操作基于一个前提:你清楚 make menuconfig 修改的是哪类配置文件。
* 号标记为可选步骤,根据实际情况执行。
如果是首次打开 SDK,建议先运行 ./build.sh lunch 并选择一个默认配置。


Step 1:选择驱动

  1. cd 进入 内核目录

  2. 运行 make menuconfig

  3. / 进入搜索

  4. 输入 imx415

  5. 选择第一个完全匹配的选项

  6. 一路返回并保存配置(或直接在底部选择 save)


Step 2:检查配置

建议先执行:

bash 复制代码
make savedefconfig

然后打开 kernel/.config,搜索:

复制代码
CONFIG_VIDEO_IMX415=y

确认它已被正确启用。


Step 3:修改默认配置*

当你发现 menuconfig 修改无效(常见于某些 Rockchip SDK)时,可手动添加:

  1. 打开:

    ./kernel/arch/arm64/configs/rockchip_linux_defconfig

实际路径依你的 lunch 输出为准,如:
~/rk3566/device/rockchip/rk356x/BoardConfig-rk3566-tspi-v10.mk

  1. 找个合适的位置加入:

    CONFIG_VIDEO_IMX415=y

示例:


Step 4 重新编译 kernel

回到 SDK 根目录执行:

bash 复制代码
./build.sh kernel

Step 5:检查编译产物

bash 复制代码
ls ./kernel/drivers/media/i2c/ | grep imx415

期待输出类似:

复制代码
imx415.c
imx415.o

如果没有出现:

  • 检查 .config 是否变成了 is not set
    ➜ 说明 menuconfig 设置没有被写入
  • 或者在重新编译后配置又被覆盖
    ➜ 参考 Step 3 手动修改 defconfig

第二部分:设备树修改

直接前往仓库:

👉 https://github.com/SweerItTer/imx415_about

下载对应 DTS 文件并替换到:

复制代码
~/rk3566/kernel/arch/arm64/boot/dts/rockchip

建议先备份原始的 tspi-rk3566-csi-v10.dtsi,不然设备树不兼容会被坑得很惨。


设备树修改原理(重要)

从 diff 对比可以总结 IMX415 移植的核心逻辑如下:


① 启用 MIPI DPHY 端口

默认 dphy 是 disabled,为摄像头启用必须写:

dts 复制代码
status = "okay";

② 为两个摄像头建立独立端点(endpoint)

IMX415:4-lane(用于 4K)

OV5695:2-lane(1080P 足够)

示例:

dts 复制代码
dphy0_imx415_in: endpoint@1 {
    remote-endpoint = <&imx415_out>;
    data-lanes = <1 2 3 4>;  // IMX415 = 4 lanes
};

dphy0_ov5659_in: endpoint@2 {
    remote-endpoint = <&ov5695_out>;
    data-lanes = <1 2>;  // OV5695 = 2 lanes
};

重点:IMX415 是 4K 传感器,带宽高,必须占满 4 lane;
OV5695 是普通 1080P,2 lane 足够。


③ I2C 配置:两摄共用引脚但地址不同

两个 sensor 共用:

  • power-gpios
  • pwdn-gpios
  • reset-gpios

但地址不同:

  • IMX415 → 0x37
  • OV5695 → 0x36

这是常见的"共用供电和控制,但用地址区分"写法,硬件简单,驱动也能自动区分。


④ 重新绑定端点(双摄扩展基础)

原来单摄像头时:

dts 复制代码
remote-endpoint = <&ov5695_out>;

扩展为双摄后切换为:

dts 复制代码
remote-endpoint = <&imx415_out>;

或根据需求在 ISP 中动态选择。

这属于 Rockchip 常见的「单 CSI 支持双 Sensor」范式:

端点重映射 + 独立 lane + 分地址 I2C。


参考:
Winner1300 - 泰山派 OV5695 分析


第三部分:fs-overlay 添加 IQ 文件

详细步骤参考文首提到的:

👉 rootfs overlay 灵活自定义

这里给出主要目标:

① 下载 IQ 文件

从 GitHub 获取:

复制代码
imx415_CMK-OT2022-PX1_IR0147-50IRC-8M-F20.json

(根据 ISP 版本选择,文中为 ISP2.1 → json 格式,而非 xml)

② 放入 fs-overlay

示例:

复制代码
~/rk3566/buildroot/board/rockchip/rk356x/fs-overlay
└── etc
    └── iqfiles
        └── imx415_CMK-OT2022-PX1_IR0147-50IRC-8M-F20.json

③ 让系统加载 IQ 文件

你可以选择:

  • 重新编译 buildroot → 自动 overlay

  • 或者直接把文件手动推送到开发板:

    /etc/iqfiles

然后按一次开发板的 RESET(或断电重启)。


完成 🎉

以上步骤正确完成后,IMX415 基本即可在 rk3566 上跑起来。
文章为付费内容, 请点个star继续阅读(反正CSDN没有DN)

相关推荐
Bigan(安)1 小时前
【奶茶Beta专项】【LVGL9.4源码分析】03-显示框架-图层管理
linux·c语言·mcu·arm·unix
last demo1 小时前
LNMP部署实验
linux·运维·服务器
代码游侠1 小时前
数据结构——线性表
linux·c语言·数据结构·学习·算法
蒋士峰DBA修行之路1 小时前
红帽练习环境介绍
linux·开发语言·bash
。TAT。1 小时前
进程间通信-对匿名管道的学习
linux·学习
2301_807583231 小时前
Linux-虚拟化技术概述及KVM虚拟机环境部署
linux·运维·服务器
HalvmånEver1 小时前
Linux:命令行参数与环境变量(进程五)
linux·运维·服务器
python百炼成钢1 小时前
43.Linux LCD驱动
java·linux·运维·驱动开发
axihaihai1 小时前
maven的构建问题
java·linux·maven