FreeRTOS and -DUSE_AMP=1

razed11 wrote on Wednesday, September 30, 2015:

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.

rtel wrote on Wednesday, September 30, 2015:

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

razed11 wrote on Wednesday, September 30, 2015:

This is using a single core. Linux uses Core 0 and we use Core 1.

How is Xilinx going to help solve this issue?

rtel wrote on Wednesday, September 30, 2015:

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.

razed11 wrote on Wednesday, September 30, 2015:

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.

wonger wrote on Monday, November 30, 2015:

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.