cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
jianwenchang
Contributor
Contributor
467 Views
Registered: ‎10-20-2014

The RPU and APU share interrupts collide

 rpu shares scugic with apu, and axidma's interrupt is handled by RPU. When RPU receives axidma's MM2s_introut or S2MM_introut interrupt, RPU can handle the interrupt normally, but Linux system struck,When RPU can normally output logs from the Console, the Console cannot receive any input and the LINUX LOG cannot be output.It is worth mentioning that I have removed AXIDMA from the kernel configuration,How can I solve this problem? thanks

0 Kudos
4 Replies
sulcas.mindaugas
Participant
Participant
421 Views
Registered: ‎05-17-2018

Try to use XScuGic_InterruptMaptoCpu() function in RPU code, this function maps interrupt to selected CPU and prevents system from hanging

0 Kudos
jianwenchang
Contributor
Contributor
407 Views
Registered: ‎10-20-2014

hi sulcas,
Thank you very much for your reply. I have tried to use this function to allocate interrupts to the specified CPU, such as 0 or 1. or 4.This is available on Zynq7K part, but on MPSOC devices, it does not seem to work,I don't even know what the CPU ID is, how is the ID assigned?The ids of a53x4 are 0,1,2,3, right?R5x2 is 4,5, or 0,1, right?Looking forward to your reply. Thank you very much!
0 Kudos
sulcas.mindaugas
Participant
Participant
377 Views
Registered: ‎05-17-2018

CPU ID parameter XPAR_CPU_ID can be found in xparameter.h file. It should be 0 for R5_0 core and 1 for RPU_1 core. Also disable or delete AXIDMA device tree node in you linux project so that linux wont try to interact with AXIDMA while baremetal application is using it. I hope this information will help you

0 Kudos
jianwenchang
Contributor
Contributor
312 Views
Registered: ‎10-20-2014

Thank you for your reply. This issue has been resolved. The reason is that the Shared memory Allocated by me conflicts with the memory used by Linux

0 Kudos