After quite a bit of debugging I found that FreeRTOS does not run with -DUSE_AMP. Our application requires this because we are running asymmetrically with Linux on the other CPU.
When this is set the RTOS tick is not called and delay functions do not work.
I’m afraid I don’t understand what the problem is. The FreeRTOS code
installs the tick handler, and its own vector table - I don’t know how
building it with -DUSE_AMP would effect how it works as there is nothing
in the FreeRTOS code that uses that macro.
I understand. I’m puzzled by this too. Would you mind taking a look? Just add -DUSE_AMP=1 in the extra compiler options for the core in the BSP .mss file with the simple example that uses two tasks using a queue. The “delay until” will not return and therefore does not post to the queue and nothing happens.
I’m running FreeRTOS with USE_AMP=1 and Linux on CPU0. I had to make some mods to the BSP generated with the Xilinx SDK though. This blog post and the person behind it helped me above all else, more so than official Xilinx documentation and support: http://henryomd.blogspot.com/2015/02/zynq-amp-linux-on-cpu0-and-bare-metal.html
It’s not FreeRTOS specific, but it’s about getting an AMP configuration running on the Zynq and everything still applies whether you’re running FreeRTOS or a bare-metal application. After reading this blog post, everything in Xilinx’s AMP related documents (UG978, XAPP1078 and XAPP1079) started making sense. After going through all that, I can provide more details if you still need it.