遇到的問題
- PCIE link不穩定
- 配置空間讀寫正常,Memory mapping空間讀寫異常
緣由
之前對PCIE的認識一直停留在概念的階段,只知道是一個高速通訊協議,主要用於板內、板間的高速BUS。正好公司最近在調試一個PowerPC平台的PCIE BUS的BSP。需要一些PCIE的硬件、軟件知識。下面通過解決實際問題過程的方法來進一步理解PCIE總線協議。但也僅僅限於工程應用(實際產品中調試、應用)層面。
具體解決過程
PCIE 物理層link 不穩定
啟動u-boot后,可以看到PCIE link status信息log
從log上分析:系統啟動了3個PCIE controller,PCIE 號為:0.0.0 2.0.0 4.0.0。
三個數字的具體含義為:0.0.0 :Bus Number Device Number Function Number。
這三個Host Bridge 下面分別掛了一個EP設備,PCIE 號為:1.0.0 、3.0.0 、5.0.0。
正常看到這些PCIE bridge 和EP說明PCIE 讀PCIE的配置空間是正確的,PCIE在physical 的link狀態是OK的。
可以使用pci header + PCIE號的方式查看Bridge和EP的Config 信息。
若出現讀取配置信息不穩定的情況,則說明PCIE link 不穩定。需要進一步排查硬件,軟件輔助查看link status的方法是查看PCIE Host Bridge的link status的寄存器值。PCIE 規范里有一個LTSSM(Link Training and Status State Machine),各種status的code規范里都有定義。
這個LTSSM在PCIE Extend Config Space里面。在P3041中的offset為0x404。
可以使用命令:pci display.b 0.0.0 404查看LTSSM狀態。
正常情況下的輸出:
PCIE 初始化完成后會進入L0狀態。異常狀態見PCIE link 異常log。
物理層link 不穩定,懷疑以下原因:
- 高速串行信號質量問題
- Serdes電源問題
- 時鍾問題
Serdes電源經過測量后,基本排除。
高速信號完整性問題經過示波器測量后,也基本排除。
時鍾問題,最開始只是簡單測試了下時鍾的頻率和幅值。沒有實質性去分析時鍾的jitter等時鍾質量問題。后分析原理圖發現,pcie的Host和EP端使用了不同的pcie時鍾IC,也就是說使用了非同源時鍾。在沒有詳細查看pcie specification關於pcie時鍾的情況下,將host和EP端的時鍾改為同源時鍾(當然是選擇飛線嘍),pcie物理層link問題解決。
項目沒有那么緊張的時候,反思此事,仔細查看pcie specification中關於時鍾的要求,並沒有要求Host和EP端必須使用同源時鍾。只是對同源、非同源時鍾的精度做了要求。
同源情況下要求100M. +-600ppm
非同源時鍾要求100M. +-300ppm
哦,原來是這樣,接着去看原理圖中選用的PCIE時鍾IC,發現EP端的pcie時鍾IC為25M輸入然后倍頻出來100M時鍾的,且使用了一個帶有SSC功能的IC,原理配配置上打開了該功能。根據pcie規范中介紹的,該功能
為pcie一項技術,該功能為了減少板級EMI對時鍾做了特殊能量擴散處理。有SSC功能的時鍾超出300ppm的抖動,但在600ppm內。
這樣得出一個結論,我們使用了非同源的設計,EP端使用的pcie時鍾IC的jitter超出了300ppm。看來不能穩定的link也是情理之中。這樣看來就有另一種解決方法,把EP端PCIE側的SSC功能關閉,去實踐發現將SSC功能關閉后,可以正常穩定link。
我們使用的pcie時鍾芯片支持SSC且配置打開,時鍾ppm在300到600之間。又非同源,因此link不穩定。將此功能關閉,時鍾在300ppm,因此可以穩定link。
解決方法:
- 飛線統一成同一時鍾源。
- 將EP端的時鍾IC的SSC功能關閉。
PCIE memap空間讀寫異常
問題:
- pcie可以正常讀寫配置空間,但無法正常讀寫memap 空間
最后定位問題:
一個address是36bit的,但軟件定義為一個32bit的變量,從而導致軟件讀寫pcie memap空間失敗(讀錯了位置)。
解決方法:fixed the software bug。☺
這個問題定位主要需要一些關於PICE的一些地址的知識,要理解他們之間的關系。
- PCIE空間的BAR
- CPU訪問PCIE設備的高速外設(IO)的地址
-
應用層訪問PCIE memap的地址
來張圖吧,
上圖中,有幾個關鍵的Address,Virtual Address這個大家比較好理解,但凡有一點在linux下開發經驗的程序員都知道linux下的應用程序只能訪問Virtual Address,那如果我們需要訪問一些指定的Physical Address怎么辦,這在driver開發當中十分常見。linux提供了mamap系統調用,用於Virtual Address和Physical Address的轉換。另外,PICE設備在讀寫時使用PCIE的BAR地址,BAR地址是PCIE控制器以memap 方式讀寫PCIE EP設備時使用的地址,是PCIE協議使用的地址。
我們以寫PCIE EP的memap空間為例子說明一下地址之間的轉換是怎么做的。PCIE的memap空間是OS分配的,一般是一個固定的地址和大小,然后OS啟動后,PCIE的應用程序將PCIE的memap的Physical Address通過mamap系統調用映射為Virtual Address,然后應用程序就會通過此地址讀寫EP設備的memap空間,當CPU發出寫EP設備的memap空間時,PCIE控制器會根據設置的BAR地址轉換成相應的PICE協議要求的地址。BAR是在PCIE枚舉的過程中設置的,一般通過枚舉方式設置成合理的地址值,EP這一側會根據配置的值將自身的memap地址空間映射到設置的地址上去。
舉一個具體的例子:
CPU分配的PCIE Physical Address為0xc20000000,設置的BAR地址為0xe0000000。應用層APP實際使用的Virtual Address和OS有關系,不同的進程調用mamap映射為同一個Physical Address可能會產生不同的Virtual Address值。
總結
應用層調試方法,config space配置、memap空間的理解
Pcie控制器的配置、使用
從實際調試PCIE設備的過程看,設備調試和使用主要涉及到兩個方面:config space和MMIO space。配置空間主要是用於配置PCIE設備。很多PCI設備僅僅支持64字節的配置空間。PCI和PCIe配置空間的區別如下:
PCI/PCI-X和PCIe設備還擴展了0x40和0xFF這段配置空間,這段空間主要存放一些與MSI或者MSI-X 中斷機制相關的Capability結構。其中所有能夠提交中斷請求的PCIe設備,必須支持MSI或者MSI-X 中斷機制相關的Capability結構。
PCIe設備還支持0x100 -0xFFF這段擴展配置空間。PCIe設備的擴展配置空間最大為4KB,在PCIe總線的擴展配置空間中,存放PCIe所獨有的一些Capability結構,而PCI設備不能使用這段空間。
在x86處理器中,使用CONFIG_ADDRESS寄存器與CONFIG_DATA寄存器訪問0x00-0xFF,而使用ECAM方式訪問0x000-0xFFF這段空間;而在PowerPC處理器中,可以使用CFG_DATA和CFG_ADDR寄存器訪問0x000-0xFFF。
MMIO(Memory mapping I/O)即內存映射I/O,它是PCI規范的一部分,I/O設備被放置在內存空間而不是I/O空間。從處理器的角度看,內存映射I/O后系統設備訪問起來和內存一樣。這樣訪問AGP/PCI-E顯卡上的幀緩存,BIOS,PCI設備就可以使用讀寫內存一樣的匯編指令完成,簡化了程序設計的難度和接口的復雜性。I/O作為CPU和外設交流的一個渠道,主要分為兩種,一種是Port I/O,一種是MMIO(Memory mapping I/O)。
底層使用pcie接口的軟件移植需要考慮以下方面:
- 確定address bus的寬度,是32bit還是64bit或者其他。
- 確定CPU的大小端,以及PCIE的大小端問題。
- check下PICE max payload問題。
附錄
$$$develop from single control storeage based on P3041
$$$Hit any key to stop autoboot: 0
=> pci display.b 0.0.0 400 00000400: 00 00 00 00 33 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 06 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 16 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 33 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 37 00 00 00 e2 04 00 00 00 00 00 00 00000410: 02 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 16 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 16 00 00 00 e2 04 00 00 00 00 00 00 00000410: 00 01 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 02 01 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 06 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 35 00 00 00 e2 04 00 00 00 00 00 00 00000410: 00 01 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 35 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 01 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 16 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 06 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 16 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 49 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 06 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 => pci display.b 0.0.0 400 00000400: 00 00 00 00 02 00 00 00 e2 04 00 00 00 00 00 00 00000410: 01 00 00 00 19 00 00 00 00 00 00 00 40 40 96 96 00000420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000430: 00 00 00 00 00 00 00 00 5c 41 c2 00 00 00 00 00 =