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. 选择第一个完全匹配的选项
    ![[Pasted image 20251128202103.png]]

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


Step 2:检查配置

建议先执行:

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 根目录执行:

./build.sh kernel

Step 5:检查编译产物

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,为摄像头启用必须写:

status = "okay";

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

IMX415:4-lane(用于 4K)
OV5695:2-lane(1080P 足够)

示例:

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

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


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

原来单摄像头时:

remote-endpoint = <&ov5695_out>;

扩展为双摄后切换为:

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继续阅读(反正优快云没有DN)

<think>我们正在处理RK3588平台IMX415摄像头设备树配置的问题,目标是限制MIPICSI-2通道(lane)的数量为1或2。在MIPICSI-2接口中,lane的数量通常会影响传输带宽,从而影响支持的分辨率和帧率。减少lane数可以降低功耗或适应硬件限制,但可能会限制视频流的性能。设备树(Device Tree)是描述硬件配置的数据结构,我们需要修改IMX415摄像头相关的节点。步骤:1.找到摄像头传感器(IMX415)的设备树节点,通常位于`arch/arm64/boot/dts/rockchip/rk3588-*.dtsi`或板级dts文件中。2.在节点中,我们需要关注与MIPICSI-2相关的属性,特别是`data-lanes`属性,该属性用于指定使用的数据通道(lane)数量及其映射。注意:RK3588的MIPICSI控制器支持多路lane(通常为4路),但我们可以通过设置`sensor`节点的`data-lanes`属性来限制实际使用的lane数量。示例配置(4lane)可能如下:``` &i2c1 {status ="okay";imx415: imx415@1a {compatible= "sony,imx415";reg =<0x1a>;clocks= <&cruCLK_MIPI_CAMARAOUT_M1>;clock-names= "xvclk";reset-gpios =<&gpio1 RK_PC4 GPIO_ACTIVE_LOW>;pwdn-gpios= <&gpio1RK_PC5GPIO_ACTIVE_HIGH>;pinctrl-names ="default";pinctrl-0 =<&mipim0_camera1_clk>;avdd-supply =<&vcc_mipicsi0>;dvdd-supply =<&vcc_mipicsi0>;dovdd-supply =<&vcc_mipicsi0>;rotation=<90>;port {imx415_out:endpoint {remote-endpoint= <&mipi_in_ucam0>;data-lanes =<1234>;//这里指定了4条lane};};}; };```要修改为2lane,我们可以将`data-lanes`改为`<12>`;要修改为1lane,则改为`<1>`。但是,需要注意的是: -修改lane数量后,必须确保摄像头传感器支持该模式(IMX415支持1、2、4lane模式)。-同时,需要调整CSI控制器的配置(在RK3588中,CSI控制器通常由`csi2_dphy`等节点描述)以匹配相同的lane数。但通常,控制器会根据传感器的端点(endpoint)配置自动适应。另外,还需要注意时钟配置。在减少lane数后,可能需要降低像素时钟(每个lane的速率)以保持相同的传输带宽,或者接受较低的帧率或分辨率。因此,在修改`data-lanes`后,我们还需要检查并可能调整`link-frequencies`属性(如果存在)或时钟频率,以确保总带宽满足视频流的需求。例如,IMX415在4lane下可能使用较高的频率,而减少到2lane或1lane时,可能需要降低频率(否则可能无法传输相同分辨率帧率的数据),或者我们可以通过降低分辨率或帧率来适应。但是,设备树中通常不会直接设置频率值,而是通过选择预设的链路频率(在`link-frequencies`中列出,并在`link-freqs`属性中指定当前使用的频率索引)来实现。如果设备树中已经配置了`link-frequencies`,那么我们需要根据lane数调整所选的链路频率,以确保总带宽足够。例如,如果原来4lane下使用1200MHz/lane,总带宽为4800Mbps;那么改为2lane时,如果仍需要相同的总带宽,则需要使用2400MHz/lane(但需要摄像头和接收端支持)。但通常,减少lane数会同时降低带宽。因此,在修改lane数的同时,我们可能需要调整视频格式(如分辨率、帧率)或降低链路频率(如果摄像头支持多种频率)。然而,在设备树中,我们通常只配置`data-lanes`和`link-freqs`(如果有的话)。具体的分辨率、帧率等通常在用户空间的v4l2配置中设置。总结修改步骤:1.修改`data-lanes`属性为所需的数量(如1或2)。2.检查是否有`link-freqs`属性,如果有,可能需要调整选中的频率索引(因为不同的lane数可能需要不同的频率设置)。但注意,`link-frequencies`列表通常由驱动定义,我们只能选择列表中支持的频率。因此,我们需要查阅IMX415的数据手册,确定在1lane或2lane模式下支持哪些频率。3.调整后,重新编译设备树并更新到设备。注意:修改设备树后,摄像头驱动需要支持这种配置。如果驱动没有适配减少的lane数,可能会导致初始化失败。由于具体设备树节点名称和位置可能因板而异,请根据实际硬件和内核源码中的设备树文件进行修改。相关问题:1.如何验证修改后的lane数量是否生效?2.修改lane数量后,摄像头无法正常工作,如何调试?3.在减少lane数的同时,如何调整链路频率以保持视频流的传输?4. RK3588的MIPICSI控制器支持动态调整lane数吗?</think>### RK3588 IMX415 MIPI摄像头设备树lane数配置指南 在RK3588平台修改IMX415摄像头的MIPI lane数量,需通过设备树(DTS)配置文件调整。以下是具体步骤: #### 1. **定位设备树文件** - 设备树文件通常位于Linux内核源码的`arch/arm64/boot/dts/rockchip/`目录 - 查找与开发板匹配的DTS文件,如`rk3588-evb1.dts`或自定义板级文件 - 搜索`imx415`节点(通常在I²C节点下) #### 2. **修改lane配置参数** 在IMX415的`port/endpoint`节点中调整`data-lanes`属性: ```dts &i2c1 { imx415: camera@1a { compatible = "sony,imx415"; reg = <0x1a>; ... port { imx415_out: endpoint { remote-endpoint = <&mipi_csi2_input>; // 修改此处配置 data-lanes = <1 2>; // 2-lane模式 // data-lanes = <1>; // 1-lane模式 link-frequencies = /bits/ 64 <594000000>; // 需同步调整 }; }; }; }; ``` #### 3. **关键参数说明** - `data-lanes`:物理通道配置 - 1-lane模式:`<1>` - 2-lane模式:`<1 2>` - `link-frequencies`:需根据lane数调整频率 - 4-lane默认值:`594000000`(594Mbps/lane) - 2-lane建议:`1188000000`(总带宽不变) - 1-lane建议:`2376000000`(需硬件支持) #### 4. **同步修改CSI控制器配置** 在MIPI CSI节点中确认lane数匹配: ```dts &csi2_dphy0 { ports { port@0 { mipi_csi2_input: endpoint { data-lanes = <1 2>; // 与sensor配置一致 remote-endpoint = <&imx415_out>; }; }; }; }; ``` #### 5. **配置验证与调试** - 编译并烧写新设备树: ```bash make ARCH=arm64 dtbs ``` - 启动后检查内核日志: ```bash dmesg | grep imx415 ``` - 验证配置: ```bash v4l2-ctl --device /dev/v4l-subdev0 --list-ctrls ``` #### 注意事项: 1. **带宽计算**: 总带宽 = lane数 × 单lane速率 例如:2-lane @ 1.2Gbps/lane = 2.4Gbps $$ \text{BW}_{\text{total}} = N_{\text{lanes}} \times \text{Rate}_{\text{per-lane}} $$ 2. **分辨率限制**: 1080p@30fps约需1.5Gbps,1-lane模式需确保: $$ \text{Rate}_{\text{per-lane}} \geq \frac{\text{分辨率} \times \text{帧率} \times \text{像素深度}}{\text{编码效率}} $$ 3. **硬件兼容性**: IMX415需在初始化时通过I²C发送配置命令切换lane模式,具体寄存器参考IMX415手册[^1] 4. **时钟配置**: 减少lane数时需确认`assigned-clocks/assigned-clock-rates`是否匹配
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值