WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-10-25 09:46:56

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

全志A40I的video*切换问题?

说明:安卓系统:Android M
        芯片:全志A40I
   
难点说明:在全志的A40I中,预留了三组摄像头。uvc  tvin   csi。 在内核注册的时候默认将video0 留给UVC。
              将video2留给CSI的摄像头。将video4留给tvin的摄像头。
                现在问题就是说,我手上没有接出来TVIN的摄像头,也没有UVC的USB摄像头。只有一个CSI的OV5640的摄像头。

               但是存在一个问题就是,系统默认调用的是UVC的摄像头如果这个UVC摄像头没有的话,就会去调用TVIN的摄像头。就是没有CSI的份
               当在安卓系统点击照相机的时候总是会提示打开相机失败,然后提示TVIN驱动代码打印出,连接TVIN总线失败。没办法自动转化到CSI摄像头


               需要大家帮忙一下怎么调为安卓系统默认打开就是CSI(OV5640)的摄像头,而不是UVC或者是TVIN摄像头。

                 UVC    =   video0  (默认)
                 CSI     =    video2 
                 tvin     =   video4 (次默认)
             请问一下大家要修改那个文件,才将这个顺序给调换一下。点击安卓系统的相机应用的时候,默认调用的是CSI摄像头。而不是所谓UVC或者是TVIN
             查找了config文件,发现A40I的系统下面居然找不到。心碎+N
     
            特意发帖子请教一下大家。 在此感谢

离线

#2 2019-10-25 10:00:25

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

按全志的惯例, 可能是改 sys_config.fex 文件.

但是你可以先把 /dev/video0 删除, 然后建立一个 /dev/video2 到 /dev/video0 的软链接:

rm /dev/video0
ln /dev/video0 /dev/video2 -s  ###或者: ln /dev/video2 /dev/video0 -s

离线

#3 2019-10-25 14:14:48

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

按全志的惯例, 可能是改 sys_config.fex 文件.

但是你可以先把 /dev/video0 删除, 然后建立一个 /dev/video2 到 /dev/video0 的软链接:

rm /dev/video0
ln /dev/video0 /dev/video2 -s  ###或者: ln /dev/video2 /dev/video0 -s





感谢晕哥  的确是可以这样用的。一打开这个东西就会出现mclk。 但是也同时提示我说

[  383.006632] [VFE_ERR]bsp_csi_set_fmt error at sunxi_csi_subdev_set_fmt!
[  383.014074] [VFE_ERR]v4l2 sub device csi set_fmt error!

这个是不是我的设置的时钟频率有问题啊

离线

#4 2019-10-25 14:24:40

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

可能是你的摄像头不支持某些像素格式, 而CPU正在依次检查, 不支持就跳过测试下一个。

以上纯属猜测。

离线

#5 2019-10-25 18:28:59

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

可能是你的摄像头不支持某些像素格式, 而CPU正在依次检查, 不支持就跳过测试下一个。

以上纯属猜测。



晕哥  通过修改 media_profiles.xml这个错误就不在出现了那个仅仅是不支持里面的某一种格式吧。  当我按照你的想法软连接过去的

正常点开拍照应用卡着在那里,主时钟一直给出来,I2C也在持续的发信息过去。 但是唯独没有PCLK产生和图像传回来。  是不是配置出现了问题。导致
采集数据回不来啊

离线

#6 2019-10-25 19:52:47

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

MCLK是有源晶体产生的,还是CPU提供的?

离线

#7 2019-10-26 11:17:54

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

MCLK是有源晶体产生的,还是CPU提供的?





我的是适用CPU提供的时钟。  开机上电都是有具体的电源。 点击相机应用的时候就出现了主时钟。但是就是一直卡在这个相机应用里面,系统也可以回到桌面。等待了好久之后就会发现相机获取回来的图像全部都是绿色的。并且点击拍照的时候居然还提示:一下的打印信息。
然后还带有PCLK时钟返回来。摄像头是OV5640的我想是不是我设置获取的数据太大了,还有设置的一些东西不正确导致他获取回来的数据都是绿色的。

[  880.610078] [OV5640]s_fmt set width = 1600, height = 1200
[  880.617066] csi->frame_info.frm_byte_size = 2880000
[  880.622997] [VFE]queue_setup, buffer count=1, size=2880000
[  880.904861] [VFE]capture image mode!
[  881.150136] [OV5640]s_fmt set width = 640, height = 480
[  881.156688] csi->frame_info.frm_byte_size = 460800
[  881.162965] [VFE]queue_setup, buffer count=8, size=460800
[  881.405738] [VFE]capture video mode!
[  881.561215] [VFE]capture video first frame done!

最近编辑记录 2505300733 (2019-10-26 11:18:39)

离线

#8 2019-10-26 11:43:08

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

要不你改一下, 一直提供 MCLK 试一试, 或者改软件不方便就怼一个有源晶体上去。

先排除这些问题感染方便进一步调试。

离线

#9 2019-10-26 11:45:41

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

要不你改一下, 一直提供 MCLK 试一试, 或者改软件不方便就怼一个有源晶体上去。

先排除这些问题感染方便进一步调试。



MCLK一直都是有的。但是PCLK检测出来的时钟居然和MCLK是一样的频率。 这个就很是奇怪。 PCLK应该是MCLK的时钟的一半才对,发回来的数据一直有问题。

离线

#10 2019-10-26 12:00:00

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

那硬件有问题了, PCLK 是根据设置之后产生的像素时钟, 和MCLK 频率不同。

离线

#11 2019-10-28 14:39:50

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

那硬件有问题了, PCLK 是根据设置之后产生的像素时钟, 和MCLK 频率不同。


晕哥  video2软连接引用过去video0 ,但是video0默认是UVC的摄像头。那么配置的参数应该也是UVC的。 这个会不会就是导致传输回来的图像有问题呢? 毕竟安卓层也会对video0多多少少有配置。
    现在理想就是在内核层将video0注册的UVC摄像头换成CSI的,但是关于全志芯片的这种操作我没有了解过,请问晕哥有没有操作过。 在内核到安卓层将video0配置模式等 全部配置成CSI摄像头。

离线

#12 2019-10-28 14:43:00

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,155

Re: 全志A40I的video*切换问题?

理论上没有问题,因为不管是什么摄像头,都是用 v4l2 接口操作。

离线

#13 2019-10-28 15:04:34

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

晕哥 说:

理论上没有问题,因为不管是什么摄像头,都是用 v4l2 接口操作。



我的想法和您也是一样的,但是都是操作V4L2接口,首先软连接过去之后,点击安卓拍照应用,一开始主时钟出来了但是APP一直卡在哪里,只有用手短路一下帧同步脚就会出现PCLK和显示绿色的图像.不然一直卡在打开应用的位置。打印信息如下屏幕是(12寸的 ,1280*800)(摄像头是OV5640)
--------------------------------------------------------------------------------
[VFE]vfe_open
[VFE]vfe_runtime_resume
[VFE]..........................vfe clk open!.......................
[VFE]vfe_open ok
[VFE]Set csi core clk = 324000000, after Set csi core clk = 300000000
[VFE]mclk on
[OV5640]s_fmt set width = 640, height = 480
csi->frame_info.frm_byte_size = 460800
[VFE]queue_setup, buffer count=8, size=460800


(在拍照模式下用手短路之后就会提示以下数据操作)
[OV5640]s_fmt set width = 640, height = 480
csi->frame_info.frm_byte_size = 460800
[VFE]queue_setup, buffer count=8, size=460800
[VFE]capture video mode!  (视频模式)
[VFE]capture video first frame done!

这个就是很奇怪了。
-----------------------------------------------------------------------------------
之后点击拍照,也可以获取到图像,相册也可以看得到绿色图,PCLK也有出现。   难道是我模式没有选对,没有拍照默认所以才一直卡在这个位置

离线

#14 2019-10-28 15:14:02

我思故我在
会员
注册时间: 2019-09-03
累计积分: 135

Re: 全志A40I的video*切换问题?

如果接 USB 摄像头正常吗?

离线

#15 2019-10-28 15:21:21

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

我思故我在 说:

如果接 USB 摄像头正常吗?

嗯嗯 调了好久   后来买了一个USB摄像头调  USB摄像头是可以用的。

最近编辑记录 2505300733 (2019-10-28 15:32:26)

离线

#16 2019-10-28 15:25:09

我思故我在
会员
注册时间: 2019-09-03
累计积分: 135

Re: 全志A40I的video*切换问题?

那建议先改下应用层的软件, 把默认值 video0(uvc) 改成 video2(csi)

离线

#17 2019-10-28 15:39:49

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

我思故我在 说:

那建议先改下应用层的软件, 把默认值 video0(uvc) 改成 video2(csi)


具体的路径找不到。修改其默认给应用打开的摄像头

离线

#18 2019-10-28 16:00:15

我思故我在
会员
注册时间: 2019-09-03
累计积分: 135

Re: 全志A40I的video*切换问题?

用这个命令搜搜源码或者配置文件: grep /dev/video -r .

离线

#19 2019-10-28 21:34:26

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

我思故我在 说:

用这个命令搜搜源码或者配置文件: grep /dev/video -r .


这个撒的网,搞了一下午。没有找到根本原因修改。出错太多。还是安卓7.1.1这个系统不太像以往的系统,奇奇怪怪的.
大哥 按照您的方法来找对于不太熟悉这个版本的我来说太心碎了。 
最讨厌的是全志系统都更新到现在,给的手册还都是复制以前。太他吗的坑爹了有些配置明显是错误的也不改正。 恶心得要死。

最近编辑记录 2505300733 (2019-10-28 21:35:21)

离线

#20 2019-10-28 22:55:40

2505300733
会员
注册时间: 2019-10-24
累计积分: 22

Re: 全志A40I的video*切换问题?

2505300733 说:

说明:安卓系统:Android M
        芯片:全志A40I
   
难点说明:在全志的A40I中,预留了三组摄像头。uvc  tvin   csi。 在内核注册的时候默认将video0 留给UVC。
              将video2留给CSI的摄像头。将video4留给tvin的摄像头。
                现在问题就是说,我手上没有接出来TVIN的摄像头,也没有UVC的USB摄像头。只有一个CSI的OV5640的摄像头。

               但是存在一个问题就是,系统默认调用的是UVC的摄像头如果这个UVC摄像头没有的话,就会去调用TVIN的摄像头。就是没有CSI的份
               当在安卓系统点击照相机的时候总是会提示打开相机失败,然后提示TVIN驱动代码打印出,连接TVIN总线失败。没办法自动转化到CSI摄像头


               需要大家帮忙一下怎么调为安卓系统默认打开就是CSI(OV5640)的摄像头,而不是UVC或者是TVIN摄像头。

                 UVC    =   video0  (默认)
                 CSI     =    video2 
                 tvin     =   video4 (次默认)
             请问一下大家要修改那个文件,才将这个顺序给调换一下。点击安卓系统的相机应用的时候,默认调用的是CSI摄像头。而不是所谓UVC或者是TVIN
             查找了config文件,发现A40I的系统下面居然找不到。心碎+N
     
            特意发帖子请教一下大家。 在此感谢











收到“我思故我在”这位老哥启示之后,我就去A40i_dir/AWW40I_DVK/hardware/aw/camera/V4L2CameraDevice2.cpp这个文件里面
发现以下这段话

1835     // open V4L2 device
               LOGD(“AAAAAAA  This is a sign  in   my  \n ”) ;  //我在这里做一个标志
1836     if((access(halInfo->device_name, F_OK)) == 0)
1837     { LOGD(“ HELLO  MY IN access(halInfo->device_name, F_OK)    \n ”); // 发现没有进入到这里面来
1838         strcpy(dev_node,halInfo->device_name);
1839         LOGD("openCameraDev device_name origin:%s",dev_node);
1840     }
1841     else
1842     {
1843         for(int i = 4; i < MAX_NUM_OF_CAMERAS; i++)
1844         {
1845             sprintf(dev_node, "/dev/video%d", i);
1846             ret = access(dev_node, F_OK);
1847             if(ret == 0)
1848             {
1849                 break;
1850             }
1851         }
1852         LOGD("openCameraDev device_name:%s",dev_node);
1853     }

在这的基础上面我去到在启动这个函数的前面做一个标志:方便打印LOG出来到那一步
然后修改下面代码:并且我在上面的代码里面做一个标志位 发现 if((access(halInfo->device_name, F_OK)) == 0)没有成立。
*
*  for(int i = 4; i < MAX_NUM_OF_CAMERAS; i++)
*     {
*          sprintf(dev_node, "/dev/video%d", i);
*            ret = access(dev_node, F_OK);
*          if(ret == 0)
*          {
*              break;
*          }
*
修改代码如下,因为在内核打印信息里面我看到CSI的ov5640注册的设备为video2我试着强行将其打开为这个
+  for(i = 2;i<=2 ;i++)
+{ 
+     sprintf(dev_node, "/dev/video%d", i);
+      ret = access(dev_node, F_OK);
+     if(ret == 0) {
+       break;
+      }
+ }
+
开机的时候没住到内核居然打印出这种错误:
[   63.067643] [VFE]vfe_open
[   63.070654] [VFE]vfe_runtime_resume
[   63.086356] [VFE]..........................vfe clk open!.......................
[   63.094632] [VFE]vfe_open ok
[   63.098219] [VFE]Set csi core clk = 324000000, after Set csi core clk = 300000000
[   63.120722] [VFE]mclk on
[   63.193809] sunxi_i2c_do_xfer()906 - [i2c3] incomplete xfer (status: 0x20, dev addr: 0x3c)
[   63.203239] [VFE_DEV_I2C_ERR]cci_read_a16_d8 error! slave = 0x3c, addr = 0x300a, value = 0x 0

[   63.213055] sunxi_i2c_do_xfer()906 - [i2c3] incomplete xfer (status: 0x20, dev addr: 0x3c)
[   63.222678] [VFE_DEV_I2C_ERR]cci_read_a16_d8 error! slave = 0x3c, addr = 0x300a, value = 0x 0

[   63.232515] sunxi_i2c_do_xfer()906 - [i2c3] incomplete xfer (status: 0x20, dev addr: 0x3c)
[   63.241962] [VFE_DEV_I2C_ERR]cci_read_a16_d8 error! slave = 0x3c, addr = 0x300a, value = 0x 0
ov5640 sensor read retry=2
[   63.254254] [OV5640]error at sensor_detect
[   63.258735] [OV5640]chip found is not an target chip.
[   63.264903] [VFE_ERR]sensor initial error when selecting target device!
[   63.272456] [VFE]vfe_close
[   63.275431] [VFE]mclk off
[   63.314700] [VFE]vfe_runtime_suspend
[   63.318633] [VFE]..........................vfe clk close!.......................
[   63.333007] [VFE]vfe_close end

并且在我每次几点拍照功能的时候就会提示出以下错误:

[12739.846050] [VFE]vfe_open
[12739.848981] [VFE]vfe_runtime_resume
[12739.865745] [VFE]..........................vfe clk open!.......................
[12739.874064] [VFE]vfe_open ok
[12739.877463] [VFE_ERR]set input i(1)>dev_qty(1)-1 error!
[12739.883713] [VFE]vfe_close
[12739.886718] [VFE]vfe select input flag = 0, s_input have not be used .
[12739.894279] [VFE]vfe_runtime_suspend
[12739.898217] [VFE]..........................vfe clk close!.......................
[12739.913271] [VFE]vfe_close end
[12740.271792] [VFE]vfe_open
[12740.274797] [VFE]vfe_runtime_resume
[12740.291287] [VFE]..........................vfe clk open!.......................
[12740.299425] [VFE]vfe_open ok
[12740.303066] [VFE_ERR]set input i(1)>dev_qty(1)-1 error!
[12740.309143] [VFE]vfe_close
[12740.312564] [VFE]vfe select input flag = 0, s_input have not be used .
[12740.319861] [VFE]vfe_runtime_suspend
[12740.329032] [VFE]..........................vfe clk close!.......................
[12740.344394] [VFE]vfe_close end


我也是日了狗了,这个芯片真是醉了。

离线

页脚