面試題之二 中斷服務函式

2021-09-25 21:50:07 字數 796 閱讀 8176

中斷問題也是面試嵌入式崗位時,面試官比較喜歡拷問的問題之一,作為乙個嵌入式開發人員,自然少不了與中斷打交道,裸機程式中作為前台服務程式,發揮著重要的作用。

中斷服務函式應該注意的四大點

1.中斷服務函式不能傳入引數;

2.中斷服務函式不能有返回值;

3.中斷服務函式應做到短小精悍;

4.不要在中斷函式中使用printf函式,會帶來重入和效能問題

中斷並不是程式一開始就判斷好會在那裡發生,或者會在什麼時候發生。中斷發生的完全是隨機的,中斷源連線到硬體,由硬體來產生觸發中斷,而眾所周知,函式、函式內變數等大部分是儲存在堆疊區,但是中斷是隨機產生的,且由硬體告知,那麼去哪分配儲存位置,自然一二點是無法滿足的。

第三點,中斷內應做到短小精悍,這個就要求我們要動動腦筋了,但是很多東西在沒有需求的情況下,光靠亂猜想挺難的。我在一本書上看到乙個作者寫了一段關於中斷處理**的,就覺得很好,值得學習(作者也是源於專案的需求,然後動手)。

//定義乙個佇列結構體,用於儲存中斷型別

typedef struct tagintqueue

intqueue;

intqueue ipintqueuehead;

__interrupt isrexample()

//在豬程式中完成所有的工作

while(1)

}

把中斷提煉到到短小精悍才是中斷的靈魂所在,這裡中斷只做了兩件事,就是獲取中斷型別,然後加入佇列中,其餘複雜的程式處理都在主函式中完成。 

計算機作業系統之二 中斷技術

中斷處理是核心最基本的功能,它是整個作業系統賴以活動的基礎,即作業系統的重要活動最終都將依賴於中斷。所謂中斷是指某個時間發生時系統中止現行程式的執行,引出中斷處理程式對該事件進行處理,完畢後再返回斷點繼續執行,這個過程稱為 中斷 cpu與i o裝置並行工作。硬體故障處理。實現人機聯絡。實現多道程式和...

ARM裸機開發(二)中斷程式設計

以下裸機程式基於gt2440,編譯器為arm linux gcc 4.4.3。程式布局 源 由interrupt.s和led.c兩個檔案組成,interrupt負責初始化工作,led.c裡定義了中斷處理程式。程式流程 首先安裝異常向量表,在復位異常裡關閉看門狗,然後進入普通中斷模式,設定普通中斷的棧...

面試題之二

static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區域性變數有什麼區別?static函式與普通的函式有什麼區別?1 全域性變數 外部變數 的書名之前再冠以static就構成了靜態的全域性變數.全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式.這兩者在...