cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
hud789
Participant
Participant
600 Views
Registered: ‎04-24-2019

Video stream stopped when a custom IP is configured when running with gstreamer on Petalinux

Jump to solution

Hello,

I have a Video processing pipeline designed to run on ZCU106. The pipeline diagram is posted below. I have a HDMI Rx in, the format and resolution is converted through a VPSS and data are written to DDR by a frame buffer write. Then the data are read by a frame buffer read, processed by our custom IP, written back to DDR again and then displayed on DP port.  Our custom IP has a wired port to GPIO to configure the rows and columns of the video frame. The GPIO has a default setting of 1920x1080. We built boot SD card image with Petalinux and it booted well.

If we configure the VPSS output as 1920x1080 and run acquisition with gstreamer, the whole pipeline works fine. However, if we change the GOIP value to 1280x720, then configure the VPSS output as 1280x720 accordingly and run acquisition, the pipeline stop working. The stream frame rate drops to zero.

To make sure our custom IP works for 1280x720, we set the GPIO default value to 1280x720 and rebuilt, This time, when setting VPSS to 1280x720 after power on and do acquisition with gstreamer, the pipeline works. The frame rate drops to zero when we configure everything to 1080. 

It seems it is configuration timing issue since it only works for the resolution of GPIO default setting when booted petalinux. FBR and FBW reset are hooked up to EMIO like TRD design. C_IP reset is hooked up to GPIO.

Anyone have any ideas?

 

Thanks 

hud789_0-1604066189871.png

 

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
hud789
Participant
Participant
327 Views
Registered: ‎04-24-2019
Added a user controlled reset signal to my custom IP, as well as adding register slice before and after the custom IP resolved the issue. Whenever the resolution is changed, the custom IP is reset by user application.

View solution in original post

0 Kudos
5 Replies
florentw
Moderator
Moderator
508 Views
Registered: ‎11-09-2015

HI @hud789 

Well. It sounds like this is an issue with your IP.

You would say start by adding an ILA after the GPIO to make sure the configured value is correct.

Then you might need to dig deeper into your ip.

Then if you want to avoid thinking about the VPSS, just create a buffer in memory that you read to (so you only use the mem to mem path)

I am not sure what else I can tell you. You need to understand why your IP is not working. So you might want to simulate it, add ILA into it etc...


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
hud789
Participant
Participant
440 Views
Registered: ‎04-24-2019
Thanks Moderator.

I tested my IP on Bare metal build and it worked fine with all resolutions. And as I mentioned, It also worked on petalinux build if the resolution if set as default value of the goip, no matter what it is.

I explored the vcu_trd design document and found that the vpss and frame buffer read/write are reset while the resolution is changed. I don't see this in my design. My design is pretty same as the trd, with rest signal connected to emoi gpio. I tried to change the reset signal with
echo 380 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio380/direction
echo 0 > /sys/class/gpio/gpio380/value
But I received an error message telling me the device is busy. Seems like device driver is controlling it, but it won't toggle while setting the resolution. Any comments?
Thanks
florentw
Moderator
Moderator
434 Views
Registered: ‎11-09-2015

HI @hud789 

Maybe try to disable the driver and control the GPIO IP from the userspace


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
florentw
Moderator
Moderator
363 Views
Registered: ‎11-09-2015

HI @hud789 

Do you have any update on this?


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
hud789
Participant
Participant
328 Views
Registered: ‎04-24-2019
Added a user controlled reset signal to my custom IP, as well as adding register slice before and after the custom IP resolved the issue. Whenever the resolution is changed, the custom IP is reset by user application.

View solution in original post

0 Kudos