项目-泰山派相机
项目-泰山派相机
点亮mipi屏幕
- 屏幕手册
- 泰山派
i2c
GP7101.pdf
i2c转pwm #todo

i2c地址实际是7位 + 1位读写位
- 写操作时,使用
0xB0。 - 读操作时,使用
0xB1(只改变最低位)
1011 0000 = 0xB0因此GP7101的实际I2C地址如下
0101 1000 = 0x58目录kernel/arch/arm64/boot/dts/rockchip/tspi-rk3566-dsi-v10.dtsi
&i2c1 {
status = "okay"; // 状态为"okay",表示此节点是可用和配置正确的
// 板载背光驱动电路
GP7101@58 {
compatible = "gp7101-backlight";
reg = <0x58>;
max-brightness-levels = <255>; // 背光亮度的最大级别是255
default-brightness-level = <100>; // 默认的背光亮度级别是100
};
};归档
摄像头
屏幕
移植ov8858摄像头
kconfig
buildroot kconfig
这个是泰山派的预选配置
#include "audio.config"
#include "audio_gst.config"
#include "base.config"
#include "base_extra.config"
#include "benchmark.config"
#include "bt.config"
#include "camera.config"
#include "camera_gst.config"
#include "debug.config"
#include "debug2.config"
#include "weston.config"
#include "gpu.config"
#include "network.config"
#include "ntfs.config"
#include "video_mpp.config"
#include "video_gst.config"
#include "video_gst_rtsp.config"
#include "powermanager.config"
#include "rk356x_arm64.config"
#include "test.config"
#include "wifi.config"
BR2_KERNEL_MIRROR="https://mirror.bjtu.edu.cn/kernel/"
BR2_GNU_MIRROR="http://mirrors.nju.edu.cn/gnu/"
BR2_LUAROCKS_MIRROR="https://luarocks.cn"
BR2_CPAN_MIRROR="http://mirrors.nju.edu.cn/CPAN/"
BR2_PACKAGE_RKWIFIBT_AP6212A1=y
BR2_PACKAGE_RKWIFIBT_BTUART="ttyS1"
BR2_PACKAGE_RKNPU2=y
BR2_PACKAGE_NFS_UTILS=y
BR2_PACKAGE_OPENCV3=y
BR2_PACKAGE_OPENCV3_LIB_STITCHING=y
BR2_PACKAGE_OPENCV3_LIB_SUPERRES=y
BR2_PACKAGE_OPENCV3_LIB_TS=y
BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB=y
BR2_PACKAGE_TSLIB=y
BR2_PACKAGE_PCRE2=y
BR2_PACKAGE_PCRE2_16=ykernel kconfig
#选中预选的配置
source buildroot/build/envsetup.sh
# 所有配置项的目录
#/home/shelton/Workspaces/source/sdk/rockchip/rk3566_tspi/tspi_linux_sdk_repo_20240131/buildroot/configs
# 进入图形化配置
make menuconfig
# 65 rockchip_rk3566_defconfig
#保存配置
make savedefconfigkernel的 kconfig 会加载默认的配置项rockchip_linux_defconfig
# kconfig的目录为
# tspi_linux_sdk_repo_20240131/kernel/arch/Kconfig
source "arch/$(SRCARCH)/Kconfig"
# rockchip_linux_defconfig的目录为
# tspi_linux_sdk_repo_20240131/kernel/arch/arm64/configs/rockchip_linux_defconfig开启OV5695驱动编译选项
在 rockchip_linux_defconfig 中添加 CONFIG_VIDEO_OV8858=y
# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
CONFIG_VIDEO_OV5695=y
#...
CONFIG_VIDEO_OV8858=y在 tspi_linux_sdk_repo_20240131/kernel/arch 中的 Makefile的这个目标就生效了
obj-$(CONFIG_VIDEO_OV8858) += ov8858.o修改设备树
/home/shelton/Workspaces/source/sdk/rockchip/rk3566_tspi/tspi_linux_sdk_repo_20240131/kernel/arch/arm64/boot/dts/rockchipov5695的设备树 tspi-rk3566-csi-v10.dtsi

读手册
Rockchip_Driver_Guide_VI_CN_v1.0.8.pdf


OV8858COB_(rev 2A)_DS_2.0_Chippack.pdf
驱动源码
/home/shelton/Workspaces/source/sdk/rockchip/rk3566_tspi/tspi_linux_sdk_repo_20240131/kernel/drivers/media/i2c/ov8858.c
mipi协议


dphy 多个lane共用一个时钟
cphy 每个lane拥有独立的时钟
./camera_engine_rkaiq/tests/rkisp_demo/demo/rkisp_demo.cpp
/home/shelton/Workspaces/source/sdk/rockchip/rk3566_tspi/tspi_linux_sdk_repo_20240131/external/camera_engine_rkaiq/iqfiles/isp21

这是一个真实、对称、可验证的硬件连接
Sensor → CSI-2 DPHY → ISP 的数据通路
[ov8858] ──⇄── [csi2_dphy0] ──⇄── [rkisp_vir0]
(in/out endpoints)remote-endpoint 的指向如上图
//摄像头D-PHY接口
&csi2_dphy0 {
status = "okay";
/*
* dphy0 only used for full mode,
* full mode and split mode are mutually exclusive
*/
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
dphy0_in: endpoint@1 {
reg = <1>;
remote-endpoint = <&ov8858_out>;
data-lanes = <1 2 3 4>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
dphy0_out: endpoint@1 {
reg = <1>;
remote-endpoint = <&isp0_in>;
};
};
};
};
//图像处理接口
&rkisp_vir0 {
status = "okay";
port {
#address-cells = <1>;
#size-cells = <0>;
isp0_in: endpoint@0 {
reg = <0>;
remote-endpoint = <&dphy0_out>;
};
};
};
&i2c4 {
/* i2c4 sda conflict with camera pwdn */
status = "okay";
ov8858: ov8858@36 {
status = "okay";
// 需要与驱动中的匹配字符串一致
compatible = "ovti,ov8858";
// sensor I2C设备地址,7位
reg = <0x36>;
// sensor mclk源配置
clocks = <&cru CLK_CIF_OUT>;
clock-names = "xvclk";
//sensor mclk pinctl设置
pinctrl-names = "default";
pinctrl-0 = <&cif_clk>;
//sensor 相关电源域使能
power-domains = <&power RK3568_PD_VI>;
// reset管脚分配及有效电平
reset-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_HIGH>;
// powerdown管脚分配及有效电平
pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
// gpio组管脚分配及有效电平
power-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;
// 模组编号,该编号不要重复
rockchip,camera-module-index = <0>;
// 模组朝向,有"back"和"front"
rockchip,camera-module-facing = "back";
// 模组名
rockchip,camera-module-name = "SLD-S10-M258-V1";
// lens名
rockchip,camera-module-lens-name = "DL820B-D";
port {
ov8858_out: endpoint {
// csi2 dphy端的port名
remote-endpoint = <&dphy0_in>;
// csi2 dphy lane数,2lane为 <1 2>, 4lane为 <1 2 3 4>
data-lanes = <1 2 3 4>;
};
};
};
};