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)

相关推荐
三言老师7 小时前
秘诀-如何远程SSN访问家里的八台电脑(frp 实操方案)
linux·运维·ssh
举手8 小时前
Dispatcher模块剖析
linux·c++
allforgood10 小时前
运行容器
linux
Light_It11 小时前
Linux 内核参数 pci-stub.ids=
linux·kernel
RisunJan11 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
spencer_tseng11 小时前
[kylin & linux] install docker
linux·docker·kylin
x²+(y-√³x²)²=112 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
柒号华仔13 小时前
「速通Shell」聚砖成墙,Shell函数封装之道
linux·ssh·bash
程序员与背包客_CoderZ13 小时前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
Android系统攻城狮13 小时前
Linux PipeWire深度解析之pw_properties_iterate调用流程与实战(六十五)
linux·运维·服务器·音频进阶·pipewire音频进阶