Firefly开源社区

标题: debian 尝试使用ov13850摄像头 [打印本页]

作者: bywayboy    时间: 2018-5-30 21:45
标题: debian 尝试使用ov13850摄像头
首先修改dts文件 rk3399-firefly-linux.dts
  1. &cif_isp0 {
  2.         rockchip,camera-modules-attached = <&camera0>;
  3.         rockchip,gpios-cifpower = <&gpio1 22 GPIO_ACTIVE_HIGH>;

  4.         status = "okay";
  5. };
复制代码
  1. camera0: camera-module@20 {
  2.                 status = "okay";
  3.                 compatible = "omnivision,ov13850-v4l2-i2c-subdev";
  4.                 reg = < 0x20 >;
  5.                 device_type = "v4l2-i2c-subdev";

  6.                 clocks = <&cru SCLK_CIF_OUT>;
  7.                 clock-names = "clk_cif_out";

  8.                 pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
  9.                 pinctrl-0 = <&cam0_default_pins>;
  10.                 pinctrl-1 = <&cam0_sleep_pins>;

  11.                 /*GPIO2  B4 = 12 B6 = 14 MIPI0 D4 = 28 C7 = 23 */
  12.                 rockchip,pwr-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;        /*Power                        GPIO1_C7 */
  13.                 rockchip,pd-gpio  = <&gpio2 12 GPIO_ACTIVE_LOW>;        /*Power Down        GPIO2_B4 */
  14.                 rockchip,rst-gpio = <&gpio0 8 GPIO_ACTIVE_LOW>;                /*Reset                        GPIO0_B0 */
  15.                
  16.                 rockchip,camera-module-mclk-name = "clk_cif_out";
  17.                 rockchip,camera-module-facing = "back";
  18.                 rockchip,camera-module-name = "cmk-cb0695-fv1";
  19.                 rockchip,camera-module-len-name = "lg9569a2";
  20.                 rockchip,camera-module-fov-h = "66.0";
  21.                 rockchip,camera-module-fov-v = "50.1";
  22.                 rockchip,camera-module-orientation = <0>;
  23.                 rockchip,camera-module-iq-flip = <0>;
  24.                 rockchip,camera-module-iq-mirror = <0>;
  25.                 rockchip,camera-module-flip = <0>;
  26.                 rockchip,camera-module-mirror = <0>;

  27.                 rockchip,camera-module-defrect0 = <1920 1080 0 0 1920 1080>;
  28.                 rockchip,camera-module-defrect1 = <2112 1568 0 0 2112 1568>;
  29.                 rockchip,camera-module-defrect2 = <4224 3136 0 0 4224 3136>;
  30.                 rockchip,camera-module-defrect3 = <3264 2448 0 0 3264 2448>;

  31.                 rockchip,camera-module-flash-support = <0>;                        /*闪光灯控制开关*/
  32.                 rockchip,camera-module-mipi-dphy-index = <0>;                /*MIPI 接口索引*/
  33.         };
复制代码

修改 cif_isp10_pltfrm.c 文件 加入 cifpower 设定.
  1. void init_cif_power(struct device *dev)
  2. {
  3.         enum of_gpio_flags flags;
  4.         int cifpower_io;
  5.         int io_ret;
  6.        
  7.     cifpower_io = of_get_named_gpio_flags(dev->of_node, "rockchip,gpios-cifpower", 0, &flags);
  8.     cif_isp10_pltfrm_pr_info(dev,"1-gpios-cifpower: gpio=%d", cifpower_io);
  9.     if(gpio_is_valid(cifpower_io)) {
  10.         cifpower_io = of_get_named_gpio_flags(dev->of_node, "rockchip,gpios-cifpower", 0, &flags);
  11.         cif_isp10_pltfrm_pr_info(dev,"gpios-cifpower: gpio_request");
  12.         io_ret = gpio_request(cifpower_io,"cifpower");
  13.         cif_isp10_pltfrm_pr_info(dev,"1-gpios-cifpower: gpio_request=%d", io_ret);
  14.         if(io_ret < 0){
  15.             cif_isp10_pltfrm_pr_err(dev,"Request %s(%d) failed","cifpower", cifpower_io);
  16.         } else {
  17.             gpio_direction_output(cifpower_io, 1);
  18.             gpio_set_value(cifpower_io, 1);
  19.             cif_isp10_pltfrm_pr_info(dev,"gpios-cifpower: %d high", cifpower_io);
  20.         }
  21.     }
  22.         return;
  23. }
复制代码

在 cif_isp10_pltfrm_dev_init 函数中调用上面的函数.
然后重新编译并替换内核.
启动后查看启动信息如下:

  1. [    0.252170] iommu: Adding device ff910000.cif_isp to group 4
  2. [    0.252723] platform ff910000.cif_isp: iommu /iommu@ff914000 not found
  3. [    0.253310] iommu: Removing device ff910000.cif_isp from group 4
  4. [    1.975010] cif_isp10_v4l2_drv_probe: probing...
  5. [    1.975541] cif_isp10_pltfrm_dev_init(1249) ERR: could not get default pinstate
  6. [    1.976623] cif_isp10_pltfrm_dev_init WARN: could not get pins_sleep pinstate
  7. [    1.977252] cif_isp10_pltfrm_dev_init WARN: could not get pins_inactive pinstate
  8. [    1.977941] of_get_named_gpiod_flags: parsed 'rockchip,gpios-cifpower' property of node '/cif_isp@ff910000[0]' - status (0)
  9. [    1.977947] init_cif_power: 1-gpios-cifpower: gpio=54
  10. [    1.978425] of_get_named_gpiod_flags: parsed 'rockchip,gpios-cifpower' property of node '/cif_isp@ff910000[0]' - status (0)
  11. [    1.978454] init_cif_power: gpios-cifpower: gpio_request
  12. [    1.978939] init_cif_power: 1-gpios-cifpower: gpio_request=0
  13. [    1.979484] init_cif_power: gpios-cifpower: 54 high
  14. [    1.980060] iommu: Adding device ff910000.cif_isp to group 4
  15. [    1.980603] rkisp10 ff910000.cif_isp: Possibly a virtual device
  16. [    2.008084] cif_isp10_img_src_v4l2_i2c_subdev_to_img_src(59) ERR: failed with error -6
  17. [    2.008087] cif_isp10_img_src_to_img_src(70) ERR: to_img_src failed!
  18. [    2.008090] cif_isp10_img_src_to_img_src(78) ERR: failed with error -14
  19. [    2.008096] cif_isp10_img_srcs_init(1099) ERR: failed with error -14
  20. [    2.008099] cif_isp10_create(5772) ERR: cif_isp10_img_srcs_init failed
  21. [    2.008101] cif_isp10_create(5808) ERR: failed with error -14
复制代码


  1. linaro@linaro-alip:~$ dmesg | grep camera
  2. [    1.981743] of_get_named_gpiod_flags: parsed 'rockchip,pd-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  3. [    1.981767] of_get_named_gpiod_flags: parsed 'rockchip,pwr-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  4. [    1.981777] of_get_named_gpiod_flags: can't parse 'rockchip,flash-gpio' property of node '/i2c@ff110000/camera-module@20[0]'
  5. [    1.981787] of_get_named_gpiod_flags: can't parse 'rockchip,torch-gpio' property of node '/i2c@ff110000/camera-module@20[0]'
  6. [    1.981808] of_get_named_gpiod_flags: parsed 'rockchip,rst-gpio' property of node '/i2c@ff110000/camera-module@20[0]' - status (0)
  7. [    2.007420] ov13850.ov_camera_module_write_config(182) ERR: no active sensor configuration
  8. [    2.007421] ov13850.ov_camera_module_write_config(233) ERR: failed with error -14
  9. [    2.007725] ov13850.pltfrm_camera_module_read_reg(996) ERR: i2c read from offset 0x0000300a failed with error -6
  10. [    2.007888] ov13850.pltfrm_camera_module_read_reg(996) ERR: i2c read from offset 0x0000300b failed with error -6
  11. [    2.007893] ov13850.ov13850_check_camera_id(1820) ERR: register read failed, camera module powered off?
  12. [    2.007898] ov13850.ov13850_check_camera_id(1838) ERR: failed with error (-6)
  13. [    2.007945] ov13850.ov_camera_module_attach(256) ERR: failed with error -6
复制代码



i2c 通信并没有起来,希望大神能提供帮助.


作者: bywayboy    时间: 2018-6-1 02:31
阅读了一次原理图dts 修改后如下:

  1. // MIPI-CIF 位于主板正面外侧, (引脚参考原理图 J22)
  2.         camera0: camera-module@20 {
  3.                 status = "okay";
  4.                 compatible = "omnivision,ov13850-v4l2-i2c-subdev";
  5.                 reg = < 0x20 >;
  6.                 device_type = "v4l2-i2c-subdev";

  7.                 clocks = <&cru SCLK_CIF_OUT>;
  8.                 clock-names = "clk_cif_out";
  9.                 rockchip,camera-module-mclk-name = "clk_cif_out";
  10.                 rockchip,camera-module-dovdd = "1.8v";
  11.                

  12.                 pinctrl-names = "rockchip,camera_default", "rockchip,camera_sleep";
  13.                 pinctrl-0 = <&cam0_default_pins>;
  14.                 pinctrl-1 = <&cam0_sleep_pins>;

  15.                 /*GPIO2  B4 = 12 B6 = 14 MIPI0 D4 = 27 C7 = 23 */
  16.                 rockchip,pwr-gpio = <&gpio1 23 GPIO_ACTIVE_HIGH>;        /*Power                        GPIO1_C7 */
  17.                 rockchip,pd-gpio  = <&gpio2 12 GPIO_ACTIVE_LOW>;        /*Power Down        GPIO2_B4  OR GPIO2_D4 */

  18.                 // rst 硬件上拉 无需配置
  19.                 //rockchip,rst-gpio = <&gpio0 8 GPIO_ACTIVE_LOW>;                /*Reset                        GPIO0_B0 */
  20.                
  21.                 rockchip,camera-module-facing = "back";
  22.                 rockchip,camera-module-name = "cmk-cb0695-fv1";
  23.                 rockchip,camera-module-len-name = "lg9569a2";
  24.                 rockchip,camera-module-fov-h = "66.0";
  25.                 rockchip,camera-module-fov-v = "50.1";
  26.                 rockchip,camera-module-orientation = <0>;
  27.                 rockchip,camera-module-iq-flip = <0>;
  28.                 rockchip,camera-module-iq-mirror = <0>;
  29.                 rockchip,camera-module-flip = <0>;
  30.                 rockchip,camera-module-mirror = <0>;

  31.                 rockchip,camera-module-defrect0 = <3264 2448 0 0 3264 2448>;

  32.                 rockchip,camera-module-flash-support = <0>;                        /*闪光灯控制开关*/
  33.                 rockchip,camera-module-mipi-dphy-index = <0>;                /*MIPI 接口索引*/
  34.         };
复制代码
  1. &cif_isp0 {
  2.         rockchip,camera-modules-attached = <&camera0>;
  3.         rockchip,gpios-cifpower = <&gpio1 22 GPIO_ACTIVE_HIGH>;

  4.         status = "okay";
  5. };


  6. &isp0_mmu {
  7.     status = "okay";
  8. };
复制代码

但还是不行,请大神们指点下.

作者: bywayboy    时间: 2018-6-4 08:14
I2C SLAVE 地址修改位 0x10 工作良好
作者: Chary    时间: 2018-6-13 10:39
楼主很厉害,不知道有没有尝试过两路MIPI同时使用摄像头
作者: bywayboy    时间: 2018-6-15 21:49
暂时没有尝试过.
作者: RICHYDUAN    时间: 2018-6-21 10:11
按照楼主20180601的配置,I2C SLAVE 地址修改位 0x10,mipi摄像头接到 J22就可以工作了么
作者: Galenzhang    时间: 2018-6-22 09:56
RICHYDUAN 发表于 2018-6-21 10:11
按照楼主20180601的配置,I2C SLAVE 地址修改位 0x10,mipi摄像头接到 J22就可以工作了么

修改了一下,内核无限重启了。。。
作者: RICHYDUAN    时间: 2018-6-22 13:34
楼主,参照你的配置,J22这个摄像头i2c可以通信了,但现在的问题是,如果要把摄像头接到J24,I2C SLAVE 地址改成0x6C不能通信,另一路摄像头I2C SLAVE地址应该改成多少呢
作者: bywayboy    时间: 2018-6-27 15:59
RICHYDUAN 发表于 2018-6-22 13:34
楼主,参照你的配置,J22这个摄像头i2c可以通信了,但现在的问题是,如果要把摄像头接到J24,I2C SLAVE 地 ...

我也没试过。
作者: RICHYDUAN    时间: 2018-6-29 09:25
楼主,想确认一下,J24的rockchip pd-gpio,也就是 GPIO2  D4 应该配置成27还是28?
作者: 雾都大帝    时间: 2018-8-24 13:41
bywayboy 发表于 2018-6-4 08:14
I2C SLAVE 地址修改位 0x10 工作良好

楼主,ubuntu下怎么测试写好的驱动mipi摄像头的?有写好的demo应用程序吗
作者: ccn422    时间: 2018-9-8 16:34
请教楼主,谢谢!
1.  下述错误如何解决?
[    3.293800] ov13850.ov_camera_module_write_config(182) ERR: no active sensor configuration
[    3.293800] ov13850.ov_camera_module_write_config(233) ERR: failed with error -14
2. 用什么应用程序测试摄像头?VLC吗?
作者: beginner    时间: 2018-9-21 11:05
本渣参考楼主的修改,然额并没有成功,请帮忙分析一下原因:
[   13.151931] sensor_register_slave:mpu6880_gyro,id=50
[   13.153400] cif_isp10_v4l2_drv_probe: probing...
[   13.153853] init_cif_power: 1-gpios-cifpower锛? gpio=-2
[   13.154416] cif_isp10_pltfrm_dev_init(1248) ERR: could not get default pinstate
[   13.155099] cif_isp10_pltfrm_dev_init WARN: could not get pins_sleep pinstate
[   13.155733] cif_isp10_pltfrm_dev_init WARN: could not get pins_inactive pinstate
[   13.158413] mmc1: new HS400 Enhanced strobe MMC card at address 0001
[   13.159824] mmcblk1: mmc1:0001 AJTD4R 14.6 GiB
[   13.160963] mmcblk1boot0: mmc1:0001 AJTD4R partition 1 4.00 MiB
[   13.162180] mmcblk1boot1: mmc1:0001 AJTD4R partition 2 4.00 MiB
[   13.163398] mmcblk1rpmb: mmc1:0001 AJTD4R partition 3 4.00 MiB
[   13.164529]      uboot: 0x000400000 -- 0x000800000 (4 MB)
[   13.165024]      trust: 0x000800000 -- 0x000c00000 (4 MB)
[   13.165514]   resource: 0x000c00000 -- 0x001c00000 (16 MB)
[   13.166014]     kernel: 0x001c00000 -- 0x003000000 (20 MB)
[   13.166508]     backup: 0x003000000 -- 0x003400000 (4 MB)
[   13.166997]       boot: 0x003400000 -- 0x3a3a00000 (14854 MB)
[   13.167548]  mmcblk1: p1 p2 p3 p4 p5 p6
[   13.175761] usb 1-1: new high-speed USB device number 2 using ehci-platform
[   13.183145] ov13850.ov_camera_module_write_config(182) ERR: no active sensor configuration
[   13.183867] ov13850.ov_camera_module_write_config(233) ERR: failed with error -14
[   13.184785] ov13850.pltfrm_camera_module_read_reg(1007) ERR: i2c read from offset 0x0000300a failed with error -6
[   13.185883] ov13850.pltfrm_camera_module_read_reg(1007) ERR: i2c read from offset 0x0000300b failed with error -6
[   13.186803] ov13850.ov13850_check_camera_id(1820) ERR: register read failed, camera module powered off?
[   13.187628] ov13850.ov13850_check_camera_id(1838) ERR: failed with error (-6)
[   13.188298] ov13850.ov_camera_module_attach(256) ERR: failed with error -6
[   13.188942] cif_isp10_img_src_v4l2_i2c_subdev_to_img_src(59) ERR: failed with error -6
[   13.189633] cif_isp10_img_src_to_img_src(70) ERR: to_img_src failed!
[   13.190203] cif_isp10_img_src_to_img_src(78) ERR: failed with error -14
[   13.190797] cif_isp10_img_srcs_init(1099) ERR: failed with error -14
[   13.191360] cif_isp10_create(5772) ERR: cif_isp10_img_srcs_init failed
[   13.191943] cif_isp10_create(5808) ERR: failed with error -14
作者: Pokemon    时间: 2018-10-17 08:28
楼主厉害,想问下摄像头接口调通了,应该怎么做测试呢?
作者: Pokemon    时间: 2018-10-17 08:30
ccn422 发表于 2018-9-8 16:34
请教楼主,谢谢!
1.  下述错误如何解决?
[    3.293800] ov13850.ov_camera_module_write_config(182)  ...

想问下摄像头该怎么测试呢
作者: leung先森    时间: 2018-10-17 09:56
Pokemon 发表于 2018-10-17 08:28
楼主厉害,想问下摄像头接口调通了,应该怎么做测试呢?

官方都已经出了支持OV13850的固件了{:4_94:}
作者: Pokemon    时间: 2018-10-17 10:40
leung先森 发表于 2018-10-17 09:56
官方都已经出了支持OV13850的固件了

想用在Ubuntu系统下,内核改好了,想做个测试
作者: leung先森    时间: 2018-10-18 15:31
Pokemon 发表于 2018-10-17 10:40
想用在Ubuntu系统下,内核改好了,想做个测试

ubuntu下应该是不行的,没有64位的ISP库
作者: Pokemon    时间: 2018-11-8 10:26
leung先森 发表于 2018-10-18 15:31
ubuntu下应该是不行的,没有64位的ISP库

debian下 能用opencv的videocapture调用摄像头吗?
作者: rv120827    时间: 2019-7-30 11:06
Pokemon 发表于 2018-10-17 10:40
想用在Ubuntu系统下,内核改好了,想做个测试

请问你的内核是怎么改的
作者: 15916286640    时间: 2019-10-17 16:21
我也没成功,反复提示
[    1.311299] Error: Driver 'ov13850' is already registered, aborting...

作者: mangguogege    时间: 2019-12-8 22:09
按照楼主的方法调通了,棒
作者: Sirius    时间: 2022-7-23 00:17
abcxyztt 发表于 2022-7-22 13:49
已经在3399 Ubuntu18.04 调通了双OV13850 摄像头

大佬能分享下吗,该怎么通两路呢?目前只能通一路,而且一使用就会死机。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1