其他分享
首页 > 其他分享> > 在rk3399(rockpi 4b)上链接gc2145(自带isp的相机模组)(二)

在rk3399(rockpi 4b)上链接gc2145(自带isp的相机模组)(二)

作者:互联网

第一步
首先参照rockpi4b的官方wiki把rockpi的bsp编译烧写跑起来,这部分不再赘述了

第二步
将官方的内核clone到bsp中,将原来的内核备份一下如下

//树形图
.

├── build
├── docker
├── kernel//官方内核
├── kernel-b
├── patch
├── README.md
├── rkbin
├── rootfs
└── u-boot

下载附件中的文件
下载链接
1 在 内核目录执行git apply patch就把patch文件打好了
此外还要添加rockpi4b对应的dts文件

2 将rockpi-4-linux.dtsi 保存到arch/arm64/boot/dts/rockchip目录中

3 将rockpi-4b-linux.dts 保存到arch/arm64/boot/dts/rockchip目录中

至此,内核层的文件全部准备完了,
编译内核生成boot.img

然后dd 到sd卡的第四个分区

sudo dd if=out/boot.img of=/dev/sdb4//看自己的sd号

加载自己制作的文件系统启动后可以查看如下的log

如下说明gc2145的驱动加载正常,否则请校验i2c的通信

dmesg |grep gc2145
[    2.980341] gc2145 4-003c: driver version: 00.01.05
[    2.981398] gc2145 4-003c: gc2145_parse_of(2843)
[    2.982277] gc2145 4-003c: gc2145_parse_of gc2145->bus_cfg.bus_type 2
[    2.983512] gc2145 4-003c: gc2145_parse_of mipi framesizes
[    2.984559] gc2145 4-003c: GPIO lookup for consumer pwdn
[    2.984572] gc2145 4-003c: using device tree for GPIO lookup
[    2.984619] of_get_named_gpiod_flags: parsed 'pwdn-gpios' property of node '/i2c@ff3d0000/gc2145@3c[0]' - status (0)
[    2.984678] gc2145 4-003c: __gc2145_power_on(2740)
[    3.001678] gc2145 4-003c: Found GC2145 sensor
[    3.004780] gc2145 4-003c: m01_b_gc2145 4-003c sensor driver registered !!
[    9.669613] gc2145 4-003c: gc2145_power(2626) on(1)
[    9.675349] gc2145 4-003c: gc2145_init(2610)
[    9.948015] gc2145 4-003c: gc2145_power(2626) on(0)

查看isp的加载

grep '' /sys/class/video4linux/video*/name
/sys/class/video4linux/video0/name:rkisp1_mainpath
/sys/class/video4linux/video1/name:rkisp1_selfpath
/sys/class/video4linux/video2/name:rkisp1_dmapath
/sys/class/video4linux/video3/name:rkisp1-statistics
/sys/class/video4linux/video4/name:rkisp1-input-params

查看sensor的拓扑结构

dmesg | grep Async
[    3.003872] rkisp1: Async subdev notifier completed

上面的需要都确保一致才可以,

下面是可选的,有助于进一步了解数据流走向

移植
https://github.com/rockchip-linux/v4l-utils
到板子上
执行如下命令

sudo media-ctl -p
[sudo] password for ab64:
Media controller API version 0.1.0

Media device information
------------------------
driver          rkisp1
model           rkisp1
serial
bus info
hw revision     0x0
driver version  0.0.0

Device topology
- entity 1: rkisp1-isp-subdev (4 pads, 6 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: Sink
                [fmt:UYVY8_2X8/800x600 field:none
                 crop.bounds:(0,0)/800x600
                 crop:(0,0)/800x600]
                <- "rkisp1_dmapath":0 []
                <- "rockchip-mipi-dphy-rx":1 [ENABLED]
        pad1: Sink
                <- "rkisp1-input-params":0 [ENABLED]
        pad2: Source
                [fmt:YUYV8_2X8/800x600 field:none
                 crop.bounds:(0,0)/800x600
                 crop:(0,0)/800x600]
                -> "rkisp1_selfpath":0 [ENABLED]
                -> "rkisp1_mainpath":0 [ENABLED]
        pad3: Source
                -> "rkisp1-statistics":0 [ENABLED]

- entity 2: rkisp1_mainpath (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video0
        pad0: Sink
                <- "rkisp1-isp-subdev":2 [ENABLED]

- entity 3: rkisp1_selfpath (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video1
        pad0: Sink
                <- "rkisp1-isp-subdev":2 [ENABLED]

- entity 4: rkisp1_dmapath (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video2
        pad0: Source
                -> "rkisp1-isp-subdev":0 []

- entity 5: rkisp1-statistics (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video3
        pad0: Sink
                <- "rkisp1-isp-subdev":3 [ENABLED]

- entity 6: rkisp1-input-params (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video4
        pad0: Source
                -> "rkisp1-isp-subdev":1 [ENABLED]

- entity 7: rockchip-mipi-dphy-rx (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        pad0: Sink
                [fmt:UYVY8_2X8/800x600 field:none]
                <- "m01_b_gc2145 4-003c":0 [ENABLED]
        pad1: Source
                [fmt:UYVY8_2X8/800x600 field:none]
                -> "rkisp1-isp-subdev":0 [ENABLED]

- entity 8: m01_b_gc2145 4-003c (1 pad, 1 link)
            type V4L2 subdev subtype Sensor flags 0
            device node name /dev/v4l-subdev2
        pad0: Source
                [fmt:UYVY8_2X8/800x600 field:none]
                -> "rockchip-mipi-dphy-rx":0 [ENABLED]

标签:gc2145,isp,rk3399,rockpi,rkisp1,device,subdev,003c,name
来源: https://www.cnblogs.com/tccxy/p/16194386.html