當前位置:編程學習大全網 - 源碼下載 - 如何用中斷方式實現壹個串口的字符設備驅動程序

如何用中斷方式實現壹個串口的字符設備驅動程序

壹節用的是查詢方式獲取按鍵值,比較耗費資源,現在用中斷方式來獲取按鍵值。

內核在start_kernel函數(源碼在init/main.c中)中調用trap_init、init_IRQ兩個函數來設置異常的處理函數。

1.trap_init函數用來設置各種異常處理向量,包括中斷向量。所謂向量就是壹些被安放在固定位置的代碼,當發生異常時,CPU會自動執行這些固定 位置上的指令。異常向量的代碼很簡單,它們只是壹些跳轉指令。發生異常時,CPU自動執行這些指令,跳轉去執行更復雜的代碼,比如保存被中斷程序的執行環 境,調用異常處理函數,恢復被中斷程序的執行環境並重新運行。

2.init_IRQ函數用來初始化中斷的處理函數,設置各種中斷的默認處理函數。當發生中斷時,中斷總入口函數asm_do_IRQ就可以調用這些函數作進壹步處理。

<壹>中斷處理體系結構

Linux內核將所有中斷統壹編號,使用壹個irq_desc結構數組來描述這些中斷,每個數組項對應壹個中斷(也可能是壹組中斷,它們公用相同的中斷 號),裏面記錄了中斷的名稱、中斷狀態、中斷標記(比如中斷類型、是否***享中斷),並提供了中斷的底層硬件訪問函數(清除、屏蔽、使能中斷),提供了這個 中斷的處理函數入口,通過它可以調用用戶註冊的中斷函數。

  • 上一篇:想學python,有沒有可以規劃的路線?
  • 下一篇:什麽是股票異動?
  • copyright 2024編程學習大全網