国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

如何使用lspci和setpci調試PCIe問題

YCqV_FPGA_EETre ? 來源:FPGA開發圈 ? 作者:FPGA開發圈 ? 2020-12-02 16:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

lspci 命令和 setpci 命令均為 Linux 發行版中原生可用的命令。

這 2 條命令均可提供多級輸出,適合在不同時間點用于查看 PCI 總線上訓練的不同組件的功能和狀態。其中大部分功能均可反映《PCI Express 基本規范》中所需的配置空間寄存器。與大部分命令一樣,在 Linux 中可通過運行“lspci --help”或“man lspci”來獲取實用的指示信息。

// lspci

默認情況下 lspci 命令可顯示所有器件信息,如下圖所示。

// lspci-tv

此命令可按樹狀格式顯示 PCI 器件,并提供根端口總線、器件和功能 (BDF) 編號。

在以上日志中,賽靈思器件連接到總線編號 (Bus Number)“00”、器件編號 (Device Number )“01”和功能編號 (Function Number)“1”。

// lspci-vvv

此命令可用于顯示最詳細的信息。需要 root 用戶權限才能運行此命令。

以下日志僅顯示與賽靈思 PCIe 器件相關的部分。

要點:

?“鏈路功能寄存器 (Link Capability Register)”和“鏈路狀態寄存器 (Link Status Register)”均顯示 Gen3x8。有時由于鏈路問題,可能發生鏈路向下訓練。向下訓練的鏈路狀態會反映在鏈路狀態寄存器中:

?“可糾正錯誤狀態寄存器 (Correctable Error Status register)”顯示“非致命錯誤 (Non-Fatal Error)”。啟動期間,主機還會探測未配置的功能。由于設計是針對單一功能配置的,因此探測其它功能的操作將報告為請求不受支持。此不受支持的請求將報告為“非致命錯誤:建議 (Advisory Non-Fatal error)”。如果在啟動期間出現“非致命錯誤 (Non-Fatal Error)”、“請求不受支持 (Unsupported Request)”和“可糾正錯誤 (Correctable Error)”,此錯誤可忽略。通過在對應寄存器中對相應的位執行配置寫入即可清除此類錯誤。

?用戶必須監控不可糾正錯誤狀態寄存器中是否存在錯誤。如果在此寄存器中報告了錯誤,則必須對其進行調查并解決。

? PCI Express 功能起始位置為“80”。

// lspci-vs

此命令可提供有關選定器件的詳細輸出,如下所示:

// lspci-vvvs

此命令作用相同,但可提供更詳細的輸出,如下所示:

// lspci-nvmms

此命令可用于以數字形式顯示 PCI 器件供應商 ID 和器件 ID。

// lspci-xxx

此命令可用于提供整個 PCI 配置空間的十六進制轉儲。

0x00 的前 2 個字節實際為 0x10EE。在 PCIe 規范中,所有數據均按偏移來定義,例如,包含 0x80 的黃色框位于偏移 0x34 處 - 表示該指針指向擴展功能寄存器的第一個地址。

PCI-ID:在位于 0x00 的紅色框內顯示的是供應商 ID (0x10EE),后接藍色框內顯示的器件 ID (0x7038)。其下方位于偏移 0x2C 和 0x2E 的紅色框和藍色框內分別是子供應商 ID (0x10EE) 和子器件 ID (0x0700)。

總線主控制器啟用:回到上方位于 0x04 處的黃色框內,其中顯示的是 16 位字“0000 0000 0000 0111”。它表示命令寄存器。位 2 是“總線主控制器啟用”位。

位于 0x06 處的綠色框內顯示的是 16 位字“0000 0000 0000 0001”。它表示狀態寄存器,可能隨時間而改變,它可用于向根聯合體 (Root complex) 發送信號,以表示發生了某些狀況。

BAR 和存儲器:位于 0x10 處,其中顯示的是 32 位字“0000 0000 0000 0000 1111 01111010 0000”

位 0 = 0 - 針對存儲器空間的請求

位 2:1 =“00”- 基址,位寬為 32 位

位 3 =“0”- 不可預取

位 31:4 = 0xF7C0(最低的 4 個位假定為 0,因為必須在字節和 Dword 邊界上賦值)
注:如果該請求位寬為 64 位,那么下一個 D-Word 將包含上位內存地址,下一個 BAR 將為 BAR2。

0x14 - 此處是 BAR1 地址,但由于全部為 0,因此該器件僅含 1 個 BAR 選項

檢查 PCIe 鏈路寬度

PCIe 寬度用于判定 PCIe 通道數。以下命令可便于查找“鏈路功能寄存器”中的“PCIe 鏈路寬度”信息,以及“鏈路狀態寄存器”中協商的鏈路寬度。

檢查 PCIe 速度

與用于檢查 PCIe 鏈路寬度信息的命令類似,以下命令可提供有關 PCIe 速度的信息。

檢查 PCIe 最大有效載荷大小 (MPS)

以下命令可提供“器件控制寄存器 (Device Control Register)”下的“最大有效載荷大小 (Max Payload Size)”值。

檢查 PCIe 最大讀取請求大小

列出所有 PCIe 器件

//setpci

setpci 命令可用于讀取和寫入配置寄存器。請參閱“setpci –help”以獲取有關 setpci 功能的詳細信息。

setpci 包含標準配置報頭中的所有寄存器的名稱。“setpci –dumpregs”命令可顯示包含所有 PCI 寄存器和功能的列表,如下所示:

[root@localhost xilinx]# setpci --dumpregs
cap pos w name
00 W VENDOR_ID
02 W DEVICE_ID
04 W COMMAND
06 W STATUS
08 B REVISION
09 B CLASS_PROG
0a W CLASS_DEVICE
0c B CACHE_LINE_SIZE
0d B LATENCY_TIMER
0e B HEADER_TYPE
0f B BIST
10 L BASE_ADDRESS_0
14 L BASE_ADDRESS_1
18 L BASE_ADDRESS_2
1c L BASE_ADDRESS_3
20 L BASE_ADDRESS_4
24 L BASE_ADDRESS_5
28 L CARDBUS_CIS
2c L SUBSYSTEM_VENDOR_ID
2e W SUBSYSTEM_ID
30 L ROM_ADDRESS
3c B INTERRUPT_LINE
3d B INTERRUPT_PIN
3e B MIN_GNT
3f B MAX_LAT
18 B PRIMARY_BUS
19 B SECONDARY_BUS
1a B SUBORDINATE_BUS
1b B SEC_LATENCY_TIMER
1c B IO_BASE
1d B IO_LIMIT
1e W SEC_STATUS
20 W MEMORY_BASE
22 W MEMORY_LIMIT
24 W PREF_MEMORY_BASE
26 W PREF_MEMORY_LIMIT
28 L PREF_BASE_UPPER32
2c L PREF_LIMIT_UPPER32
30 W IO_BASE_UPPER16
32 W IO_LIMIT_UPPER16
38 L BRIDGE_ROM_ADDRESS
3e W BRIDGE_CONTROL
10 L CB_CARDBUS_BASE
14 W CB_CAPABILITIES
16 W CB_SEC_STATUS
18 B CB_BUS_NUMBER
19 B CB_CARDBUS_NUMBER
1a B CB_SUBORDINATE_BUS
1b B CB_CARDBUS_LATENCY
1c L CB_MEMORY_BASE_0
20 L CB_MEMORY_LIMIT_0
24 L CB_MEMORY_BASE_1
28 L CB_MEMORY_LIMIT_1
2c W CB_IO_BASE_0
2e W CB_IO_BASE_0_HI
30 W CB_IO_LIMIT_0
32 W CB_IO_LIMIT_0_HI
34 W CB_IO_BASE_1
36 W CB_IO_BASE_1_HI
38 W CB_IO_LIMIT_1
3a W CB_IO_LIMIT_1_HI
40 W CB_SUBSYSTEM_VENDOR_ID
42 W CB_SUBSYSTEM_ID
44 L CB_LEGACY_MODE_BASE
01 00 - CAP_PM
02 00 - CAP_AGP
03 00 - CAP_VPD
04 00 - CAP_SLOTID
05 00 - CAP_MSI
06 00 - CAP_CHSWP
07 00 - CAP_PCIX
08 00 - CAP_HT
09 00 - CAP_VNDR
0a 00 - CAP_DBG
0b 00 - CAP_CCRC
0c 00 - CAP_HOTPLUG
0d 00 - CAP_SSVID
0e 00 - CAP_AGP3
0f 00 - CAP_SECURE
10 00 - CAP_EXP
11 00 - CAP_MSIX
12 00 - CAP_SATA
13 00 - CAP_AF
0001 00 - ECAP_AER
0002 00 - ECAP_VC
0003 00 - ECAP_DSN
0004 00 - ECAP_PB
0005 00 - ECAP_RCLINK
0006 00 - ECAP_RCILINK
0007 00 - ECAP_RCECOLL
0008 00 - ECAP_MFVC
000a 00 - ECAP_RBCB
000b 00 - ECAP_VNDR
000d 00 - ECAP_ACS
000e 00 - ECAP_ARI
000f 00 - ECAP_ATS
0010 00 - ECAP_SRIOV

//識別 setpci 中的寄存器

以下是識別 setpci 命令中所使用的寄存器的各種方法。

使用十六進制地址

提供寄存器名稱

對于屬于 PCI 功能的一部分的寄存器,可通過功能名稱來找到第一個寄存器。在 --dumpregs 輸出中。查找以 `CAP_' 或 `ECAP_' 開頭的名稱。在此名稱后可接 +offset 以向該地址添加偏移(十六進制值)。這樣即可便于找到包含在已設置的相應功能寄存器內的寄存器。

寬度說明符(b、.w 或 .l)用于選擇要讀取或寫入的字節數(1、2 或 4)。如果按名稱來引用寄存器且該寄存器寬度已知,則可刪除該說明符。

寄存器的所有名稱和寬度說明符都區分大小寫。

示例:

COMMAND

指向命令寄存器中的值。如果將其替換為 4.w,則將指向相同位置。

COMMAND.l

指向命令寄存器和狀態寄存器的值。

VENDOR_ID+1.b

指向供應商 ID 寄存器的上位字節。

CAP_PM+2.w

對應于功耗管理功能的第二個字。

ECAP108.l

指向 ID 為 0x108 的擴展功能的第一個 32 位字。

setpci –s 24:00.0 04.w=6

要使 MSI 中斷生效,必須在“PCIe 配置”中設置“總線主控制器啟用 (Bus Master Enable)”位。以上命令可用于在命令寄存器中設置“總線主控制器啟用”位。此示例中的“24:00.0”表示 BDF 編號。不同器件采用不同編號,且因系統而異。要找到正確的器件 BDF,請參閱對應 lspci 日志。

值為 6 表示當前設置的是“存儲器啟用 (Memory Enable)”位和“總線主控制器啟用”位。

//setpci –s 24:00.0 4a.w=1

在 PCIe 配置空間內還必須啟用 MSI 寄存器才能使 MSI 中斷正常工作。在 UltraScale+ 器件中,它位于偏移 0x48 處(在 lspci 日志中也顯示為 Capabilities: [48])。為此,請發出“PCIe 配置寫入 (PCIe Configuration Write)”以將位 16(MSI 控制寄存器位 0)設為 1;以上命令可用于執行此操作。

執行以上命令后,可運行 lspci 命令。這樣應可改為顯示“MSI: Enable +”。

//setpci -s 01:00.0 82.b

以上命令用于從 UltraScale+ PCIe 端點器件的“鏈路狀態寄存器”中執行讀取

地址“82”表示 UltraScale+ 器件。請參閱 (PG213) 以查看詳細表格。

//setpci -s 00:01.0 d0.b

以上命令用于從根端口 (Root Port) 的鏈路控制 2 寄存器中執行讀取

在對應 lspci 日志中,鏈路功能基址為 a0,如下所示:

鏈路控制 2 寄存器偏移為“30”。將“a0”添加至“30”即可生成“d0”。“a0”地址表示根端口器件,如以上截屏中所示。此地址因使用的器件而異。對于使用 UltraScale+ 器件的根端口,功能地址起始位置為“70”,如下所示,而鏈路控制 2 寄存器偏移仍為“30”,即表示十進制值 48。

從 lspci 日志中還可讀取基址值“70”,如下所示:

//setpci -s 00:01.0 d0.b=42

以上命令用于寫入鏈路控制 2 寄存器,以將速度設置為 Gen2。

此處值“2”表示 Gen2,另一個位為“插槽時鐘”,該位已啟用,因此不發生更改。發出以上命令后,如果運行 lspci,那么寄存器中顯示的速度值將更改為 Gen2。但這只是它再次執行鏈路訓練時的訓練目標速度。

要將鏈路速度更改為 Gen2,必須對鏈路進行重新訓練。可通過執行以下所示命令來進行重新訓練:

setpci -s 00:01.0 b0.b=62

更改 PCIe 最大讀取請求大小

查詢寄存器以避免覆蓋其它屬性。

setpci -s 04:00.0 78.w

將期望值寫入寄存器。

setpci -s 04:00.0 78.w=2936

“最大讀取請求”所在的“器件控制寄存器”的字節偏移針對 UltraScale+ 器件為 78h。該值對于其它器件可能發生改變。用戶應查詢相應的產品指南。下表來自 (PG213)。

責任編輯:xj

原文標題:開發者分享 | 使用 lspci 和 setpci 調試 PCIe 問題

文章出處:【微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

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

    關注

    5

    文章

    689

    瀏覽量

    134292
  • PCIe
    +關注

    關注

    16

    文章

    1462

    瀏覽量

    88476

原文標題:開發者分享 | 使用 lspci 和 setpci 調試 PCIe 問題

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK3588平臺SSD PCIE調試踩坑記:不插SSD就死機?兩步搞定引腳與驅動配置

    最近看好多人因為pcie這個問題困擾,遂再更一版關于pcie調試的文章。
    的頭像 發表于 02-02 17:19 ?1386次閱讀
    RK3588平臺SSD <b class='flag-5'>PCIE</b><b class='flag-5'>調試</b>踩坑記:不插SSD就死機?兩步搞定引腳與驅動配置

    PCIe設備概率性識別失敗?這3個核心原因與排查思路

    少工程師都會遇到一個棘手問題:PCIe 設備有時能正常識別,有時卻突然 “失聯”,這種概率性識別失敗的故障,比必現故障更難排查,往往卡在硬件設計或調試環節浪費大量時間。
    的頭像 發表于 02-01 16:47 ?1657次閱讀
    <b class='flag-5'>PCIe</b>設備概率性識別失敗?這3個核心原因與排查思路

    探索TS2PCIE412:高性能PCIe開關的技術剖析

    探索TS2PCIE412:高性能PCIe開關的技術剖析 在當今的電子設備中,PCI Express(PCIe)總線的應用越來越廣泛,而PCIe開關作為實現總線復用和擴展的關鍵組件,其性
    的頭像 發表于 01-14 15:00 ?350次閱讀

    實戰復盤:RK3588 SPI+PCIe3x4方案啟動修復,從節點配置到驅動適配全解析

    ? ? ? 在 RK3588 嵌入式項目中, “ 接口配置不匹配 ” 是高頻踩坑點 —— 近期 基于 linux6.1 內核 調試 SPI 閃存 +PCIe3x4 外設 方案時,就遇到了 “eMMC
    的頭像 發表于 01-08 10:24 ?414次閱讀
    實戰復盤:RK3588 SPI+<b class='flag-5'>PCIe</b>3x4方案啟動修復,從節點配置到驅動適配全解析

    瑞薩RZ/T2H PCIe通信的調試方法

    本文闡述了RZ/T2H的PCIe外設作為EP,在Windows上做驅動開發、速率測試時,可能會遇到無法被Windows識別的問題。本文總結了一些調試方法和技巧,來排查問題原因和解決方法。
    的頭像 發表于 11-20 16:53 ?5835次閱讀
    瑞薩RZ/T2H <b class='flag-5'>PCIe</b>通信的<b class='flag-5'>調試</b>方法

    開發者必備,10 分鐘搞定 RK3588 PCIE 拆分!

    前言:在嵌入式開發中,PCIe接口的靈活配置直接影響設備擴展能力與性能發揮。RK3588作為旗艦芯片,其PCIe拆分機制更是讓硬件設計與軟件調試擁有了更多可能性。今天這篇技術筆記,就帶大家快速吃透
    的頭像 發表于 11-13 08:31 ?1424次閱讀
    開發者必備,10 分鐘搞定 RK3588 <b class='flag-5'>PCIE</b> 拆分!

    PCIe 6.0 SSD主控芯片狂飆!PCIe 7.0規范到來!

    ? 電子發燒友網綜合報道,早在2022年1月,PCI-SIG 組織正式發布了 PCIe 6.0 標準,與 PCIe 5.0 相比帶寬再次翻倍,達到64 GT / s。 ? PCIe 6.0×16
    的頭像 發表于 09-07 05:41 ?8311次閱讀
    <b class='flag-5'>PCIe</b> 6.0 SSD主控芯片狂飆!<b class='flag-5'>PCIe</b> 7.0規范到來!

    RK3588 PCIe設備識別失敗?一招避坑“非法Class”陷阱

    前言:在RK3588平臺開發過程中,你是否遇到過這樣的窘境:明明PCIe總線上掛好了網卡模塊,lspci能識別到芯片,可驅動就是加載失敗,排查半天找不到關鍵問題?別慌!本文將帶你一步步解決這個棘手
    的頭像 發表于 08-29 08:32 ?1776次閱讀
    RK3588 <b class='flag-5'>PCIe</b>設備識別失敗?一招避坑“非法Class”陷阱

    嵌入式接口通識知識之PCIe接口

    1.1 基礎概念PCIe的全稱是Peripheral Component Interconnect Express,譯為外設組件互連擴展總線,是一種高速串行計算機擴展總線標準,用于連接計算機
    發表于 08-21 16:51

    PCIe協議分析儀能測試哪些設備?

    PCIe協議分析儀能測試多種依賴PCIe總線進行高速數據傳輸的設備,其測試范圍覆蓋計算、存儲、網絡及異構計算等多個領域,具體設備類型及測試場景如下:一、核心計算設備 GPU(圖形處理器) 測試
    發表于 07-25 14:09

    FPGA遠程燒寫bit文件和調試ILA指南

    在 FPGA 開發過程中,燒寫bit文件和使用ILA進行調試是再常見不過的操作。但如果 FPGA 板卡被放在機房,或者通過PCIe插在服務器上,那么每次調試時我們都不得不帶著筆記本電腦跑去機房或服務器旁,接上 JTAG 線后才能
    的頭像 發表于 06-05 16:41 ?2588次閱讀
    FPGA遠程燒寫bit文件和<b class='flag-5'>調試</b>ILA指南

    nvme IP開發之PCIe

    PCIe事務層 PCIe的事務層連接了PCIe設備核心與PCIe鏈路,這里主要基于PCIe事務層進行了深入討論與分析。事務層采用TLP傳輸事
    發表于 05-18 00:48

    nvme IP開發之PCIe

    PCIe 體系結構 常見的PCIe總線系統結構如圖1所示,其中主要包含三種設備,分別是根復合體(RootComplex,RC)、Switch 和終端設備(EndPoint,EP)。 圖1 PCIe
    發表于 05-17 14:54