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

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

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

MSI中斷簡介和生成方法

Hack電子 ? 來源:Hack電子 ? 2024-02-25 09:24 ? 次閱讀

MSI中斷簡介

Xilinx PCIE IP中MSI中斷相關(guān)的地址如下圖1所示,如果想要成功產(chǎn)生中斷,MSI Control, Message Address (Lower), Message Address (Upper)和Message Data這四個(gè)字段是必須要進(jìn)行配置的,此四個(gè)字段均可通過主機(jī)的軟件或者Xilinx的RP(root port)IP進(jìn)行配置。

3064ed72-d2bb-11ee-a297-92fbcf53809c.png

圖1

PCIE的協(xié)議對(duì)MSI Control字段的定義如圖2所示,其中的MSI Enable必須使能,否則EP(endpoint)無法發(fā)送中斷。Message Address (Lower), Message Address(Upper)和Message Data分別指的是memory write的TLP包的地址和數(shù)據(jù)。

308694fe-d2bb-11ee-a297-92fbcf53809c.png

圖2

MSI中斷的生成

在生成MSI中斷時(shí),首先需要打開IP的MSI功能,以AXI Bridege IP為例,如圖3所示勾選Enable MSI Capability Structure。

3091ce96-d2bb-11ee-a297-92fbcf53809c.png

圖3

用于產(chǎn)生中斷的信號(hào)如下圖4所示,要發(fā)送MSI中斷之前需要確定msi_enable是否被拉高,如果msi_enable沒有被拉高,IP是無法發(fā)送中斷的。Usr_irq_req需要一直保持為高直到確認(rèn)中斷已被成功處理,這里需要設(shè)置一個(gè)·機(jī)制,需要軟件配合進(jìn)行實(shí)現(xiàn),如軟件在處理完中斷后要向FPGA內(nèi)與邏輯約定好的寄存器寫1,邏輯在檢查到此寄存器被寫1后,再將usr_irq_req置低。

30aa494e-d2bb-11ee-a297-92fbcf53809c.png

圖4

通常邏輯在發(fā)送MSI中斷時(shí)不會(huì)檢測(cè)msi_enable信號(hào),此信號(hào)一般不會(huì)由EP端進(jìn)行控制,使能MSI功能通常在軟件側(cè)進(jìn)行操作,在linux系統(tǒng)中使用lspci -vvvs 指令即可查看MSI功能是否被使能,若打印信息如下圖5所示,顯示MSI:Enable-,則表示MSI功能未被使能,此時(shí)邏輯即使拉高usr_irq_req信號(hào),主機(jī)也不會(huì)接收到中斷。用戶可以通過使用setpci指令來使能MSI功能。從圖1和圖2可得,Xilinx Pcie EP的MSI Enable在4a的第一位,可以使用setpci –s 24:00.0 4a.w=1 指令來使能MSI功能。使用上述指令寫完4a寄存器后,圖5的MSI:Enable-會(huì)變至MSI:Enable+,表示MSI功能使能成功。

30b65aa4-d2bb-11ee-a297-92fbcf53809c.png

圖5

在Pcie鏈路穩(wěn)定后,RP端將會(huì)發(fā)送配置寫對(duì)EP端進(jìn)行配置,圖6為RP側(cè)對(duì)EP側(cè)中Pcie MSI的message address和message data字段的配置,RP首先對(duì)EP的4C寄存器全寫0,表示Message Address(Lower)為全0,隨后RP對(duì)EP的50寄存器寫32‘h800,即Message Address(Upper)的值為32’h800,寫完這兩個(gè)寄存器后,RP也需要寫對(duì)應(yīng)的寄存器來進(jìn)行記錄,當(dāng)隨后接收到地址為64’h800_0000_0000 memory write TLP包后,會(huì)將此包解析為中斷請(qǐng)求。RP在配置EP的message字段時(shí),只需要將所要的message data寫入到54寄存器,如圖6所示,RP將32’h54寫入到了EP的message data字段中,完成了EP側(cè)的message address和message data的配置。

30c47ef4-d2bb-11ee-a297-92fbcf53809c.png

圖6

30da4e96-d2bb-11ee-a297-92fbcf53809c.png

圖7

RP對(duì)EP的MSI功能的使能,可通過對(duì)EP的48寄存器寫32’h10000即可,本篇文章參考的是PG213中Register(Type0:Enpoint)表格,不同廠商的MSI寄存器所在的位置通常不同,在配置時(shí)需要參考對(duì)應(yīng)廠商的IP手冊(cè)。如圖7所示,RP側(cè)在配置完EP的MSI control寄存器后,EP的msi_enable會(huì)變?yōu)楦?,至此RP完成了EP側(cè) MSI功能的必要配置。

在完成上述配置后,用戶邏輯在拉高usr_irq_req后,會(huì)發(fā)現(xiàn)usr_irq_ack隨后被拉高,這表示IP已完成中斷的發(fā)送,如果在拉高usr_irq_req后,usr_irq_ack沒有被拉高,又或者usr_irq_fail拉高,這種情況大概率是EP msi_enable沒有被成功使能。在EP端拉高usr_irq_req信號(hào)一段時(shí)間后,會(huì)發(fā)現(xiàn)RP側(cè)的interrupt_out信號(hào)拉高,如圖8所示,表RP側(cè)接收并識(shí)別了EP發(fā)送的中斷信號(hào)。

30f1a636-d2bb-11ee-a297-92fbcf53809c.png

圖8

圖9為在Pcie RP IP接口截取的TLP包,EP發(fā)送MSI中斷即為發(fā)送memory write的TLP包到RP,RP在接收到此特定地址和數(shù)據(jù)的TLP包后,會(huì)將其解析為中斷,Pcie的CQ接口接收到的包為對(duì)端發(fā)送的request 包,即EP側(cè)發(fā)送的memory write TLP包可在此接口截取到。

30fc0554-d2bb-11ee-a297-92fbcf53809c.png

圖9

在EP發(fā)送中斷后,RP的m_axis_cq_tvalid會(huì)拉高,此時(shí)會(huì)收到TLP包,經(jīng)過解析后發(fā)現(xiàn)此包的Request_Type為4’h1,在圖10中查找,可發(fā)現(xiàn)此包為memory write類型的包,此包的地址在m_axis_cq_tdata的前64bit,地址為64’h800_0000_0000,與PR寫入至EP配置空間的4C(Message Address (Lower))和50(Message Address (Upper))寄存器的數(shù)值一致。RP收到的第一拍數(shù)據(jù)byte_en為0,表示第一拍中不存在數(shù)據(jù)載荷,在第二拍中可以看到byte_en的數(shù)值為32’hf,表示此拍存在數(shù)據(jù),m_axis_cq_tdata的前64bit即圖中addr字段的顯示的數(shù)值為64’h54,表示memory write的數(shù)據(jù)為54,與RP寫入到EP配置空間的54(Message Data)寄存器的內(nèi)容一致。

310f5b68-d2bb-11ee-a297-92fbcf53809c.png

圖10

MSI和MSI-X中斷都是EP端向RP端發(fā)送memory write的TLP包,所以bus master的功能也需要打開,在bus master打開后EP才可以主動(dòng)發(fā)送request到RP端。

311a5fd6-d2bb-11ee-a297-92fbcf53809c.png

圖11

審核編輯:湯梓紅

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

    關(guān)注

    1630

    文章

    21769

    瀏覽量

    604638
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41588
  • msi
    msi
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    29881
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    128

    瀏覽量

    16667

原文標(biāo)題:如何使用AXI Bridge IP 發(fā)送MSI中斷

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    PCIE MSI中斷的配置

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

    PWM生成方法

    目錄一.PWM簡介PWM生成方法二、PWM控制單色LED—單色呼吸燈硬件說明代碼分析進(jìn)行驗(yàn)證示波器查看波形呼吸燈一.PWM簡介PWM是 Pulse Width Modulation 的縮寫,中文
    發(fā)表于 08-09 08:34

    OTA完整包與差異包的生成方法分別是什么

    OTA完整包的生成方法是什么?OTA差異包的生成方法又是什么?
    發(fā)表于 02-10 07:04

    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

    基于混沌序列的種子密鑰表生成方法

    本文提出一種基于混沌動(dòng)力學(xué)模型的加密算法種子密鑰表生成方法。該方法通過擴(kuò)展Tent 映射生成混沌序列,選取二值化后序列一段數(shù)據(jù)構(gòu)造安全算法的種子密鑰表。實(shí)驗(yàn)表明,
    發(fā)表于 09-02 08:21 ?19次下載

    兩種空間矢量脈寬調(diào)制生成方法的分析與比較

    兩種空間矢量脈寬調(diào)制生成方法的分析與比較
    發(fā)表于 03-30 18:24 ?11次下載

    一種多尺度多視點(diǎn)特性視圖生成方法的研究和應(yīng)用_謝冰

    一種多尺度多視點(diǎn)特性視圖生成方法的研究和應(yīng)用_謝冰
    發(fā)表于 03-15 09:27 ?0次下載

    一種新穎的自動(dòng)化攻擊圖生成方法_武健

    一種新穎的自動(dòng)化攻擊圖生成方法_武健
    發(fā)表于 03-19 11:45 ?0次下載

    一種新的DEA公共權(quán)重生成方法

    針對(duì)傳統(tǒng)數(shù)據(jù)包絡(luò)分析(DEA)公共權(quán)重生成方法不同時(shí)具備線性、規(guī)模無關(guān)優(yōu)點(diǎn)的問題,根據(jù)軍事訓(xùn)練績效評(píng)估需求,提出了一種新的DEA公共權(quán)重生成方法。該方法以DEA有效單位為計(jì)算基礎(chǔ),首先對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行
    發(fā)表于 01-13 11:03 ?0次下載

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

    當(dāng)Mask Bits將相關(guān)的中斷向量(Interrupt Vector)屏蔽后,該MSI將不會(huì)被發(fā)送。軟件可以通過這種方式來使能或者禁止某些MSI的發(fā)送。如果相關(guān)中斷向量沒有被屏蔽,則
    的頭像 發(fā)表于 08-31 15:07 ?2.1w次閱讀
    PCIe<b class='flag-5'>中斷</b>機(jī)制介紹(<b class='flag-5'>MSI</b>)

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

    x86處理器如何處理MSI-X中斷請(qǐng)求PCIe設(shè)備發(fā)出MSI-X中斷請(qǐng)求的方法與發(fā)出MSI
    的頭像 發(fā)表于 08-12 11:23 ?7282次閱讀

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

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

    基于Python-casacore的射電測(cè)量集文件生成方法

    基于Python-casacore的射電測(cè)量集文件生成方法(開關(guān)電源技術(shù)試卷)-該文檔為基于Python-casacore的射電測(cè)量集文件生成方法講解文檔,是一份很不錯(cuò)的參考資料,具有較高參考價(jià)值,感興趣的可以下載看看………………
    發(fā)表于 09-15 13:11 ?3次下載
    基于Python-casacore的射電測(cè)量集文件<b class='flag-5'>生成方法</b>

    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)求

    PWM信號(hào)生成方法 PWM調(diào)制原理講解

    PWM(脈沖寬度調(diào)制,Pulse Width Modulation)是一種重要的模擬信號(hào)電平數(shù)字編碼方法,在電子技術(shù)和控制領(lǐng)域具有廣泛應(yīng)用。以下是對(duì)PWM信號(hào)生成方法和PWM調(diào)制原理的介紹: PWM
    的頭像 發(fā)表于 11-28 16:34 ?1719次閱讀