[meta-xilinx] Linux/bare-metal AMP interrupt routing

Edward Wingate edwingate8 at gmail.com
Wed Jun 10 12:30:19 PDT 2015


On Tue, Jun 9, 2015 at 11:55 AM, Edward Wingate <edwingate8 at gmail.com> wrote:
> Nathan, once again, thanks.  That worked.

Now I am trying to get a FreeRTOS demo (not the ug978 latency demo,
but the demo that comes with FreeRTOS) running on CPU1 with Linux in
AMP configuration.  It uses interrupts 59 (UART0 SPI), 69-71 (TTC1
SPI), 63 (FPGA2 SPI) and 29 (SCU private timer PPI).  So in the
remoteproc DTS entry, I updated interrupts = < 0 27 4 0 37 4 0 38 4 0
39 4 0 31 4 >

I think the SCU private timer interrupt (29) should not need anything
here since it is a PPI for CPU1.

However, when Linux loads and boots the FreeRTOS application, CPU1 is
not getting the SCU private timer interrupt.  The FreeRTOS tick is
based on this interrupt and configured like so:
http://pastebin.com/3aaCf4a7

I think perhaps I shouldn't call XScuGic_CfgInitialize(), that this is
interfering with Linux's initialization/use of the GIC? But if I don't
call that, how do I get a handle to the ScuGic in order to connect
interrupt handlers I want for CPU1?

When this CPU1 application configures the SCU timer, it should be
configuring the private timer for CPU1, even though the timer base
address is the same as CPU0's timer?

I looked at the FreeRTOS latency demo firmware application, downloaded
from AR #59809 attachment at bottom of this page:
http://www.xilinx.com/support/answers/59809.html
But I couldn't find where the FreeRTOS tick was configured.  Does the
latency demo not use tick-based scheduling?

Thanks for any help.



More information about the meta-xilinx mailing list