一、ISP CAMERA数据流图:

基于NXP平台调试ISP CAMERA_数据

 二、调试步骤:

1、先查看sensor到csi mipi之间是否正常。

此出可以通过读取以下寄存器来判断是否有数据(IMX8MPRM)

0x32e40000是CSI的寄存器值。


0x32ec0000是MEDIA BLK_CTRL的值


(MEDIAMIX 域包含称为媒体块控制 (MEDIA BLK_CTRL) 的控制和状态寄存器。 这些寄存器对 MEDIAMIX 域内的外设具有各种顶级控制)



基于NXP平台调试ISP CAMERA_寄存器_02

 

基于NXP平台调试ISP CAMERA_寄存器_03

 

基于NXP平台调试ISP CAMERA_stm32_04

 

基于NXP平台调试ISP CAMERA_stm32_05

 查看这两个寄存器是否有变化,判断是否有数据增加,如果增加,就说明收到数据。

 

基于NXP平台调试ISP CAMERA_寄存器_06

 

基于NXP平台调试ISP CAMERA_寄存器_07

 

2、查看csi mipi到ISP之间是否正常。

kernel-module-isp-vvcam\4.2.2.13.0-r0\git\vvcam\isp\isp_isr.c

查看irqreturn_t isp_hw_isr(int irq, void *data)是否有中断,是否有跑到此函数update_dma_buffer().

如果有中断并且执行了update_dma_buffer(),说明isp收到数据。

if (mi_mis & frameendmask)
rc = update_dma_buffer(dev);

3、ISP到dewrap之间是否正常。

kernel-module-isp-vvcam\4.2.2.13.0-r0\git\vvcam\dwe\dwe_isr.c

irqreturn_t dwe_hw_isr(int irq, void *data)是否有中断,

status = dwe_read_reg(dev, INTERRUPT_STATUS);
if (status & INT_FRAME_DONE) {
clr = (status & 0xFF) << 24;
dwe_write_reg(dev, INTERRUPT_STATUS, clr);
spin_lock_irqsave(&dev->irqlock, flags);
if (dev->dst) {
vvbuf_ready(dev->src_bctx[dev->index],
dev->dst->pad, dev->dst);
dev->dst = NULL;
}
update_dma_buffer(dev);
spin_unlock_irqrestore(&dev->irqlock, flags);
}

4、dewrap到v4l2之间是否正常。

直接执行

v4l2-ctl -d2 --verbose --set-fmt-video=width=1280,height=720,pixelformat=BG10 --stream-mmap --stream-count=1 --stream-to=d1.raw