Zynq-7000 FreeRTOS(二)中斷:解決RTOS中中斷無反應問題


  前面做的兩個實驗,在裸機下跑PS的timer計時器中斷,PL到PS的按鍵中斷均工作正常,但是將代碼移植到freertos工程時,中斷不執行,跟中斷無關聯的task可以運行。產生這個問題的主要原因,在於PS部分只有一個中斷控制器,因此我們只能申請一個中斷控制器設備,如果申請了兩個,那么不工作是必然的。我們在裸機下申請了一個:XScuGic INST ,另外一個被FreeRTOS申請了,在如下圖,這樣就“沖突”了,所以:我們將原先自己申請的中斷控制器改用FreeRTOS申請的XScuGic xInterruptController,這就需要在我們自己寫的函數中,去全局的聲明一下FreeRTOS定義的那個XScuGic xInterruptController變量,方法就是在main()前面加上extern XScuGic xInterruptController;。

 

 

   下圖是Xilinx的一位員工給出的意見,也就是,在開啟調度器時會初始化中斷控制器,因此我們初始化中斷控制器只能在線程中執行,也就是在vTaskStartScheduler()開啟任務調度之前。反正我看到有中斷控制器傳參的函數都放到一個task中去了,另外在FreeRTOS中,什么Task,線程等等,貌似不區分,概念一樣,如果看到FreeRTOS有線程相關的函數,多半是被別人封裝過吧。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM