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