FreeRTOS and -DUSE_AMP=1

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.

FreeRTOS and -DUSE_AMP=1

The demo applications in the FreeRTOS download are configured to use a single core. I beleive Xilinx provide AMP examples.

FreeRTOS and -DUSE_AMP=1

This is using a single core. Linux uses Core 0 and we use Core 1. How is Xilinx going to help solve this issue?

FreeRTOS and -DUSE_AMP=1

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.

FreeRTOS and -DUSE_AMP=1

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.

FreeRTOS and -DUSE_AMP=1

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.