SOLVED 移植MV-IMX265驱动程序到迅为RK3568抓图卡死
- 
					
					
					
					
 @veye_xumm 卡死在这里了,输入命令不管用,dmesg也不行,看不了。 
- 
					
					
					
					
 设备数按照这个写的 &csi2_dphy0 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi_in_ucam3: endpoint@4 { reg = <4>; remote-endpoint = <&mvcam_out>; data-lanes = <1 2>; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; csidphy_out: endpoint@0 { reg = <0>; remote-endpoint = <&isp0_in>; }; }; }; }; &csi2_dphy1 { status = "disabled"; }; &csi2_dphy2 { status = "disabled"; }; &rkisp_vir0 { status = "okay"; port { #address-cells = <1>; #size-cells = <0>; isp0_in: endpoint@0 { reg = <0>; remote-endpoint = <&csidphy_out>; }; }; }; &rkisp_vir1 { status = "disabled"; }; &i2c4 { status = "okay"; clock-frequency = <400000>; mvcam: mvcam@3b{ status = "okay"; compatible = "veye,mvcam"; reg = <0x3b>; clocks = <&cru CLK_CIF_OUT>; clock-names = "xvclk"; //avdd-supply = <&vcc_mipi>; power-domains = <&power RK3568_PD_VI>; pinctrl-names = "default"; pinctrl-0 = <&cif_clk>; //power-gpios = <&pca9555 PCA_IO0_4 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>; pwdn-gpios = <&gpio4 RK_PB7 GPIO_ACTIVE_HIGH>; firefly,clkout-enabled-index = <0>; rockchip,camera-module-index = <0>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "NC"; rockchip,camera-module-lens-name = "NC"; port { mvcam_out: endpoint { remote-endpoint = <&mipi_in_ucam3>; data-lanes = <1 2>; }; }; }; };
- 
					
					
					
					
 @veye_xumm 硬件原理图检查出过了,可以对的上。用示波器也可以看到MIPI信号。 
- 
					
					
					
					
 @w88121446 said in 移植MV-IMX265驱动程序到迅为RK3568抓图卡死: 卡死在这里了,输入命令不管用,dmesg也不行,看不了。 卡死在这里——指的是运行取图指令卡死,还是上电就直接卡死? 
 在所有rk板子上,取图会导致报错的我遇到过,没有遇到过卡死的。建议你排查一下卡死的时候,相机的供电电压是否在正常范围,你的板子的电压是否还在正常范围。
- 
					
					
					
					
 @veye_xumm 
 运行取图指令卡死,串口不能和RK3568通讯了。但是屏幕那边是正常的,可以正常触屏以及打开文件等操作,证明3568没有死机。
 供电方面,3568的12V和265的5V我用线性电源供电的,电压显示正常。
 抓图命令后,MIPI有信号了,5V那边电流会变成0.21A左右。
 目前来看,只要MIPI有信号,串口那边就会卡住,就不能和3568通讯了。
  
- 
					
					
					
					
 @w88121446 调试串口卡住的话,你有没有其他手段,能进入操作系统的终端,执行一下dmesg,看看有什么报错? 
- 
					
					
					
					
 @veye_xumm 
 1.我给3568接了鼠标和键盘,调用操作系统的终端dmesg,未发现报错,打印信息和串口卡住之前的一样。
 我看了一下mipi_clk信号,频率是740MHZ,峰峰值只有26mv左右。这个会不会有问题,我的OV5695的mipi_clk峰峰值大概有46mv。2.关于link_freq和pixel_freq我有一个疑问 
 我的0v2710:OV2710_PIXEL_RATE=80 M
 OV2710_LINK_FREQ=400M
 我的ov5695:OV5695_PIXEL_RATE=180M
 OV5695_LINK_FREQ=420M
 这俩都满足这个公式
 pixel_rate = link_freq * 2 * lanes / bits_per_pixelmv-imx265的驱动中:MV_CAM_PIXEL_RATE=750M 
 MVCAM_DEFAULT_LINK_FREQ =742.5M
 明显是不满足公式
 pixel_rate=link_freq * 2 * lanes / bits_per_pixel在这里有没有可能有问题?  = =
- 
					
					
					
					
 @w88121446 said in 移植MV-IMX265驱动程序到迅为RK3568抓图卡死: 我看了一下mipi_clk信号,频率是740MHZ,峰峰值只有26mv左右。这个会不会有问题,我的OV5695的mipi_clk峰峰值大概有46mv。 
 2.关于link_freq和pixel_freq我有一个疑问
 我的0v2710:OV2710_PIXEL_RATE=80 M
 OV2710_LINK_FREQ=400M
 我的ov5695:OV5695_PIXEL_RATE=180M
 OV5695_LINK_FREQ=420M
 这俩都满足这个公式
 pixel_rate = link_freq * 2 * lanes / bits_per_pixel
 mv-imx265的驱动中:MV_CAM_PIXEL_RATE=750M
 MVCAM_DEFAULT_LINK_FREQ =742.5M
 明显是不满足公式
 pixel_rate=link_freq * 2 * lanes / bits_per_pixel
 在这里有没有可能有问题?这些都是没问题的。现在我们全系列的MV系列相机和RAW系列都已经接如果firefly、radxa的rk3568板子。 
 不过,我们在这两个板子上都是用的kernel5.10的。
 我仔细回忆了一下,当初我们最早曾尝试在firefly板子上做过基于4.19的版本的取图,现象跟你现在的现象一样,不出图也不报错。后来firefly发布了5.10版本的bsp,我们就转到5.10版本了。
- 
					
					
					
					
 @veye_xumm 我先弄个5.10试试,不过对我这边很麻烦,还关系到其他同事。4.19还有抢救的希望吗? 
- 
					
					
					
					
 @w88121446 这个我这边不清楚,没法给你有效的参考信息。 
- 
					
					
					
					
 @veye_xumm 您好,我现在在5.10的内核中可以正确发现MV-IMX265了。目前遇到两个问题 
 1.是发送《v4l2-ctl -L》
 回复如下图,不回复FPS等信息了
  2.是发送《v4l2-ctl --set-ctrl frame_rate=10》设置帧率是会报错 
  请您指点一下 
- 
					
					
					
					
 @w88121446 
 配参数应该配置到/dev/v4l-subdev2 吧?
 你可以参考参考part7.2
- 
					
					
					
					
 @veye_xumm 图像可以采集出来了,想实时预览的话有什么办法吗? 
- 
					
					
					
					
 @w88121446 said in 移植MV-IMX265驱动程序到迅为RK3568抓图卡死: @veye_xumm 图像可以采集出来了,想实时预览的话有什么办法吗? 我们wiki上面提到一个python脚本,可以做预览,你可以参考一下。 
- 
					
					
					
					
 @veye_xumm 暂时没有python环境,我尝试使用gstreamer里的脚本预览 
 设置成这样:media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 2-003b":0[fmt:Y8_1X8/2048x1544@1/30]'
 然后再预览:gst-launch-1.0 v4l2src device=/dev/video1 io-mode=4 ! queue ! video/x-raw,format=NV12,width=2048,height=1544,framerate=30/1 ! glimagesink
 出来的图颜色不对,有时绿有时粉,方向也不时我想要的,该如何旋转。如果设置成这样:media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 2-003b":0[fmt:UYVY8_2X8/2048x1544@1/30]' 
 然后再预览:gst-launch-1.0 v4l2src device=/dev/video1 io-mode=4 ! queue ! video/x-raw,format=NV12,width=2048,height=1544,framerate=30/1 ! glimagesink
 不出图。麻烦您指导一下,我的模块是MV-IMX265 
- 
					
					
					
					
 @w88121446 
 对于只支持单色RAW8格式的camera,直接通过gstreamer进行预览,我们现在觉得支持度不够。
 建议你还是用python调用一下opencv跑一下,这个是最简单的。
- 
					
					
					
					
 @veye_xumm 好的,感谢您的帮助。 
- 
					
					
					
					
 @w88121446 不客气 
- 
					
					
					
					
 @veye_xumm 用C++调用OPENCV也可以预览到正常的图像把。 
- 
					
					
					
					
 @w88121446 
 应该没问题的。 不过我们缺乏应用层尤其是opencv的经验。 我理解是python调用opencv能预览,用c++应该就可以。
 opencv的主要问题是效率问题,数据导入到opencv的时候需要用cpu跑一次数据格式转换。
