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

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

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

PCIe中斷機(jī)制介紹(MSI)

SwM2_ChinaAET ? 來(lái)源:未知 ? 作者:李倩 ? 2018-08-31 15:07 ? 次閱讀

前面的文章中介紹過(guò),MSI本質(zhì)上是一種Memory Write,和PCIe總線中的Message概念半毛錢(qián)關(guān)系都沒(méi)有。并且,MSI的Data Payload也是固定的,始終為1DW。

由于MSI也是從PCI總線繼承而來(lái)的,因此MSI相關(guān)的寄存器也存在于配置空間中的PCI兼容部分(前256個(gè)字節(jié))。如下圖所示,MSI有四種類(lèi)型:

其中Capability ID的值是只讀的,05h表示支持MSI功能。

Next Capability Pointer也是只讀的,其用于查找下一個(gè)MSI的位置,00h則表示到達(dá)Linked List的最后了。

Message Control Register用于確定MSI的格式與支持的功能等信息,如下圖所示:

具體描述如下:

Message Address Register:32-bit最低兩位固定為0,使得該地址是DW對(duì)齊的。

當(dāng)Mask Bits將相關(guān)的中斷向量(Interrupt Vector)屏蔽后,該MSI將不會(huì)被發(fā)送。軟件可以通過(guò)這種方式來(lái)使能或者禁止某些MSI的發(fā)送。如果相關(guān)中斷向量沒(méi)有被屏蔽,則如果發(fā)生了相關(guān)中斷請(qǐng)求,這時(shí)Pending Bits中的相應(yīng)bit則會(huì)被置位。一旦中斷信息被發(fā)出,則該bit會(huì)立即被清零。

注:可能有的人會(huì)有疑惑了(無(wú)論是Mindshare的書(shū),還是PCI的Spec都沒(méi)有明確解釋?zhuān)?,因?yàn)镸ask Bits和Pending Bits都只有32位,而8位的中斷向量號(hào)最多可以表示256個(gè)!顯然,32位最多只能對(duì)應(yīng)32個(gè)中斷向量號(hào),無(wú)法支持256個(gè)的。實(shí)際上,一般的系統(tǒng)不會(huì)支持256個(gè)中斷向量號(hào)的,32個(gè)就已經(jīng)足夠用了,所以并不用擔(dān)心這個(gè)問(wèn)題。

PCIe設(shè)備會(huì)根據(jù)配置空間中的MSI請(qǐng)求信息,來(lái)創(chuàng)建Memory Write TLP,來(lái)講MSI信息發(fā)送出去。作為一種特殊的TLP,傳遞MSI的TLP需要遵循以下規(guī)則:

· No Snoop和Relaxed Ordering bits的值必須為0

· TLP長(zhǎng)度值必須為01h

· First BE必須為1111b

· Last BE必須為0000b

· 地址是直接從配置空間中的響應(yīng)位置復(fù)制過(guò)來(lái)的

如下圖所示:

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119196
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1165

    瀏覽量

    81972

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MSI中斷簡(jiǎn)介和生成方法

    Xilinx PCIE IP中MSI中斷相關(guān)的地址如下圖1所示,如果想要成功產(chǎn)生中斷MSI Control, Message Addres
    的頭像 發(fā)表于 02-25 09:24 ?1846次閱讀
    <b class='flag-5'>MSI</b><b class='flag-5'>中斷</b>簡(jiǎn)介和生成方法

    將Hyperlink和pcie合在一起之后,Pcie無(wú)法響應(yīng)MSI中斷

    響應(yīng)到Hyperlink中斷后,將數(shù)據(jù)搬移到DDR3 0xc0000 0000開(kāi)始的地址,數(shù)據(jù)總共1GB。DSP2將數(shù)據(jù)接收完之后,通過(guò)PCIE返回給DSP1,雙方的鏈路都連通了,DSP1的PCIE
    發(fā)表于 06-21 16:09

    PCIE MSI中斷的配置

    小弟學(xué)習(xí)K1_STK(從官網(wǎng)下的最新的例程keystone軟件開(kāi)發(fā)包)里面的PCIE(例程),這個(gè)是例程里面RC端和EP端用的是MSI中斷。PCIE_int_cfg.number_tx_MSI
    發(fā)表于 06-21 03:49

    xp支持PCIE中的MSI中斷方式么

    各位大家好: ? ? ? ?在使用PCIE時(shí),我使用6678向PC機(jī)(xp系統(tǒng))發(fā)送MSI中斷,但是查找資料發(fā)現(xiàn)貌似xp不支持msi中斷,以
    發(fā)表于 06-21 11:03

    DM8168 C6678 pcie msi 中斷不能觸發(fā),請(qǐng)問(wèn)是什么原因?

    你好,我現(xiàn)在使用的DM8168做為RC端,C6678作為EP,現(xiàn)在RC和EP直接數(shù)據(jù)收發(fā)都是可以的,現(xiàn)在主要在調(diào)試PCIEmsi中斷上碰到一個(gè)問(wèn)題,具體問(wèn)題描述如下: RC端配置:BAR0
    發(fā)表于 08-06 06:48

    基于PCIe和V4L2的8通道視頻采集&顯示IP

    3.0和PCIe 4.0接口7.支持MSI中斷機(jī)制 對(duì)外接口:1.8個(gè)標(biāo)準(zhǔn)的FIFO或AXI4-Stream數(shù)據(jù)總線2.擴(kuò)展的RAM接口,支持BAR1映射空間 性能指標(biāo):1.支持8路
    發(fā)表于 11-01 21:45

    PCIe設(shè)備發(fā)出MSI-X中斷請(qǐng)求的方法

    x86處理器如何處理MSI-X中斷請(qǐng)求PCIe設(shè)備發(fā)出MSI-X中斷請(qǐng)求的方法與發(fā)出MSI
    發(fā)表于 02-16 06:36

    PCIe掃盲—PCIe錯(cuò)誤檢測(cè)機(jī)制的詳細(xì)資料概述

    PCIe總線錯(cuò)誤檢測(cè)囊括了鏈路(Link)上的錯(cuò)誤以及包傳遞過(guò)程中的錯(cuò)誤,如下圖所示。用戶(hù)設(shè)計(jì)的應(yīng)用程序?qū)又械腻e(cuò)誤不屬于鏈路傳輸中的錯(cuò)誤,不應(yīng)當(dāng)通過(guò)PCIe的錯(cuò)誤檢測(cè)與處理機(jī)制處理,一般可借助設(shè)備特殊
    的頭像 發(fā)表于 08-18 11:05 ?1.5w次閱讀

    PCIe兩種中斷傳遞方式

    MSI/MSI-X是后續(xù)的PCI/PCI-X總線改進(jìn)后的中斷機(jī)制,其中MSI-X(MSI-eXt
    的頭像 發(fā)表于 08-31 15:31 ?9123次閱讀

    克服MSI機(jī)制的三個(gè)主要的缺陷

    有趣的是,MSI只支持32個(gè)中斷向量,而MSI-X支持多達(dá)2048個(gè)中斷向量,但是MSI-X的相關(guān)寄存器在配置空間中占用的空間卻更小。這是因
    的頭像 發(fā)表于 09-02 10:41 ?4447次閱讀
    克服<b class='flag-5'>MSI</b><b class='flag-5'>機(jī)制</b>的三個(gè)主要的缺陷

    簡(jiǎn)述PCI總線的中斷機(jī)制

    屬于邊帶信號(hào)(Sideband Signals),PCI總線規(guī)范并沒(méi)有明確規(guī)定在一個(gè)處理器系統(tǒng)中如何使用這些信號(hào),因?yàn)檫@些信號(hào)對(duì)于PCI總線是可選信號(hào)。PCI設(shè)備還可以使用MSI機(jī)制向處理器提交中斷請(qǐng)求,而不使用這組
    的頭像 發(fā)表于 07-18 10:10 ?2731次閱讀

    教大家如何處理x86處理器中MSI-X中斷請(qǐng)求

    。 只是MSI-X中斷機(jī)制為了支持更多的中斷請(qǐng)求,在MSI-X Capablity結(jié)構(gòu)中存放了一個(gè)指向一組Message Address和
    的頭像 發(fā)表于 08-12 11:23 ?7076次閱讀

    簡(jiǎn)述MSIMSI-X中斷機(jī)制

    MSIMSI-X中斷機(jī)制 在PCI總線中,所有需要提交中斷請(qǐng)求的設(shè)備,必須能夠通過(guò)INTx引腳提交中斷
    的頭像 發(fā)表于 08-10 17:54 ?5571次閱讀

    x86處理器如何處理MSI-X中斷請(qǐng)求

    x86處理器如何處理MSI-X中斷請(qǐng)求PCIe設(shè)備發(fā)出MSI-X中斷請(qǐng)求的方法與發(fā)出MSI
    發(fā)表于 12-17 18:28 ?9次下載
    x86處理器如何處理<b class='flag-5'>MSI</b>-X<b class='flag-5'>中斷</b>請(qǐng)求

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

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