使用者工具

網站工具


pcie_mechanism

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
pcie_mechanism [2025/06/23 16:47]
don [Mechanism #1:I/O Port-based(0xCF8 / 0xCFC)]
pcie_mechanism [2025/06/23 18:20] (目前版本)
don
行 14: 行 14:
 | 🚫 限制 | 無法存取多段 Bus 空間、無法支援完整 PCIe 擴展功能 | 需 BIOS/ACPI 支援並正確配置 MMCONFIG | | 🚫 限制 | 無法存取多段 Bus 空間、無法支援完整 PCIe 擴展功能 | 需 BIOS/ACPI 支援並正確配置 MMCONFIG |
  
-==== Mechanism #1:I/O Port-based(0xCF8 / 0xCFC) ====+==== Mechanism #1:I/O Port-based(0xCF8 / 0xCFC)====
  
 <code> <code>
行 28: 行 28:
   * 項目適用於老式 PCI 裝置或 BIOS 內存取 Host Bridge   * 項目適用於老式 PCI 裝置或 BIOS 內存取 Host Bridge
  
-0xCF8 Address 格式(32-bit)+<color #ed1c24>0xCF8 Address 格式(32-bit)</color>
 ^ Bit ^ 範圍 名稱 ^ 寬度 ^ 說明 ^ ^ Bit ^ 範圍 名稱 ^ 寬度 ^ 說明 ^
 | 31 | Enable Bit | 1 | 必須設為 1 才能啟用 | | 31 | Enable Bit | 1 | 必須設為 1 才能啟用 |
行 41: 行 41:
 如何透過 Mechanism 1 存取 bus 0  device 31  function 0  offset 0   如何透過 Mechanism 1 存取 bus 0  device 31  function 0  offset 0  
  
-Bus      = 0x00      → bit 27–20 = 0000_0000 +UINT32 pci_addr (1U << 31)           // Enable Bit 
-Device   = 0x1F (31→ bit 19–15 = 11111 +                | (0x00 << 16)         // Bus 0 
-Function = 0x03      → bit 14–12 = 011 +                (0x1F << 11        // Device 31 
-Offset   0x10      → bit 11–0  = 0000_0001_0000+                | (0x0 << 8)           // Function 0 
 +                | (0x10 & 0xFC);       // Offset (dword aligned)
  
     Enable Bit     = 0x80000000     Enable Bit     = 0x80000000
 +     Bus          = 0x00000000 +     Bus          = 0x00000000
-+     Devicec      = 0x000F8000++     Devicec      = 0x0000F800
 +     Function     = 0x00000000 +     Function     = 0x00000000
 +     Offset       = 0x00000000 +     Offset       = 0x00000000
行 54: 行 55:
 最終地址            = 0x800F8000 最終地址            = 0x800F8000
  
 +將最終 32bit 地址放入IO 0xCF8 , 再從 0xCFC 讀回
 </code> </code>
  
行 67: 行 69:
   * 可完整存取 PCIe Capabilities(超過 256 bytes)   * 可完整存取 PCIe Capabilities(超過 256 bytes)
   * 搭配 ACPI 的 MCFG Table 可以動態獲得配置空間範圍   * 搭配 ACPI 的 MCFG Table 可以動態獲得配置空間範圍
 +
 +
 +^ 欄位 ^ 位元區間 ^ 寬度 ^ 對應意義 ^
 +| Bus | 27–20 | 8 位元 | 支援 Bus 0–255 |
 +| Device | 19–15 | 5 位元 | 支援 Device 0–31 |
 +| Function | 14–12 | 3 位元 | 支援 Function 0–7 |
 +| Offset | 11–0 | 12 位元 | 支援 4KB 配置空間 |
 +| MMCONFIG BASE | 28+ | 不定 平台定義的起始地址 |
 +
  
  
行 85: 行 96:
  
 使用 Utility -> RW -> Memory 讀取 0xC00F8000  使用 Utility -> RW -> Memory 讀取 0xC00F8000 
 +
 </code> </code>
 +
 +<color #ed1c24>AMI code 直接 search "PCIEX_BASE_ADDRESS"  確認 base Address 值。</color>
 +
 +P2SB Device /  Bus 0 Device 31 Function 1 0ffset 0     最終位址 0xC00F9000\\
 +PMC Device  /  Bus 0 Device 31 Function 2 0ffset 0      最終位址 0xC00FA000
pcie_mechanism.1750668459.txt.gz · 上一次變更: 2025/06/23 16:47 由 don