Vim3 ubuntu camera移植

我现在想移植一个摄像头,通过mipi-csi接口,请问如何调试呢?目前摄像头部分的csi接口是有信号输出的,但是isp_module部分没有输出,我应该在哪里查看csi是否接收到数据了呢?

@numbqq
请问您知道不,我在isp_module中没有找到数据是在哪里接收的。

Hello @aspire

系统里面自带了测试程序可以预览图像v4l2_test

参考:https://docs.khadas.com/vim3/HowToUseMIPICamera.html

谢谢 @numbqq
v4l2_test我有在用,目前的问题是,我希望能调试内核中的驱动isp_module,因为示波器中是可以看到摄像头的mipi-csi接口有数据输出,但是v4l2_test代码中无法得到帧数据,我无法定位是哪里出现了问题,因此我想查看数据在驱动中的流动情况,但是我找不到应该去哪里查看。

@aspire

这里有测试程序的源码,你可以看看这里面是怎么获取数据的

谢谢回复 @Frank
源码我是有的,问题并不是出现在应用层,使用移植的摄像头,v4l2_test的poll函数就超时了,没有接收到数据,因此我想查看驱动部分,但是我没有在isp_module驱动中找到数据是怎么从csi传输的,所以我无法定位问题。

所有的驱动代码都在drivers/amlogic/isp_module下,你可以跟一下代码。

@aspire
csi相关的主要在这个文件里

isp_module/subdev/sensor/src/platform/system_am_mipi.c

@numbqq
我已经看了几天isp_module的代码了,但是没有找到数据流的起始位置,摄像头的csi接口是有输出的,我不清楚是接收端的csi没有接到数据,还是说接到数据在向isp传输的时候哪里出现了问题,导致应用层没有数据。
求指导,能简单说下数据是怎么从csi传输的就好,让我可以跟踪。

谢谢 @Frank
这个文件我看过了,我理解这里只是设置了csi相关的寄存器。
我怎么才能确定摄像头的数据经过csi接收到了驱动里呢?

@aspire isp_module/subdev/sensor/src/driver/sensor/OV08a10_drv.c里面有个start_streaming函数,你可以跟一下这个函数是怎么实现的

谢谢回复 @Frank
我知道这个函数,其中的sensor_set_iface函数进行了配置,包括对摄像头的配置以及接收端的配置;acamera_sbus_write_u8函数实际调用了I2C,通知摄像头发送数据。
我想知道的是数据从摄像头传输之后,接收端的csi是如何获取数据的呢,之后数据又传输到了哪里?因为目前我能够确定摄像头确实有数据输出,但是应用层接收不到数据,因此想知道在哪里出现了问题,目前不清楚这部分代码在哪里。

@aspire 这部分应该是在应用层了,不在驱动层了.

@Frank 应用层没有什么可以调试的呀,只有poll函数超时这种现象,实际上是驱动层没有把数据传输到应用层,所以我想知道数据是在哪个地方停住了,目前没有思路。

希望得到任何帮助
:flushed: :flushed: :flushed: :flushed: :flushed:

poll超时大概率是接收端mipi csi的配置和camera发送端mipi csi的配置不匹配,使得接收端没法读到数据。

@qihang 感谢回复,问题已经解决了,是mipi csi的时钟信号反向导致的。

您好,我可能碰到和您同样的问题了,请问您能详细说下吗?是需要修改host端的mipi配置吗

我的问题其实是在摄像头端,vim上的配置都没有改,用的就是例程,是摄像头端输出的mipi csi数据时钟有问题导致接收不到数据,所以可能对您的问题没有什么帮助。