問題描述: zynq7000 上 PS standalone裸跑,PS timer計時器中斷,PL-->PS中斷均工作正常,將代碼移植到freertos工程時,中斷不執行,task運行正常。
解決: Xilinx FreeRTOS (9.0.1) BSP, 中有一個文件: portZynq7000.c. 定義了一個全局的中斷控制器 interrupt controller:XScuGic xInterruptController。而PS只有一箇中斷控制器資源。在移植的代碼中也定義了一箇中斷控制器。
所以辦法是在自己的中斷代碼中 用extern XScuGic xInterruptController聲明這個全局變量。
之後再按xilinx的方法進行config與connect即可。
就可以中斷中釋放信號量去觸發task任務了,大功告成!
extern XScuGic xInterruptController;
static XScuGic *Intc = &xInterruptController; /* The Instance of the Interrupt Controller Driver */