【PCIE配置空間】

1 PCIE配置空間

1.1 軟件如何知道PCIE設備是Swith,RC還是EP?

–軟件通過讀取寄存器信息。

PCIE配置空間? PCIE寄存器;--PCIE配置協議規定必須實現的空間。--PCIE存在兩種配置空間Type0/Type1;--Type0配置空間EP設備必須實現;--Type1配置空間RC/Switch設備必須實現;? PCIE配置空間具體大小 --1DW = 4Byte 

圖–:
在這里插入圖片描述

		? PCIE每個設備都有4KB的配置空間? 4KB配置空間前64DW(即256Byte)與PCI兼容保持一致;? 960DW為PCIE擴展寄存器空間;

PCIE兼容配置空間:

	1.PCIE兼容配置空間包含PCI Header--64Byte空間和Capability--192Byte空間;2.Header空間分為Type0和Type1兩種:Type0配置空間EP設備必須實現;Type1配置空間RC/Switch設備必須實現;3.Capalitiy空間--以鏈表形式組織的擴展功能寄存器:能力寄存器空間,實現可選擇實現的寄存器;但如下寄存器必須實現:PCIE Capality; Power Management; MSI/MSIX;4.能力寄存器采用鏈表結構;```c//==這是從0到大進行排列;Offset 0x40: | Cap ID (8b) | Next Ptr (8b) | Cap Data (16b) |  → 4字節對齊Offset 0x80: | Cap ID (8b) | Next Ptr (8b) | Cap Data (16b) |  → 下一個對齊項```ID:表示能力A寄存器的類型<什么寄存器>;Pointer表示下一個能力寄存器地址B_addr;其圖如下所示:

在這里插入圖片描述

例如:PCIE能力寄存器中的PM/MSI寄存器,軟件如何進行獲取呢?

		Steps:1.系統軟件發起addr:0x34的讀請求,訪問PCI header Capalibity point寄存器(起始是固定的);2.系統軟件讀取addr:0x34 pointer:0x40,返回結果表示PCIE下一組寄存器的地址為0x40;3.系統軟件發起addr:0x40的讀請求;4.系統軟件讀取:addr:0x40, data:{0x50,0x1};ID:0x1表示類型為PM寄存器;Next Pointer: 0x50表示訪問下一個能力寄存器的地址位0x50;5.系統軟件再進一步讀取0x50地址,讀取數據{0x70,0x05};ID:0x5表示位MS寄存器;NextPointer: 0x70表示訪問下一個能力寄存器的地址為0x70;6.通過查手冊可知:取addr:0x54,0x55,0x56分別配置MSI中斷地址和數據;0x54:表示Message lower address;  0x58: Message upper address;0xC0:表示Message data;

步驟圖如下:
在這里插入圖片描述

	 小結:鏈表是單鏈表結構,就是軟件的數據結構,只能進行便來訪問,不能通過index索引來訪問;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902031.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902031.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902031.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 熱點二維碼簡單示例

Android 熱點二維碼簡單示例 一、前言 Android 原生設置有熱點二維碼分享功能&#xff0c;有些系統應用也會有這個需求。 下面看看是如何實現的。 本文是一個比較簡單的內容。 二、熱點二維碼生成實現 1、效果 整個應用就一個普通的Activity&#xff0c;顯示一個按鈕和二維…

uv:重新定義Python開發效率的下一代工具鏈

在Python生態系統中&#xff0c;包管理和項目工具鏈的復雜性一直是開發者面臨的一大挑戰。從依賴管理、虛擬環境創建到多版本Python切換&#xff0c;傳統的工具鏈&#xff08;如pip、virtualenv、poetry等&#xff09;雖然功能強大&#xff0c;但操作繁瑣、性能不足的問題長期存…

T101D加固平板電腦:無人機地面站的高效智能控制核心

隨著無人機技術在應急救援、農業監測、軍事偵察等領域的廣泛應用&#xff0c;對地面控制設備的要求也日益提高。魯成偉業推出的T101D加固平板電腦憑借其高性能、強防護和專業化設計&#xff0c;成為無人機地面站的核心控制終端&#xff0c;為復雜環境下的作業提供了可靠支持。 …

Datawhale AI春訓營】AI + 新能源(發電功率預測)Task1

賽題鏈接 官網 新能源發電功率預測賽題進階方案 下面是ai給的一些建議 新能源發電功率預測賽題進階方案 一、時序特性深度挖掘 1. 多尺度周期特征 # 分鐘級周期編碼 train[15min_index] (train[hour]*4 train[minute]//15)# 周周期特征 train[weekday] pd.to_datetime…

山東科技大學深度學習考試回憶

目錄 一、填空&#xff08;五個空&#xff0c;十分&#xff09; 二、選擇題(五個&#xff0c;十分&#xff09; 三、判斷題&#xff08;五個&#xff0c;五分&#xff09; 四、論述題&#xff08;四個&#xff0c;四十分&#xff09; 五、計算題&#xff08;二個&#xff…

Redis線上操作最佳實踐有哪些?

大家好&#xff0c;我是鋒哥。今天分享關于【Redis線上操作最佳實踐有哪些?】面試題。希望對大家有幫助&#xff1b; Redis線上操作最佳實踐有哪些? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 在使用 Redis 時&#xff0c;尤其是在生產環境中&#xff0c;合理…

mac中的zip文件壓縮與壓縮文件中指定目錄刪除

問題 在使用mac的圖形界面壓縮文件后&#xff0c;往往那個壓縮文件中帶有__MACOSX文件&#xff0c;但是&#xff0c;這個文件夾又是我們不需要的目錄&#xff0c;所有&#xff0c;需要對mac圖形化界面壓縮后的文件目錄進行刪除&#xff0c;改如何做&#xff1f; 檢查壓縮文件…

【記錄】服務器用命令開啟端口號

這里記錄下如何在服務器上開啟適用于外界訪問的端口號。 方法 1 使用防火墻 1 su &#xff0c;命令 輸入密碼 切換到root節點 2 開啟防火墻 systemctl start firewalld3 配置開放端口 firewall-cmd --zonepublic --add-port8282/tcp --permanent4 重啟防火墻 firewall-cmd…

深度學習-torch,全連接神經網路

3. 數據集加載案例 通過一些數據集的加載案例&#xff0c;真正了解數據類及數據加載器。 3.1 加載csv數據集 代碼參考如下 import torch from torch.utils.data import Dataset, DataLoader import pandas as pd ? ? class MyCsvDataset(Dataset):def __init__(self, fil…

C++/Python實現RGB和HSI相互轉換

1--C版本 #include <opencv2/opencv.hpp> #include <iostream> #include <cmath>// RGB to HSI cv::Vec3f RGBtoHSI(cv::Vec3b rgb) {float B rgb[0] / 255.0f;float G rgb[1] / 255.0f;float R rgb[2] / 255.0f;float num 0.5f * ((R - G) (R - B));f…

【Linux我做主】make和makefile自動化構建

make和makefile自動化構建 make和makefile自動化構建github地址前言背景介紹為什么需要make和makefile&#xff1f; make和makefile解析什么是make和makefile依賴關系和依賴方法核心語法結構簡單演示編譯清理 多階段編譯示例 make時執行的順序場景1&#xff1a;clean目標在前(特…

Qt 入門 5 之其他窗口部件

Qt 入門 5 之其他窗口部件 本文介紹的窗口部件直接或間接繼承自 QWidget 類詳細介紹其他部件的功能與使用方法 1. QFrame 類 QFrame類是帶有邊框的部件的基類。它的子類包括最常用的標簽部件QLabel另外還有 QLCDNumber、QSplitter,QStackedWidget,QToolBox 和 QAbstractScrol…

JAVA學習-多線程

線程 線程(Thread)是一個程序內部的一條執行流程。 程序中如果只有一條執行流程&#xff0c;那這個程序就是單線程的程序。 線程的常用方法及構造器&#xff1a; Thread提供的常用方法public void run() 線程的任務方法public void start() 啟動線程public String getName() …

Github 2025-04-19Rust開源項目日報 Top10

根據Github Trendings的統計,今日(2025-04-19統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Rust項目10Python項目1Rust: 構建可靠高效軟件的開源項目 創建周期:5064 天開發語言:Rust協議類型:OtherStar數量:92978 個Fork數量:12000…

OpenLayers:視圖變換的方法

一、什么是視圖變換&#xff1f; 視圖變換就是指視圖的 extent&#xff08;范圍&#xff09;、center&#xff08;中心點&#xff09;、zoom&#xff08;縮放級別&#xff09;、 resolution&#xff08;分辨率&#xff09;、rotation&#xff08;旋轉角&#xff09;等參數發生…

數字孿生火星探測車,星際探索可視化

運用圖撲構建數字孿生火星探測車&#xff0c;高精度還原外觀與內部構造。實時映射探測車在火星表面的移動、探測作業及設備狀態&#xff0c;助力科研人員遠程監測、分析數據&#xff0c;為火星探索任務提供可視化決策支持。

【NLP 66、實踐 ? 基于Agent + Prompt Engineering文章閱讀】

你用什么擦干我的眼淚 莎士比亞全集 工業紙巾 還是你同樣泛紅的眼睛 —— 4.19 一、?【核心函數】定義大模型調用函數 call_large_model prompt&#xff1a;用戶傳入的提示詞&#xff08;如 “請分析這篇作文的主題”&#xff09;&#xff0c;指導模型執行任務 client&…

黑馬Java基礎筆記-1

JVM&#xff0c;JDK和JRE JDK是java的開發環境 JVM虛擬機&#xff1a;Java程序運行的地方 核心類庫&#xff1a;Java已經寫好的東西&#xff0c;我們可以直接用。 System.out.print中的這些方法就是核心庫中的所包含的 開發工具: javac&#xff08;編譯工具&#xff09;、java&…

PR第一課

目錄 1.新建 2.PR內部設置 3.導入素材 4.關于素材窗口 5.關于編輯窗口 6.序列的創建 7.視頻、圖片、音樂 7.1 帶有透明通道的素材 8.導出作品 8.1 打開方法 8.2 導出時&#xff0c;需要修改的參數 1.新建 2.PR內部設置 隨意點開 編輯->首選項 中的任意內容&a…

Xcode16 調整 Provisioning Profiles 目錄導致證書查不到

cronet demo 使用的 ninja 打包&#xff0c;查找 Provisioning Profiles 路徑是 ~/Library/MobileDevice/Provisioning Profiles&#xff0c;但 Xcode16 把該路徑改為了 ~/Library/Developer/Xcode/UserData/Provisioning Profiles&#xff0c;導致在編譯 cronet 的demo 時找不…