香橙派5b 移植 imx415

香橙派5b 移植 imx415

镜头配置

Sensor选用如下型号:香橙派OrangePi_5 RK3588S IMX415

我使用的时候更换了镜头,将该sensor装在了我的变焦780模组上,经过后续测试因为CAM1相对稳定,所以安装在CAM1。安装位置如下:

微信图片_20240106144725

配置设备树

配置 rk3588s-orangepi-5-camera*.dtsi

修改设备树,以 kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-camera3.dtsi 为例,关闭 ov13855 ,添加 imx415

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/** Copyright (c) 2021 Rockchip Electronics Co., Ltd.**/&csi2_dcphy1 {status = "disabled";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi_in_dcphy0: endpoint@0 {reg = <0>;remote-endpoint = <&ov13850_out1>;data-lanes = <1 2>;};// mipi_in_dcphy1: endpoint@1 {// 	reg = <1>;// 	remote-endpoint = <&ov13855_out1>;// 	data-lanes = <1 2>;// };mipidcphy1_in_ucam2: endpoint@1 {reg = <1>;remote-endpoint = <&imx415_out2>;data-lanes = <1 2 3 4>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidcphy1_out: endpoint@0 {reg = <0>;remote-endpoint = <&mipi1_csi2_input>;};};};
};&i2c2 {status = "okay";vm149cp1: vm149c@c {compatible = "silicon touch,vm149c";status = "disabled";reg = <0x0c>;rockchip,camera-module-index = <1>;rockchip,camera-module-facing = "front";};ov13850_3: ov13850@10 {compatible = "ovti,ov13850";status = "disabled";reg = <0x10>;clocks = <&cru CLK_MIPI_CAMARAOUT_M4>;clock-names = "xvclk";pinctrl-names = "default";pinctrl-0 = <&mipim0_camera4_clk>;rockchip,grf = <&sys_grf>;reset-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;rockchip,camera-module-index = <1>;rockchip,camera-module-facing = "front";rockchip,camera-module-name = "CMK-CT0116";rockchip,camera-module-lens-name = "default";lens-focus = <&vm149cp1>;port {ov13850_out1: endpoint {remote-endpoint = <&mipi_in_dcphy0>;data-lanes = <1 2>;};};};// dw9714: dw9714@c {// 	compatible = "dongwoon,dw9714";// 	status = "disabled";// 	reg = <0x0c>;// 	rockchip,camera-module-index = <0>;// 	rockchip,vcm-start-current = <10>;// 	rockchip,vcm-rated-current = <85>;// 	rockchip,vcm-step-mode = <5>;// 	rockchip,camera-module-facing = "front";// };// ov13855_3: ov13855@36 {// 	compatible = "ovti,ov13855";// 	status = "disabled";// 	reg = <0x36>;// 	clocks = <&cru CLK_MIPI_CAMARAOUT_M4>;// 	clock-names = "xvclk";// 	pinctrl-names = "default";// 	pinctrl-0 = <&mipim0_camera4_clk>;// 	rockchip,grf = <&sys_grf>;// 	reset-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;// 	pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;// 	rockchip,camera-module-index = <1>;// 	rockchip,camera-module-facing = "front";// 	rockchip,camera-module-name = "CMK-OT2016-FV1";// 	rockchip,camera-module-lens-name = "default";// 	lens-focus = <&dw9714>;// 	port {// 		ov13855_out1: endpoint {// 			remote-endpoint = <&mipi_in_dcphy1>;// 			data-lanes = <1 2>;// 		};// 	};// };imx415_3: imx415-3@37 {compatible = "sony,imx415";status = "disabled";reg = <0x37>;clocks = <&cru CLK_MIPI_CAMARAOUT_M4>;clock-names = "xvclk";pinctrl-names = "default";pinctrl-0 = <&mipim0_camera4_clk>;power-domains = <&power RK3588_PD_VI>;rockchip,grf = <&sys_grf>;reset-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;power-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;// pwdn-gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;orangepi,clkout-enabled-index = <0>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "CMK-OT2022-PX1";rockchip,camera-module-lens-name = "IR0147-50IRC-8M-F20";// rockchip,camera-module-name = "RADXA-CAMERA-4K";// rockchip,camera-module-lens-name = "DEFAULT";port {imx415_out2: endpoint {remote-endpoint = <&mipidcphy1_in_ucam2>;data-lanes = <1 2 3 4>;};};};
};&mipi1_csi2 {status = "disabled";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi1_csi2_input: endpoint@1 {reg = <1>;remote-endpoint = <&csidcphy1_out>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;mipi1_csi2_output: endpoint@0 {reg = <0>;remote-endpoint = <&cif_mipi_in1>;};};};
};&rkcif_mipi_lvds1 {status = "disabled";port {cif_mipi_in1: endpoint {remote-endpoint = <&mipi1_csi2_output>;};};
};&rkcif_mipi_lvds1_sditf {status = "disabled";port {mipi1_lvds_sditf: endpoint {remote-endpoint = <&isp1_in0>;};};
};&rkisp1_vir0 {status = "disabled";port {#address-cells = <1>;#size-cells = <0>;isp1_in0: endpoint@0 {reg = <0>;remote-endpoint = <&mipi1_lvds_sditf>;};};
};

以此类推,修改三个 dtsi 文件:

image-20240104211758917

配置 rk3588-imx415-c*.dts

再增加三个激活的设备树文件,分别对应香橙派上的三个相机接口:

image-20240104211908213

添加的路径为: kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/overlay/rk3588-imx415-c1.dts

添加的内容如下:

/dts-v1/;
/plugin/;/ {fragment@0 {target = <&csi2_dphy0_hw>;__overlay__ {status = "okay";};};fragment@1 {target = <&csi2_dphy0>;__overlay__ {status = "okay";};};fragment@2 {target = <&mipi2_csi2>;__overlay__ {status = "okay";};};fragment@3 {target = <&rkcif_mipi_lvds2>;__overlay__ {status = "okay";};};fragment@4 {target = <&rkcif_mipi_lvds2_sditf>;__overlay__ {status = "okay";};};fragment@5 {target = <&rkisp0_vir1>;__overlay__ {status = "okay";};};fragment@6 {target = <&i2c7>;__overlay__ {status = "okay";imx415-1@37 {status = "okay";};};};fragment@7 {target = <&rkcif>;__overlay__ {status = "okay";};};fragment@8 {target = <&rkcif_mmu>;__overlay__ {status = "okay";};};fragment@9 {target = <&rkisp0>;__overlay__ {status = "okay";};};fragment@10 {target = <&isp0_mmu>;__overlay__ {status = "okay";};};
};

然后在 kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/overlay/Makefile 目录下面添加编译:

image-20240104211528984

编译下载dtb文件

然后使用命令重编kernel,会自动将 dts 文件编译,在对应目录下载这四个文件即可:

image-20240104212134398

rk3588s-orangepi-5b.dts 和三个 dtsi 文件在同一目录下。

之所以更新 rk3588s-orangepi-5b.dts ,是因为三个 dtsi 文件是被其调用的,不会单独生成 dtb

image-20240104212334048

rk3588s-orangepi-5b.dts 更新到 /boot/dtb/rockchip

image-20240104212609464

三个 .dtbo 更新到 /boot/dtb/rockchip/overlay

image-20240104212757240

配置板端加载imx415

最后在香橙派上直接输入 sudo orangepi-config ,在 System->Hardware 里空格选择对应在对应camera接口位置加载,回车save然后reboot。

image-20240104212949414

测试camera

测试命令:

gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=1920,height=1080, framerate=60/1 ! xvimagesink

iq文件有些问题,颜色有点失真,不过可以正常出图:

Screenshot from 2024-01-06 13-10-27

问题解决

1. 上电读取不到sensor id

香橙派上读取imx415寄存器报错:

Screenshot from 2024-01-04 19-05-59

找到报错源头,I2C 通信出错:

image-20240104190233766

最终排查,相机电源引脚及I2C未正常配置,配置完成后,即可正常启动。

使用的imx415芯片两个 SLAMODE 引脚均拉高,因此I2C从机地址为 0x37 ,参照下图:

image-20240105215525175

同时,本电路中复位脚需配置 reset-gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>; ,应该注意。

最终成功dmesg信息如下:

Screenshot from 2024-01-05 21-53-20

2. 出图一段时间出现crc/ecc错误

image-20240105211857735

搜索的可能原因如下 1

  • 驱动配置的MIPI时钟与sensor输出的MIPI时钟对应不上
  • MIPI时序错误,例如SOT的时序不符合MIPI的SPEC
  • MIPI信号质量不佳导致的报错

后来发现,在camera1接口可以稳定出图,而2、3接口存在相关问题。考虑cam2、cam3使用的是时钟4:

image-20240106131535673

而CAM1使用的是时钟3:

image-20240106131558386

可能是相关时钟源导致的,等待进一步验证相关问题。



部分图片来源网络,如有侵权请联系我删除。
如有疑问或错误,欢迎和我私信交流指正。
版权所有,未经授权,请勿转载!
Copyright © 2024.01 by Mr.Idleman. All rights reserved.


参考文献


  1. camera调试:RK3588 apk打开不出图如何排查? ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326205.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三英战吕布web3游戏项目启动全流程

项目是一个学习相关的很好的例子并且开源&#xff0c;原本的项目是连接goerli网络&#xff0c;但我把它修改为可连接ganache网络的项目了&#xff0c;更方便启动。 智能合约部分 进入文件 hardhat.config.js &#xff0c;增加一个钱包私钥 2.执行npm install 3.测试合约 npx ha…

分解质因数算法总结

知识概览 n中最多只包含一个大于的质因子。 例题展示 题目链接 活动 - AcWing 系统讲解常用算法与数据结构&#xff0c;给出相应代码模板&#xff0c;并会布置、讲解相应的基础算法题目。https://www.acwing.com/problem/content/869/ 题解 分解质因数可以用试除法解决&…

高压放大器输出接法及其注意事项

高压放大器应用场景非常广泛&#xff0c;非常适用于半导体高压驱动、TFT产业高压驱动、各种高压工程等应用&#xff1b;也很适用当作音频信号产生器或函数波形产生器的波形放大使用。使用场景广泛&#xff0c;放大器的输出接法也多种&#xff0c;对于不同的放大器也有对应的输出…

计算机网络(7):网络安全

网络安全问题 计算机网络上的通信面临以下的四种威胁: (1)截获(interception)攻击者从网络上窃听他人的通信内容。 (2)中断(interruption)攻击者有意中断他人在网络上的通信。 (3)篡改(modification)攻击者故意篡改网络上传送的报文。 (4)伪造(fabrication)攻击者伪造信息在网…

【Pytorch】学习记录分享10——TextCNN用于文本分类处理

【Pytorch】学习记录分享10——PyTorchTextCNN用于文本分类处理 1. TextCNN用于文本分类2. 代码实现 1. TextCNN用于文本分类 具体流程&#xff1a; 2. 代码实现 # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as np…

Python接口自动化-参数关联(超详细的)

前言 我们用自动化发帖之后&#xff0c;要想接着对这篇帖子操作&#xff0c;那就需要用参数关联了&#xff0c;发帖之后会有一个帖子的id&#xff0c;获取到这个id&#xff0c;继续操作传这个帖子id就可以了 &#xff08;博客园的登录机制已经变了&#xff0c;不能用账号和密…

java.lang.NoSuchFieldError: No static field xxx of type I in class

问题描述 将Library编译成 aar导入到另一个项目中依赖成功&#xff0c;编译成功&#xff0c;运行打开发生了崩溃异常如下图: 原因分析&#xff1a; 异常错误提示找不到id为recycler_1的控件了&#xff0c;我的Library中recycler_1控件是在MainActivity的xml中使用的&#xff0c…

Redis高级特性和应用(慢查询、Pipeline、事务、Lua)

Redis的慢查询 许多存储系统(例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似…

Android开发编程从入门到精通,安卓技术从初级到高级全套教学

一、教程描述 本套教程基于JDK1.8版本&#xff0c;教学内容主要有&#xff0c;1、环境搭建&#xff0c;UI布局&#xff0c;基础UI组件&#xff0c;高级UI组件&#xff0c;通知&#xff0c;自定义组件&#xff0c;样式主题&#xff1b;2、四大组件&#xff0c;Intent&#xff0…

Excel中快速隐藏中间四位手机号或者身份证号等

注意&#xff1a;以下方式必须再新增一列&#xff0c;配合旧的一列用来对比操作&#xff0c;即根据旧的一列的数据源&#xff0c;通过新的一列的操作逻辑来生成新的隐藏数据 1、快捷方式是使用CtrlE 新建一列&#xff1a;手动输入第一个手机号隐藏后的号码&#xff0c;即在N2单…

RMAN-03002 RMAN-06059 ORA-19625

有个现场经理反馈&#xff0c;每天的rman备份异常&#xff0c;登录系统查看rman的log日志&#xff0c;报错信息如下 RMAN> run{ 2> backup filesperset 50 archivelog all format /backup/ARCHBAK_%d_%T_%s tag arch_bak delete all input; 3> } 4> Starting …

微信小程序的驾校预约管理系统

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;一 、设计说明 1.1课题背景 在I…