04-09-2021 11:11 AM
I have basically gone through previous posts regarding vcu mcu failed ping but none seems to fix the issue. I use a zcu106 with with the vcu trd bsp 2020.1. My design is based on the SDI-Rx TRD. I have four SDI video pipelines, four I2S audio Rx/Tx pipelines, VCU(Encoder Only) and an AXI-CAN IP in the PL which all work.
When I add a second AXI-CAN IP, the Petalinux boot logs show the VCU MCU fails to ping. When this error occurs none of the Video pipelines or CAN IPs work.
I have tried changing the Vivado address editor assigned addresses(attached) with no luck. I am unsure if there is any TRD address conflicting or Petalinux system memory setting that needs to be changed as my design is larger than the SDI-Rx TRD peripheral assignments.
I have used an AXI-Interrupt controller and made the VCU the highest priority in the concat block but this has not fixed it. Is it possible there is a limit on some PS resource I might be unaware of due to the number of peripherals in the design?
I have attached the boot log and Vivado address assignment.
Any help or suggestions please.
04-22-2021 06:36 AM
looks like your system is very much loaded. if you run only 1 CAN instance then VCU works fine but the moment you call 2nd CAN instance VCU starves for the system memory access or APU cores are unable to handle the interrupts of VCU. My suspect is this scenario is causing your system to go haywire.
when you call the 2nd instance have you already checked /proc/interrupts?
what is the load on VCU? I mean resolution and framerate and video format its trying to encode? have you tried smaller resolution and framerate with the 2nd CAN instance?
let us know how it goes with that.
04-22-2021 08:20 AM
Many thanks @kvasantr for responding.
As per your suggestion, The system boots with 2 AXI-CAN IPs in the design but with "mcu failed to ping" error in the start-up boot logs. The video pipelines do not even lock when I check with "media-ctl" command just after boot up when this error occurs. Hence I cannot stream or encode. The design has 4x 1080p50 SDI pipelines and the encoder is configured same.
I am not sure how to call the CAN instances as you mentioned. When I try to exercise the AXI-CAN using "cangen" command I get buffer unavailable error.
- How do I check the VCU load? The mcu firmware isn't responding so I wonder if there is any way to check the load for a vcu not working?
- How do I check and what metrics should I look out for in the /proc/interrupts?
I am thinking I can run the above checks on a design that works(with just one AXI-CAN IP) to get an indication of any starved or at the limits resource usage.
Thanks once again