cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
cat /sys/kernel/debug/gpio
root@ok3588:/#
root@ok3588:/# v4l2-ctl --list-devices
root@ok3588:/# v4l2-ctl --list-formats-ext -d /dev/video22
root@ok3588:/# v4l2-ctl -V -d /dev/video22
【大概40s就会出错退出了!】
root@ok3588:/# gst-launch-1.0 v4l2src device=/dev/video22 num-buffers=54000 ! video/x-raw,format=NV12, width=1920,height=1080 ! tee name=t ! queue ! mpph264enc ! queue ! h264parse ! qtmux ! filesink location=ov5645-5400.mp4 t. ! queue ! waylandsink
20251217给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后调通ov5645【只能预览】
2025/12/17 10:16
缘起:给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-5.10】后,调通了OV5645摄像头模块!
出现的问题:
1、颜色严重偏红。由于使用的是taobao淘宝货,非飞凌原厂的摄像头,可能余摄像头有关系。电话问过飞凌的FAE,他们回复:有点红,但是肯定不像你这样整体泛红。
2、预览的时候不能录像。【原因待查】
适配Rockchip原厂的Buildroot【linux-6.1】时,在预览的时候可以同步录像的!
gst-launch-1.0 v4l2src device=/dev/video22 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! videoconvert ! waylandsink
https://forlinx-book.yuque.com/rh74yu/ok3588/d6548c12ee2743cf50c65ef5450ebbfa#Gt86m
5.4.3.3、摄像头预览
5.4.3 OV5645 测试
5.4.3.1、摄像头识别检测
5.4.3.2、查看支持格式
5.4.3.3、摄像头预览
gst-launch-1.0 v4l2src device=/dev/video22 ! video/x-raw, format=NV12, width=1920,height=1080, framerate=30/1 ! waylandsink

【飞凌魔改的驱动来自/搬运于:OK3588-C_Linux5.10.209+Qt5.15.10_用户资料_R1】
飞凌OK3588-C开发板跑Rockchip原厂的Buildroot【linux-6.1】系统时,适配ETH1接口的网卡。
当你把荣品RD-RK3588开发板重新适配一把,就相当于从头做了一个项目:【荣品RD-RK3588开发板】。
当然,开发板的功能都是好的,你免除了调试的过程,也就没有解决相关硬件出错的经验/机会了!
1、
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\arch\arm64\configs\rockchip_linux_defconfig
CONFIG_GPIO_SYSFS=y
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_GPIO_SYSCON=y
CONFIG_GPIO_PCA953X=y
CONFIG_GPIO_PCA953X_IRQ=y
CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_GPIO_RESTART=y
CONFIG_VIDEO_OS04A10=y
CONFIG_VIDEO_OV4689=y
CONFIG_VIDEO_OV50C40=y
CONFIG_VIDEO_OV5645=y
CONFIG_VIDEO_OV5695=y
CONFIG_VIDEO_OV7251=y
CONFIG_VIDEO_OV13850=y
CONFIG_VIDEO_OV13855=y


2、【直接使用飞凌OK3588-C开发板的Anroid14系统中的ov5645的驱动程序,都是linux-6.1内核,同内核版本的驱动程序一般不会出现兼容性问题。】
Y:\new_disk_4t\wyb\RD-RK3588\rk3588_linux6.1_release_v1.2.0_20241220\kernel-6.1\drivers\media\i2c\ov5645.c
Z:\14TB\OK3588-C\OK3588-android14-source\kernel-6.1\drivers\media\i2c\ov5645.c
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\media\i2c\ov5645.c
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\media\i2c\ov5645.c
【原版本的ov5645.c这个驱动程序是打不开摄像头的!虽然瑞芯微Rockchip的Anroid14系统SDK中有ov5645.c这个驱动程序,但是不能用/不完备!】
【需要使用飞凌魔改版本的!】
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\media\i2c\ov5645.c
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\media\i2c\ov5645.c


但是你不能直接整体使用的飞凌Android14的DTS,会出现的问题有:
1、编译问题。dsi0/dsi1参数的问题。
2、处理好编译问题之后,不能进Android14系统的问题。
一般认为是飞凌魔改了Android14的kernel-6.1中的Makefile,使其直接支持linux-5.10【Android13】的DTS。
3、其它未知问题了!


Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\media\i2c\Kconfig
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\media\i2c\Kconfig
config VIDEO_OV5645
tristate "OmniVision OV5645 sensor support"
depends on OF
depends on I2C && VIDEO_V4L2
select MEDIA_CONTROLLER
select VIDEO_V4L2_SUBDEV_API
select V4L2_FWNODE
help
This is a Video4Linux2 sensor driver for the OmniVision
OV5645 camera.
To compile this driver as a module, choose M here: the
module will be called ov5645.

Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\media\i2c\Makefile
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\media\i2c\Makefile
obj-$(CONFIG_VIDEO_OG01A10) += og01a10.o
obj-$(CONFIG_VIDEO_OG02B10) += og02b10.o
obj-$(CONFIG_VIDEO_OS02G10) += os02g10.o
obj-$(CONFIG_VIDEO_OS02K10) += os02k10.o
obj-$(CONFIG_VIDEO_OS03B10) += os03b10.o
obj-$(CONFIG_VIDEO_OS04A10) += os04a10.o
obj-$(CONFIG_VIDEO_OS04D10) += os04d10.o
obj-$(CONFIG_VIDEO_OS04E10) += os04e10.o
obj-$(CONFIG_VIDEO_OS05A20) += os05a20.o
obj-$(CONFIG_VIDEO_OS08A20) += os08a20.o
obj-$(CONFIG_VIDEO_OV02B10) += ov02b10.o
obj-$(CONFIG_VIDEO_OV02K10) += ov02k10.o
obj-$(CONFIG_VIDEO_OV16885) += ov16885.o
obj-$(CONFIG_VIDEO_OV16A10) += ov16a10.o
obj-$(CONFIG_VIDEO_OV16A1Q) += ov16a1q.o
obj-$(CONFIG_VIDEO_OV2640) += ov2640.o
obj-$(CONFIG_VIDEO_OV2680) += ov2680.o
obj-$(CONFIG_VIDEO_OV2685) += ov2685.o
obj-$(CONFIG_VIDEO_OV2718) += ov2718.o
obj-$(CONFIG_VIDEO_OV2735) += ov2735.o
obj-$(CONFIG_VIDEO_OV2740) += ov2740.o
obj-$(CONFIG_VIDEO_OV2775) += ov2775.o
obj-$(CONFIG_VIDEO_OV4686) += ov4686.o
obj-$(CONFIG_VIDEO_OV4688) += ov4688.o
obj-$(CONFIG_VIDEO_OV4689) += ov4689.o
obj-$(CONFIG_VIDEO_OV50C40) += ov50c40.o
obj-(CONFIG_VIDEO_OV5640) += ov5640.o obj-(CONFIG_VIDEO_OV5645) += ov5645.o
obj-$(CONFIG_VIDEO_OV5647) += ov5647.o
obj-$(CONFIG_VIDEO_OV5648) += ov5648.o
obj-$(CONFIG_VIDEO_OV5670) += ov5670.o
obj-$(CONFIG_VIDEO_OV5675) += ov5675.o
obj-$(CONFIG_VIDEO_OV5695) += ov5695.o
obj-$(CONFIG_VIDEO_OV6650) += ov6650.o
obj-$(CONFIG_VIDEO_OV7251) += ov7251.o
obj-$(CONFIG_VIDEO_OV7640) += ov7640.o
obj-$(CONFIG_VIDEO_OV7670) += ov7670.o
obj-$(CONFIG_VIDEO_OV772X) += ov772x.o
obj-$(CONFIG_VIDEO_OV7740) += ov7740.o
obj-$(CONFIG_VIDEO_OV7750) += ov7750.o
obj-$(CONFIG_VIDEO_OV8856) += ov8856.o
obj-$(CONFIG_VIDEO_OV8858) += ov8858.o
obj-$(CONFIG_VIDEO_OV9281) += ov9281.o
obj-$(CONFIG_VIDEO_OV9640) += ov9640.o
obj-$(CONFIG_VIDEO_OV9650) += ov9650.o
obj-$(CONFIG_VIDEO_OV9750) += ov9750.o
obj-$(CONFIG_VIDEO_OV12D2Q) += ov12d2q.o
obj-$(CONFIG_VIDEO_OV13850) += ov13850.o
obj-$(CONFIG_VIDEO_OV13855) += ov13855.o
obj-$(CONFIG_VIDEO_OV13858) += ov13858.o

3、需要在I2C中挂载PCA953X的驱动。【如果I2C2挂载pca953x异常,或者摄像头ov5645打不开,请注意GPIO冲突的问题】
Y:\new_disk_4t\wyb\RD-RK3588\rk3588_linux6.1_release_v1.2.0_20241220\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
&i2c2 {
status = "okay";
extio: tca6424@23 {
compatible = "ti,tca6424";
reg = <0x23>;
interrupt-parent = <&gpio1>;
interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
gpio-controller;
pinctrl-0 = <&extio_int_gpio>;
pinctrl-names = "default";
#gpio-cells = <2>;
status = "okay";
};
ft5x06_dsi0: ft5x06@38 { //dsi0 tp
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg = <0x38>;
pinctrl-names = "ft5x06_defaults";
pinctrl-0 = <&ft5x06_dsi1_gpio>;
// interrupt-parent = <&gpio3>;
// interrupts = <RK_PC0 IRQ_TYPE_EDGE_FALLING>;
irq-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
status = "okay";
};
};
&i2c4 {
status = "okay";
pinctrl-0 = <&i2c4m1_xfer>;

4、【直接使用飞凌OK3588-C开发板的Anroid14系统中的ov5645的驱动程序,都是linux-6.1内核,同内核版本的驱动程序一般不会出现兼容性问题。】
由于本DTSI体积大,如果不是适配开发板/需要全接口适配/兼容,实际上可以按需裁剪/定制本DTSI文件。
Y:\new_disk_4t\wyb\RD-RK3588\rk3588_linux6.1_release_v1.2.0_20241220\kernel-6.1\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11-imx415.dtsi
Z:\14TB\OK3588-C\OK3588-android14-source\kernel-6.1\arch\arm64\boot\dts\rockchip\OK3588-C-Camera.dtsi
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\arch\arm64\boot\dts\rockchip89\OK3588-C-Camera.dtsi
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11-imx415.dtsi


5、用到pca953x这个I2C扩展芯片,但是不需要修改!
Y:\new_disk_4t\wyb\RD-RK3588\rk3588_linux6.1_release_v1.2.0_20241220\kernel-6.1\drivers\gpio\gpio-pca953x.c

Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\gpio\Kconfig
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\gpio\Kconfig
config GPIO_PCA953X
tristate "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports"
select REGMAP_I2C
help
Say yes here to provide access to several register-oriented
SMBus I/O expanders, made mostly by NXP or TI. Compatible
models include:
4 bits: pca9536, pca9537
8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554,
pca9556, pca9557, pca9574, tca6408, tca9554, xra1202
16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575,
tca6416
24 bits: tca6424
40 bits: pca9505, pca9698

Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\drivers\gpio\Makefile
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\drivers\gpio\Makefile
obj-(CONFIG_GPIO_PALMAS) += gpio-palmas.o obj-(CONFIG_GPIO_PCA953X) += gpio-pca953x.o
obj-$(CONFIG_GPIO_PCA9570) += gpio-pca9570.o

【头文件也需要修改的!编译设备树的时候需要用到这里!】
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\include\dt-bindings\pinctrl\rockchip.h
Y:\new_disk_4t\wyb\OK3588-C\OK3588-C_Linux5.10.209+Qt5.15.10R1\kernel\include\dt-bindings\pinctrl\rockchip.h
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Header providing constants for Rockchip pinctrl bindings.
*
* Copyright (c) 2013 MundoReader S.L.
* Author: Heiko Stuebner <heiko@sntech.de>
*/
#ifndef DT_BINDINGS_ROCKCHIP_PINCTRL_H
#define DT_BINDINGS_ROCKCHIP_PINCTRL_H
#define RK_PA0 0
#define RK_PA1 1
#define RK_PA2 2
#define RK_PA3 3
#define RK_PA4 4
#define RK_PA5 5
#define RK_PA6 6
#define RK_PA7 7
#define RK_PB0 8
#define RK_PB1 9
#define RK_PB2 10
#define RK_PB3 11
#define RK_PB4 12
#define RK_PB5 13
#define RK_PB6 14
#define RK_PB7 15
#define RK_PC0 16
#define RK_PC1 17
#define RK_PC2 18
#define RK_PC3 19
#define RK_PC4 20
#define RK_PC5 21
#define RK_PC6 22
#define RK_PC7 23
#define RK_PD0 24
#define RK_PD1 25
#define RK_PD2 26
#define RK_PD3 27
#define RK_PD4 28
#define RK_PD5 29
#define RK_PD6 30
#define RK_PD7 31
#define RK_FUNC_GPIO 0
#define EXTIO_GPIO_P00 0
#define EXTIO_GPIO_P01 1
#define EXTIO_GPIO_P02 2
#define EXTIO_GPIO_P03 3
#define EXTIO_GPIO_P04 4
#define EXTIO_GPIO_P05 5
#define EXTIO_GPIO_P06 6
#define EXTIO_GPIO_P07 7
#define EXTIO_GPIO_P10 8
#define EXTIO_GPIO_P11 9
#define EXTIO_GPIO_P12 10
#define EXTIO_GPIO_P13 11
#define EXTIO_GPIO_P14 12
#define EXTIO_GPIO_P15 13
#define EXTIO_GPIO_P16 14
#define EXTIO_GPIO_P17 15
#define EXTIO_GPIO_P20 16
#define EXTIO_GPIO_P21 17
#define EXTIO_GPIO_P22 18
#define EXTIO_GPIO_P23 19
#define EXTIO_GPIO_P24 20
#define EXTIO_GPIO_P25 21
#define EXTIO_GPIO_P26 22
#define EXTIO_GPIO_P27 23
#endif

6、尝试改大cma预留内存无效:【128MB→256MB】
Y:\new_disk_4t\wyb\RD-RK3588\RK3588_Linux5.10_V1.2.0_20230620\kernel\arch\arm64\boot\dts\rockchip\rk3588-evb7-v11.dtsi
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2022 Rockchip Electronics Co., Ltd.
*
*/
#include "dt-bindings/usb/pd.h"
#include "rk3588.dtsi"
#include "rk3588-evb.dtsi"
#include "rk3588-rk806-single.dtsi"
/ {
/* If hdmirx node is disabled, delete the reserved-memory node here. */
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* Reserve 128MB memory for hdmirx-controller@fdee0000 */
cma {
compatible = "shared-dma-pool";
reusable;
reg = <0x0 (256 * 0x100000) 0x0 (128 * 0x100000)>;
linux,cma-default;
};
};
es8388_sound: es8388-sound {
Y:\new_disk_4t\wyb\RD-RK3588\rk3588_linux6.1_release_v1.2.0_20241220\kernel-6.1\arch\arm64\boot\dts\rockchip27gt911-\rk3588-evb7-v11.dtsi
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2022 Rockchip Electronics Co., Ltd.
*
*/
#include "dt-bindings/usb/pd.h"
#include "rk3588.dtsi"
#include "rk3588-evb.dtsi"
#include "rk3588-rk806-single.dtsi"
/ {
/* If hdmirx node is disabled, delete the reserved-memory node here. */
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
/* Reserve 256MB memory for hdmirx-controller@fdee0000 */
cma {
compatible = "shared-dma-pool";
reusable;
reg = <0x0 (256 * 0x100000) 0x0 (256 * 0x100000)>;
linux,cma-default;
};
};
es8388_sound: es8388-sound {

