I took some time to take a Xilinx Zynq example project (two tasks + queue) and strip away everything to understand how the source files are integrated. Then I tried the BSP repository approach. I generally don’t like to give up too much control to these automated tools but it is quite nice and cleaner. Nice work.
Can I get a rough overview of how the RTOS is initialized under these conditions? Where is the timer tick configured and the vectors configured. Do these things happen before main? They seem to as my application just creates the queue and two tasks and it works just fine. I noticed that the FreeRTOS vector table symbol is in play so that table must be relocated at some point.