中斷控制器的級聯
根據中斷數量的不同,中斷控制器可以級聯,以此來滿足需求。比如在 GIC 中斷控制器之前都會連接 EINT中斷控制器,或者其他中斷控制器,對不同的中斷分級管控。
中斷控制器的級聯有兩種類型:
機器級別的級聯,級聯的初始化代碼理所當然地位于板子的初始化代碼中(arch/xxx/mach-xxx),因為只要是使用這個板子或SOC的設備,必然要使用這個子控制器。
設備級別的級聯,因為該設備并不一定是系統的標配設備,所以中斷控制器的級聯操作應該在該設備的驅動程序中實現。
機器設備的級聯,因為得益于事先已經知道子控制器的硬件連接信息,內核可以方便地為子控制器保留相應的 irq_desc 結構和 irq編號,處理起來相對簡單。
設備級別的級聯則不一樣,驅動程序必須動態地決定組合設備中各個子設備的 irq 編號和 irq_desc
結構。我只討論機器級別的級聯,設備級別的關聯可以使用同樣的原理。
中斷子系統架構
整個中斷子系統的架構分為 4 層,最底層(第四層)為硬件,包括 CPU、中斷控制器。第三層是 CPU的驅動和中斷控制器的驅動,由芯片原廠負責。第二層是 Linux內核提供的通用中斷處理模塊,這一層存在的意義在于,希望用戶在第一層寫的驅動在移植的時候更方便,保持接口不變,不讓用戶直接使用芯片原廠的 API,而是 Linux的 API。第一層就是驅動工程師日常寫的驅動啦。
-
控制器
+關注
關注
112文章
16467瀏覽量
179626 -
Linux
+關注
關注
87文章
11351瀏覽量
210505 -
設備
+關注
關注
2文章
4551瀏覽量
70897 -
系統
+關注
關注
1文章
1020瀏覽量
21440
發布評論請先 登錄
相關推薦
評論