cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
881 Views
Registered: ‎04-20-2017

AXI VDMA PARK_PTR issue

Jump to solution

in my current projects I am using AXI VDMA as part of a petalinux system. The core is mapped as UIO device and IRQ are handled by linux

 

Image Sensor frames are made into an axi stream by the xilinx video_to_axi core and VDMA is used to write the frames into memory.

 

It is mission critical that all frames get processed and to know which frame is where in memory.

 

By now I use PARK_PTR mode, whenever a frame is written, I use the VDMA FrameCountIRQ (which is set to 1) to set the PARK_PTR for the next free framebuffer (there is some software logic that determines which are free and which are occupied)

 

It works most of the time. But in about 1/45000 frames, the VDMA throws an StartofFrameEarly ErrIRQ + EndofLineLateErr

It only happens if I rotate frame buffers in the above described way hence I assume it has to do with setting the PART_PTR and violating some timeing of it.

 

Unfortunately I could not find any more detailed information within the datasheet. anybody encounter similiar troube? ideas?

 

 

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Explorer
Explorer
1,069 Views
Registered: ‎10-05-2010

I think that my VDMA requirement was similar to yours. I needed to reprogram the VDMA before each transfer, and I thought that using the IRQDelayCount was a good way to go. After posting on the forum, it was suggested that I use FrameCountIRQ, but I ran into the same problem as you have. Look at his discussion:

https://forums.xilinx.com/t5/AXI-Infrastructure/How-Do-I-use-the-VDMA-IRQDelayCount/m-p/844825#M609

 

and especially at bwiec's last post.

 

"It's a little quirk of the VDMA that the interrupt happens on fsync event which is often start of frame instead of at the end of the frame (there's an AR on it somewhere). So that wouldn't work if you're parking the VDMA between frames."

 

---

Joe Samson

View solution in original post

2 Replies
Highlighted
Explorer
Explorer
1,070 Views
Registered: ‎10-05-2010

I think that my VDMA requirement was similar to yours. I needed to reprogram the VDMA before each transfer, and I thought that using the IRQDelayCount was a good way to go. After posting on the forum, it was suggested that I use FrameCountIRQ, but I ran into the same problem as you have. Look at his discussion:

https://forums.xilinx.com/t5/AXI-Infrastructure/How-Do-I-use-the-VDMA-IRQDelayCount/m-p/844825#M609

 

and especially at bwiec's last post.

 

"It's a little quirk of the VDMA that the interrupt happens on fsync event which is often start of frame instead of at the end of the frame (there's an AR on it somewhere). So that wouldn't work if you're parking the VDMA between frames."

 

---

Joe Samson

View solution in original post

Highlighted
854 Views
Registered: ‎04-20-2017

https://www.xilinx.com/support/answers/66493.html

 

here is the AR that deals exactly with that issue.

I will try that. Thank you for pointing the direction

0 Kudos