ZYNQ7000 XPAR_XILTIMER_ENABLED Macro definition prevents initialization of interrupt controller

In zynq7000, the interrupt controller scugic is defined by freertos as a global variable xInterruptController. And in the task scheduling start function, FreeRTOS_ The SetupTickInterrupt function is initialized. Since most tutorials are based on bare metal, I used the interrupt registration function for bare metal before. If it is initialized correctly, there will be no problem. But if you use macros to define XPARs_ XILTIMER_ ENABLED (possibly timer turned on), FreeRTOS_ The SetupTickInterrupt function will not initialize scugic, and I think this should be modified. Otherwise, there will be a situation where the logic has already been initialized and the interrupt function result directly fails to connect. I haven’t found any other places to initialize the interrupt controller either.

Also, there are no examples of interrupts or documentation on freertos interrupts in Vitis’ freertos, and many tutorials are also based on bare metal implementation of interrupts. So it’s still a bit difficult to directly use the freertos interface.

HI @ xiuyangzhang,

Welcome to the FreeRTOS community.
The idea is to only touch the xInterruptController struct AFTER the scheduler is started.
Please refer to the thread Zynq 7020 interrupts under FreeRTOS v10.1.1 - #4 by simon for more details.

1 Like