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