0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡單的PCI總線INTx中斷實(shí)現(xiàn)流程

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-08-24 09:58 ? 次閱讀

一個(gè)簡單的PCI總線INTx中斷實(shí)現(xiàn)流程,如下圖所示。

1. 首先,PCI設(shè)備通過INTx邊帶信號(hào)產(chǎn)生中斷請(qǐng)求,經(jīng)過中斷控制器(Interrupt Controller,PIC)后,轉(zhuǎn)換為INTR信號(hào),并直接發(fā)送至CPU

2. CPU收到INTR信號(hào)置位后,意識(shí)到了中斷請(qǐng)求的發(fā)生,但是此時(shí)并不知道是什么中斷請(qǐng)求。于是通過一個(gè)特殊的指令來查詢中斷請(qǐng)求信息,該過程一般被稱為中斷應(yīng)答(Interrupt Acknowledge);

3. 該特殊指令被發(fā)送至PIC后,PIC會(huì)返回一個(gè)8bits的中斷向量(Interrupt Vector)值給CPU。該中斷向量值與其發(fā)送的INTR請(qǐng)求是對(duì)應(yīng)的;

4. CPU收到來自PIC的中斷向量值后,會(huì)去其Memory中的中斷向量表(Interrupt Table)中查找對(duì)應(yīng)的中斷服務(wù)程序(Interrupt Service Routines,ISR)在Memory的位置;

5. 然后CPU讀取ISR程序,進(jìn)而處理該中斷。

上面的例子主要是基于早期的單核CPU設(shè)計(jì)的,并沒有考慮到目前多核CPU的情況。因此,在后續(xù)的PCI Spec中,將PIC替換為IO APIC(Advanced Programmed Interrupt Controller)。如下圖所示:

實(shí)際上,在PCIe總線中,傳統(tǒng)的中斷機(jī)制(INTx)已經(jīng)很少被使用,很多應(yīng)用甚至直接將該功能禁止了。無論是在PCI總線(V2.3及以后的版本),還是PCIe總線中,都可以通過配置空間中的配置命令寄存器(Configuration Command Register來禁止INTx中斷機(jī)制),如下圖所示。不過,需要特別注意的是,雖然該bit的名稱為中斷禁止(Interrupt Disable),但是其只會(huì)影響INTx,對(duì)MSI/MSI-X不會(huì)造成影響。因?yàn)镸SI/MSI-X的使能(或禁止)是通過配置空間中的MSI/MSI-X Capability Command Register來實(shí)現(xiàn)的,并且一旦使能了MSI/MSI-X,PCI總線/PCIe總線便會(huì)自動(dòng)地禁止INTx。

并且可以通過配置狀態(tài)寄存器的中斷狀態(tài)(Interrupt Status)bit來確定當(dāng)前的中斷狀態(tài),如下圖所示:

INTx相關(guān)的寄存器在配置空間的位置如下圖所示,Interrupt Pin和Interrupt Line分別定義了中斷邊帶信號(hào)引腳號(hào)(INTA#~INTD#)和中斷向量號(hào)(IRQ0~IRQ255)。

然而,PCIe總線繼承了PCI總線的INTx中斷機(jī)制,但是在實(shí)際的PCIe設(shè)備之間的中斷信息傳輸中使用的并非邊帶信號(hào)INTx,而是基于消息(Message)的。其中Assert_INTx消息表示INTx信號(hào)的下降沿。Dessert_INTx消息表示INTx信號(hào)的上升沿。當(dāng)發(fā)送這兩種消息時(shí),PCIe設(shè)備還會(huì)將配置空間的相關(guān)中斷狀態(tài)bit的值更新。對(duì)于PCIe-PCI(X)橋設(shè)備來說,會(huì)將接收到的來自PCI/PCI-X總線的INTx信號(hào)轉(zhuǎn)換為消息,在往上級(jí)發(fā)送。一個(gè)簡單的例子如下圖所示:

INTx消息的格式為:

橋設(shè)備中的INTx消息的類型與設(shè)備號(hào)的映射關(guān)系如下圖所示:

對(duì)應(yīng)的,一個(gè)簡單的例子如下:

當(dāng)多個(gè)設(shè)備使用同一個(gè)中斷信號(hào)線時(shí),只有先置位的設(shè)備會(huì)被中斷控制器響應(yīng)。但是該中斷信號(hào)線,并不會(huì)因?yàn)槠渲幸粋€(gè)設(shè)備的中斷請(qǐng)求得到響應(yīng)便被清除,而是會(huì)等到所有的發(fā)送請(qǐng)求的設(shè)備的中斷請(qǐng)求都得到了響應(yīng)之后。如下圖所示:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15924

    瀏覽量

    175580
  • PCI
    PCI
    +關(guān)注

    關(guān)注

    4

    文章

    643

    瀏覽量

    129978
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2827

    瀏覽量

    87733

原文標(biāo)題:【博文連載】PCIe掃盲——中斷機(jī)制介紹(INTx)

文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于IP核的PCI總線接口設(shè)計(jì)與實(shí)現(xiàn)

    。lirqn為中斷輸入信號(hào)??梢酝ㄟ^PCI編譯器IP工具臺(tái)或編輯兆核函數(shù)頭文件的方式修改PCI配置空間信息,本系統(tǒng)GCI兆核函數(shù)的配置信息如下: 3 本地總線讀寫狀態(tài)機(jī) 在用戶邏輯中,
    發(fā)表于 12-04 10:35

    基于PCI總線的CPLD實(shí)現(xiàn)

    獨(dú)立的配置空間,可實(shí)現(xiàn)即插即用。這些優(yōu)點(diǎn)使得PCI總線在數(shù)據(jù)采集、嵌入式系統(tǒng)和測(cè)控等領(lǐng)域得到廣泛應(yīng)用。實(shí)現(xiàn)PCI
    發(fā)表于 05-29 05:00

    PCI總線的信號(hào)是如何去定義的

    PCI總線的信號(hào)定義PCI總線是一條共享總線,在一條PCI
    發(fā)表于 02-16 06:48

    淺談PCI總線中斷機(jī)制

    PCI總線中斷機(jī)制PCI總線使用INTA#、INTB#、INTC#和INTD#信號(hào)向處理器發(fā)出中斷
    發(fā)表于 02-16 06:31

    pci總線標(biāo)準(zhǔn)|pci總線規(guī)范下載

    PCI總線漸漸地取代了ISA總線。它有許多優(yōu)點(diǎn),比如即插即用(Plug and Play)、中斷共享等。在這里我們對(duì)PCI
    發(fā)表于 06-16 14:24 ?147次下載

    基于FPGA的PCI總線接口設(shè)計(jì)

    基于FPGA的PCI總線接口設(shè)計(jì)::PCI是一種高性能的局部總線規(guī)范,可實(shí)現(xiàn)各種功能標(biāo)準(zhǔn)的PCI
    發(fā)表于 06-25 08:17 ?49次下載

    PCI中斷機(jī)制分析

    PCI中斷機(jī)制分析:PCI 總線有四條中斷線,所有PCI 設(shè)備共同使用這四條線向系統(tǒng)申請(qǐng)
    發(fā)表于 06-28 19:21 ?26次下載

    PCI總線仲裁器的設(shè)計(jì)及實(shí)現(xiàn)

    本文簡要介紹了PCI 總線的仲裁機(jī)制, 完成了PCI 總線仲裁器核心的設(shè)計(jì)、實(shí)現(xiàn)。通過ModelSim 進(jìn)行了軟件仿真,最后在XILINX
    發(fā)表于 09-03 08:18 ?27次下載

    PCI總線協(xié)議的FPGA實(shí)現(xiàn)及驅(qū)動(dòng)設(shè)計(jì)

    PCI總線協(xié)議的FPGA實(shí)現(xiàn)及驅(qū)動(dòng)設(shè)計(jì) 摘要! 采用FPGA技術(shù)! 在公司的flex6000系列芯片上實(shí)現(xiàn)了從設(shè)備模式pci
    發(fā)表于 03-12 14:30 ?36次下載

    基于FPGA的PCI總線接口設(shè)計(jì)

    摘 要 :PCI是一種高性能的局部總線規(guī)范,可實(shí)現(xiàn)各種功能標(biāo)準(zhǔn)的PCI總線卡。本文簡要介紹了PCI
    發(fā)表于 06-20 13:13 ?1055次閱讀
    基于FPGA的<b class='flag-5'>PCI</b><b class='flag-5'>總線</b>接口設(shè)計(jì)

    一個(gè)簡單PCI總線INTx中斷實(shí)現(xiàn)流程

    一個(gè)簡單PCI總線INTx中斷實(shí)現(xiàn)流程,如下圖所示
    發(fā)表于 10-18 16:37 ?589次閱讀

    PCI總線如何與中斷控制器的信號(hào)相連?

    PCI總線使用INTA#、INTB#、INTC#和INTD#信號(hào)向處理器發(fā)出中斷請(qǐng)求。
    的頭像 發(fā)表于 06-21 16:10 ?1757次閱讀

    基于PCI總線的信號(hào)定義

    PCI總線的信號(hào)定義 PCI總線是一條共享總線,在一條PCI
    的頭像 發(fā)表于 07-18 09:55 ?2314次閱讀

    簡述PCI總線中斷機(jī)制

    PCI總線中斷機(jī)制 PCI總線使用INTA#、INTB#、INTC#和INTD#信號(hào)向處理器發(fā)出中斷
    的頭像 發(fā)表于 07-18 10:10 ?2739次閱讀

    Linux內(nèi)核PCIE基礎(chǔ)知識(shí)整理

    PCI總線中,所有需要提交中斷請(qǐng)求的設(shè)備,必須能通過INTx引腳提交中斷請(qǐng)求,MSI機(jī)制是一個(gè)可選機(jī)制。而PCIE
    發(fā)表于 01-12 14:54 ?2020次閱讀
    Linux內(nèi)核PCIE基礎(chǔ)知識(shí)整理