<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MSI中斷簡介和生成方法

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

MSI中斷簡介

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

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

圖1

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

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

圖2

MSI中斷的生成

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

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

圖3

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

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

圖4

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

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

圖5

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

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

圖6

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

圖7

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

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

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

圖8

圖9為在Pcie RP IP接口截取的TLP包,EP發送MSI中斷即為發送memory write的TLP包到RP,RP在接收到此特定地址和數據的TLP包后,會將其解析為中斷,Pcie的CQ接口接收到的包為對端發送的request 包,即EP側發送的memory write TLP包可在此接口截取到。

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

圖9

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

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

圖10

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

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

圖11

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1610

    文章

    21372

    瀏覽量

    595022
  • 中斷
    +關注

    關注

    5

    文章

    885

    瀏覽量

    41082
  • msi
    msi
    +關注

    關注

    0

    文章

    26

    瀏覽量

    29812
  • AXI
    AXI
    +關注

    關注

    1

    文章

    126

    瀏覽量

    16350

原文標題:如何使用AXI Bridge IP 發送MSI中斷

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PCIE MSI中斷的配置

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

    PWM生成方法

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

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

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

    PCIe設備發出MSI-X中斷請求的方法

    x86處理器如何處理MSI-X中斷請求PCIe設備發出MSI-X中斷請求的方法與發出MSI
    發表于 02-16 06:36

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

    本文提出一種基于混沌動力學模型的加密算法種子密鑰表生成方法。該方法通過擴展Tent 映射生成混沌序列,選取二值化后序列一段數據構造安全算法的種子密鑰表。實驗表明,
    發表于 09-02 08:21 ?19次下載

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

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

    一種多尺度多視點特性視圖生成方法的研究和應用_謝冰

    一種多尺度多視點特性視圖生成方法的研究和應用_謝冰
    發表于 03-15 09:27 ?0次下載

    一種新穎的自動化攻擊圖生成方法_武健

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

    基于全同步對覆蓋準則的TSSA生成方法

    ;然后,給出了一個同步對一線程關聯圖( SPTG)構建方法;在此基礎上,生成滿足APSC的TSS;最后,使用JPF檢測工具,對4個Java類庫并發程序進行了TSS生成實驗,并與常用的默認線程調度(DS)、搶占式線程調度(PS)和
    發表于 01-07 09:46 ?0次下載

    PCIe中斷機制介紹(MSI

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

    基于視覺注意力的全卷積網絡3D內容生成方法

     由于在某些特殊場景中獲取深度線索的難度較高,使得已有3D內容生成方法的應用受到限制。為此,以顯著圖代替深度圖進行2D-3D轉換,提出一種3D內容生成方法。使用全卷積網絡(FCN)生成粗糙的顯著
    發表于 05-13 16:13 ?11次下載

    教大家如何處理x86處理器中MSI-X中斷請求

    x86處理器如何處理MSI-X中斷請求PCIe設備發出MSI-X中斷請求的方法與發出MSI
    的頭像 發表于 08-12 11:23 ?6969次閱讀

    簡述MSIMSI-X中斷機制

    MSIMSI-X中斷機制 在PCI總線中,所有需要提交中斷請求的設備,必須能夠通過INTx引腳提交中斷請求,而
    的頭像 發表于 08-10 17:54 ?5386次閱讀

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

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

    x86處理器如何處理MSI-X中斷請求

    x86處理器如何處理MSI-X中斷請求PCIe設備發出MSI-X中斷請求的方法與發出MSI
    發表于 12-17 18:28 ?9次下載
    x86處理器如何處理<b class='flag-5'>MSI</b>-X<b class='flag-5'>中斷</b>請求
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>