20240504在RK3588的Buildroot系统下使用i2cdetect
2024/5/4 10:45
root@ok3588:/#
root@ok3588:/# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- UU UU -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- UU UU -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- UU -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 5
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/# i2cdetect -y 6
Error: Could not open file `/dev/i2c-6' or `/dev/i2c/6': No such file or directory
root@ok3588:/#
root@ok3588:/# i2cdetect -y 7
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@ok3588:/#
root@ok3588:/#
dmesg给了。
我给ov5645.c每一个 函数都加打印了。连probe都没有进!
probe没有进一般是跟驱动注册的compatible和设备树的compatible有关,跟硬件没有关系的
设备树里描述了5645这个外设吗
和我们开发板一样挂在同一个i2c下吗
i2ctool可以看到这个设备地址吗
主板和sensor的通讯是要通过I2c的
没有I2c
驱动就不会加载
I2C已经 屏蔽了
强制挂载的!
i2ctool -r -y “i2c号”
这样看看外设在工作吗
初始化是搞定了
您难道只是硬件接上了 软件设备树没有任何描述吗
那Linux如何知道您接入了个摄像头的sensor 以及这个sensor是什么功能呢
不用管I2C了。我们用的是OV5645的订制模组。模组会自己初始化OV5645为2LANE的1920*1080@30
初始化是初始化 但我Linux 需要知道 这个I2c上有这么个设备 再匹配驱动
不然Linux是个瞎子 都不知道有设备 如何probe
我关闭 OV5645.c里面的全部I2C读写。强制匹配的!
设备树描述了吗
CAM3里面有描述 。右边的
i2ctool -r -y 3
3换7
....命令执行一下 结果截图
我把I2C读写 都全部关闭了呀!
这个是总线拉死了
/dev/i2c-5
在源码中OK3588_Linux_fs/buildroot打开i2ctool
步骤:
1.进入目录执行make menuconfig
2.按“/”进行搜索
3.搜索:BR2_PACKAGE_BUSYBOX_SHOW_OTHERS与BR2_PACKAGE_I2C_TOOLS 分别打开。
4.
5.最后编译buildroot就行
i2c7下没设备
所以驱动没匹配 您驱动里的的i2c操作关闭仅仅是不写入东西了
现在您的摄像头没有在正常工作
随便接入一个i2c设备 设备树不描述 i2cdetect 都可以读到地址
说明设备在正常工作
变成UU状态说明驱动注册
我拿你们的开发板测试。稍等!
这是什么结果呢?在我们开发板上接入我们的5645吗
是的。现在在 对比分析!
不接屏会不会打印 没有TP的I2C读写错误?
会
确认一下。这些是TP的2C打印错误吗?如何关闭?
[ 82.262613] rkcif_scale_ch3: update sensor info failed -19
[ 82.263186] rockchip-csi2-dphy0: No link between dphy and sensor
[ 82.263202] rkcif-mipi-lvds2: rkcif_update_sensor_info: stream[0] get remote terminal sensor failed!
[ 82.263206] stream_cif_mipi_id0: update sensor info failed -19
[ 82.383947] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 83.397504] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 84.410583] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 85.423914] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 86.437249] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 87.450582] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 88.464187] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
[ 89.477275] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
使用相同的IMG的比对结果:
1、飞凌开发板+CAM3接OV5645
2、飞凌核心板+品灵定制版OV5645(启动需要关闭PCIE3的电源)
经过dmesg的比对。
发现:使用【飞凌核心板的】方案2,
发现在dmesg中,驱动根本不进ov5645的probe。
i2cdetect在i2c7找不到0x3C的关在。
请问关闭PCIE3的电源的时候,有没有关闭其它地方?
[ 493.314971] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c __ov5645_get_pad_format 997
[ 493.314976] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1192
[ 493.314983] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1210 MEDIA_BUS_FMT_UYVY8_2X8=0x00002006
[ 493.314988] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1192
[ 493.314994] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_get_selection 1113
[ 493.317594] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_g_frame_interval 1178
[ 493.317598] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1192
[ 493.317601] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_g_frame_interval 1178
[ 493.317604] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1192
[ 493.317608] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_get_selection 1113
[ 493.317612] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_get_format 1015
[ 493.317615] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c __ov5645_get_pad_format 997
[ 493.318036] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_stream 1128
[ 493.318042] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318046] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318050] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318053] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318056] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318059] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
[ 493.318062] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_s_ctrl 891
我已经关闭了全部的I2C配置,直接 要求写死1920*1080@30,驱动框架里 看 不停的 查询格式?
4路MIPI YUV的摄像头信号(1920x1080@30),请问 RK3588的BSP中哪一个 驱动接近?或者 飞凌 是否可以提供一个 参考/验证过的驱动?
都是5645的摄像头吗,上面的打印信息这边看了下,是用来设置画面曝光之类的一些参数,没有找到上层的调用,您那边现在是什么现象
现在是在 linux下 取JPG图。取不到!
用gstreamer输出的吗
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1 ! video/x-raw,format=NV12,width=1920,height=1080 ! filesink location=pic20.yuv
打开摄像头的时候,驱动不停的获取通道信息?啥鬼?
难道通道设置不对?吗?
[ 71.189441] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1197 cmd=0xc01c56d4
[ 71.189445] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1210 RKMODULE_GET_CHANNEL_INFO
[ 71.189448] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1217 MEDIA_BUS_FMT_UYVY8_2X8=0x00002006
[ 71.189452] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1196
[ 71.189456] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1197 cmd=0x808856c4
[ 71.189458] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1245 default
[ 71.189463] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_get_selection 1117
[ 71.189473] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_get_format 1019
[ 71.189476] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c __ov5645_get_pad_format 997 which=0x00000001
[ 71.189480] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c __ov5645_get_pad_format 998 V4L2_SUBDEV_FORMAT_TRY=0x00000000, V4L2_SUBDEV_FORMAT_ACTIVE=0x00000001
[ 71.189483] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c __ov5645_get_pad_format 1005 V4L2_SUBDEV_FORMAT_ACTIVE
[ 71.189486] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1196
[ 71.189489] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1197 cmd=0xc01c56d4
[ 71.189492] **** wyb 2024/4/3 19:57 drivers/media/i2c/ov5645.c ov5645_ioctl 1210 RKMODULE_GET_CHANNEL_INFO
现阶段的问题。使用 OV5645.C 来跑我们的 定制版本 OV5645。
看 ioctrl一直在 获取 通道 信息,没有进入stream推流状态!
您定制的5645动哪儿了呢 驱动不改有问题吗
昨天的问题是sensor没有正常工作吗
定制版本的OV5645是模组,模组中 已经进行了 I2C初始化,上电自动初始化为mipi 4lane的YUV信号。
定制版本的 OV5645在测试架上 有图像。确认正常。
嗯!RK3588接受不到 定制版本的OV5645信号。
昨天是 I2C7挂载不了。现在初步 查明是 你们驱动中的 GPIO扩展IC把I2C7拉死了。所以ov5645.c挂载不了。
我切换到 I2C1,并且 屏蔽了GPIO扩展。现在 可以加载ov5645.c。但是还是没有图像!
驱动不改试过吗
【定制版本的OV5645是模组,初始化,上电都搞好了。直接送MIPI信号出来】ov5645.c里面有 I2C的读写 还有 PWDN RESET。不改 直接在probe就飞了
请问 这个 I2C超时 是哪里 打出来的呀?
root@ok3588:/# cat /proc/kmsg
<3>[ 1604.987306] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1607.013973] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1609.040561] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1611.067228] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1613.093976] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1615.120619] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1617.147260] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1619.173884] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
<3>[ 1621.200592] rk3x-i2c fead0000.i2c: timeout, ipd: 0x00, state: 3
driver/i2c下面
我是问 哪一个 器件 打印的?我想屏蔽它
核心板的话?
cpu的控制器驱动
找了下是i2c5
i2c5没上拉或者设备的话可以关了
我们这种订制的 OV5645,上电之后直接 输出 MIPI YUV,1080p@30。
它的上电 初始化完成会比较晚。
这种情况,在RK平台,需要 进行时序同步吗?
理论上不需要 您看下有video 设备吗
有 /dev/video0的
有video0说明识别没什么问题
我们的【硬件】用万用表量过 MIPI信号,0.7V。MIPI也没有被拉死
你们的 OK3588-C地板上有 GPIO扩展IC吧?
如果 核心板不接,内核里面不去掉,是否会 拖死I2C7?(OV5645.C默认挂载在I2C7)
今天 将 DTS中的I2C2下的大量设备关闭 才将OV5645.C加载的
root@ok3588:/#
root@ok3588:/#
pgaw,format=NV12,width=1920,height=1080 ! mppjpegenc ! filesink location=pic01.j
Setting pipeline to PAUSED ...
Using mplane plugin for capture
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
卡到 更新 时钟是啥鬼?
https://blog.csdn.net/weixin_41944449/article/details/112393312
mipi sensor 调试流程
MIPI没有接收到数据
当i2c可以正常通信后,意味着soc可以配置sensor,使其输出图像数据。这个过程也会经常性的遇到接收不到图像数据的情况,下面就mipi接收不到图像数据进行分析:
确认soc软件是否正确,是否被修改过代码;
这部分是由于图像数据在soc mipi接收过程是需要检测到各个lane的LP11-LP10-LP00的一个状态切换后才会切换到高速模式准备接收。如果soc在配置过程,先使能sensor输出,再配置soc mipi,就可能会存在soc mipi控制器一直在等待mipi信号切换,而sensor早已开始输出了。
这个也是我在csi mipi信号解析说到的将sensor mipi clk lane配置为非连续时钟模式的原因,避免soc错过一开始的LP状态切换后一直接收不到图像数据。配置为非连续时钟模式之后,每帧图像数据,mipi clk lane都会有一个完整的LP状态切换。