FOS中斷管理

一、FOS中斷管理

中斷管理分軟硬件。

硬件分兩種類型中斷,一是中斷向量表存放地址,一種是存放指令。

在處理中斷之前要初始化其棧指針


二、軟件上設計:中斷髮生,PC跳轉到中斷向量表,然後我們要做的事情如下:

  1. 保存被中斷的任務的上下文;

  2. 增加中斷嵌套次數變量;

  3. 進入用戶處理函數;

    1) 清中斷;

    2)查找中斷號,根據中斷號調用相應的用戶函數;

  4. 減少中斷嵌套次數變量;

  5. 查找是否有就緒更高優先級任務,有則切換到更高優先級,沒有則切換回原來被中斷的任務。

三、中斷使用

  1. 註冊中斷號,目的是讓中斷號和用戶中斷處理函數相對應;

  2. 編寫用戶中斷處理函數

四、中斷軟件架構:

進入中斷處理時候最好是不允許其他中斷介入,因爲這樣會造成兩種情況:

允許中斷嵌套:棧溢出不可推測;

不允許中斷嵌套:中斷丟失。

所以關中斷時間越短越好。

有時候中斷處理並不一定是最緊急的事情,比如IO口中斷接受的一段數據放在緩衝區裏,我們可以不用第一時間處理緩衝區裏的內容。我們需要一種機制,把中斷接受的數據處理傳給普通線程做處理,而中斷只做採集數據,並且通知線程去處理數據。這樣中斷時間就會短很多。提高系統的實時性。

linux採用中斷上下部。上半部分做時間緊急事情,才數據採集,下半部分做數據處理。

FOS 將會採取次策略。

Source code download :     https://github.com/yangshanjin/YSJ_OS 

FOS now is based on OpenRISC.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章