mx8mplus MIPI CSI "Interrupt source register 0" ERR_LOST_FS

cancel
Showing results for 
Search instead for 
Did you mean: 

mx8mplus MIPI CSI "Interrupt source register 0" ERR_LOST_FS

215 Views
marioschuknecht
Contributor I

What can be the cause of the MIPI CSI error ERR_LOST_FS "...image data is received without frame start packet."?

Description

  • adv7280-m is connected to the mx8mplus via MIPI CSI
  • adv7280-m sends PAL data
  • 50 times per second the interrupt handler in file drivers/staging/media/imx/imx8-mipi-csi2-sam.c is called with Bit 12 (ERR_LOST_FS) set in register 0x14 ("Interrupt source register 0")

What could be the reason for this?

 

Thanks in advance

Mario

0 Kudos
6 Replies

192 Views
Qmiller
NXP Employee
NXP Employee

From the description of register, it shows that MIPI CSI don't recevice a frame start packet in your image data. You need check your image data why it doesn't contain frame start packet.

If your driver is correct , you should use oscilloscope to see your signal received in MIPI CSI.

Qmiller_0-1655099266357.png

 

0 Kudos

187 Views
marioschuknecht
Contributor I

I have also suspected this.

The test of the MIPI CSI-2 lines with an oscilloscope corresponds to the adv7280-m specification.

The oscilloscope is not a protocol analyzer, it cannot check whether a start packet was sent.

However, 50 half frames per second are received in user space.

And the error bit 0x8 ERR_LOST_FE is never set.

There is no reason that the adv7280-m sends the frame end packet but not the frame start packet.

 

Can something be configured on the mx8mplus?

0 Kudos

165 Views
Qmiller
NXP Employee
NXP Employee

How do you test in userspace? Can you share the command you use?

0 Kudos

157 Views
marioschuknecht
Contributor I

 

gst-launch-1.0 -v v4l2src ! video/x-raw,width=720,height=576 ! waylandsink sync=false

The images can be seen on a display.

0 Kudos

144 Views
Qmiller
NXP Employee
NXP Employee

Hi @marioschuknecht 

 

I can find similiar PAL issue about adv7182 in internal.

Are you losing frames on your video screen? You need to count how many frames your command is actually displaying.

Can you share the full log about gst?

 

You can try below command:

gst-launch-1.0 v4l2src io-mode=4 device=/dev/video0 ! video/x-raw,framerate=30/1,format=UYVY ! imxvideoconvert_g2d ! queue ! waylandsink name=sink window-width=720 window-height=576 sync=false

 

0 Kudos

133 Views
marioschuknecht
Contributor I

The following command with output of the fps.

gst-launch-1.0 -v v4l2src device=/dev/video2 io-mode=4 ! video/x-raw,width=720,height=576,framerate=25/1 ! imxvideoconvert_g2d ! queue ! fpsdisplaysink sync=false video-sink=waylandsink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/imxvideoconvert_g2d:imxvideoconvert_g2d0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:video_sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/imxvideoconvert_g2d:imxvideoconvert_g2d0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false

 

Even after 5 minutes the full 50 fps are displayed. There is no frame loss.

/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 15353, dropped: 0, current: 50.11, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay: text = rendered: 15378, dropped: 0, current: 49.62, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 15378, dropped: 0, current: 49.62, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay: text = rendered: 15404, dropped: 0, current: 49.95, average: 50.01

 

The adv7280-m is in progressive mode and sends 50 full frames per second. But the error bit ERR_LOST_FS is still set.

We are designing a new board and want be sure that threre will be no problems later.

0 Kudos