2

私は o/s を実行していないので、lspci のようなものを使用して pcie をデコードできません (lspci がファイルから入力を受け取ることを望みます!)。

以下に 16 進数のダンプがあります (これはザイリンクスの Ultrascale FPGA ですが、質問は一般的なものです)。機能が開始する場所と、ネクスト キャップ ポインターをデコードして構成空間を移動する方法を理解しようとしています。ザイリンクス PG156 ページ 2-24 によると、機能は構成空間の先頭から 0x80 で開始されますが、0x80 (0x80030001) の値は意味をなさないようです。次のポインターはゼロですが、明らかにより多くの機能があります。

機能がどこから始まるかについて、オンラインでも標準でも明確な答えを見つけることができません。

000 0x813410ee
004 0x00100000
008 0x06800000
00c 0x00010000
010 0x0000000c
014 0x00000000
018 0x00000000
01c 0x00000000
020 0x00000000
024 0x00000000
028 0x00000000
02c 0x00000000
030 0x00000000
034 0x000000c0
038 0x00000000
03c 0x00000100
040 0x00000000
044 0x00000000
048 0x00000000
04c 0x00000000
050 0x00000000
054 0x00000000
058 0x00000000
05c 0x00000000
060 0x00000000
064 0x00000000
068 0x00000000
06c 0x00000000
070 0x00000000
074 0x00000000
078 0x00000000
07c 0x00000000
080 0x80030001
084 0x00000008
088 0x00000000
08c 0x00000000
090 0x00800005
094 0x00000000
098 0x00000000
09c 0x00000000
0a0 0x00000000
0a4 0x00000000
0a8 0x00000000
0ac 0x00000000
0b0 0x00000011
0b4 0x00000000
0b8 0x00000000
0bc 0x00000000
0c0 0x00420010
0c4 0x00008023
0c8 0x00012910
0cc 0x0073f043
0d0 0x20410000
0d4 0x00000000
0d8 0x00400000
0dc 0x00000000
0e0 0x00000000
0e4 0x00000012
0e8 0x00000000
0ec 0x0000000e
0f0 0x00030003
0f4 0x00000000
0f8 0x00000000
0fc 0x00000000
100 0x30020001
104 0x00000000
108 0x00400000
10c 0x00462030
110 0x00000001
114 0x0000e000
118 0x00000000
11c 0x00000000
120 0x00000000
124 0x00000000
128 0x00000000
12c 0x00000000
130 0x00000000
134 0x00000000
138 0x00000000
13c 0x00000000
140 0x0001000e
144 0x00000000
148 0x00000000
14c 0x00000000
150 0x30010003
154 0x00000000
158 0x00000000
15c 0x00000000
160 0x00010004
164 0x00000000
168 0x00000000
16c 0x00000000
170 0x00000000
174 0x00000000
178 0x00000000
17c 0x00000000
180 0x00000000
184 0x00000000
188 0x00000000
18c 0x00000000
190 0x00000000
194 0x00000000
198 0x00000000
19c 0x00000000
1a0 0x00000000
1a4 0x00000000
1a8 0x00000000
1ac 0x00000000
1b0 0x00000000
1b4 0x00000000
1b8 0x00010018
1bc 0x00000000
1c0 0x00010016
1c4 0x00000007
1c8 0x00000000
1cc 0x00000100
1d0 0x00000000
1d4 0x00000000
1d8 0x00000000
1dc 0x00000000
1e0 0x00000000
1e4 0x00000000
1e8 0x00000000
1ec 0x00000000
1f0 0x00000000
1f4 0x00000000
1f8 0x00000000
1fc 0x00000000
200 0x00000010
204 0x00000000
208 0x00000000
20c 0x00000000
210 0x00000000
214 0x00010000
218 0x00000000
21c 0x00000553
220 0x00000001
224 0x00000000
228 0x00000000
22c 0x00000000
230 0x00000000
234 0x00000000
238 0x00000000
23c 0x00000000
240 0x00000000
244 0x00000000
248 0x00000000
24c 0x00000000
250 0x00000000
254 0x00000000
258 0x00000000
25c 0x00000000
260 0x00000000
264 0x00000000
268 0x00000000
26c 0x00000000
270 0x00000000
274 0x30010017
278 0x00000005
27c 0x00000000
280 0x00000000
284 0x00000000
288 0x00000000
28c 0x00000000
290 0x00000000
294 0x00000000
298 0x00000000
29c 0x00000000
2a0 0x00000000
2a4 0x00000000
2a8 0x00000000
2ac 0x00000000
2b0 0x00000000
2b4 0x00000000
2b8 0x00000000
2bc 0x00000000
2c0 0x00000000
2c4 0x00000000
2c8 0x00000000
2cc 0x00000000
2d0 0x00000000
2d4 0x00000000
2d8 0x00000000
2dc 0x00000000
2e0 0x00000000
2e4 0x00000000
2e8 0x00000000
2ec 0x00000000
2f0 0x00000000
2f4 0x00000000
2f8 0x00000000
2fc 0x00000000
300 0x30010019
304 0x00000000
308 0x00000000
30c 0x3f003f00
310 0x3f003f00
314 0x3f003f00
318 0x3f003f00
31c 0x00000000
320 0x00000000
324 0x00000000
328 0x00000000
32c 0x00000000
330 0x00000000
334 0x00000000
338 0x00000000
33c 0x00000000
340 0x00000000
344 0x00000000
348 0x00000000
34c 0x00000000
350 0x00000000
354 0x00000000
358 0x00000000
35c 0x00000000
360 0x00000000
364 0x00000000
368 0x00000000
36c 0x00000000
370 0x00000000
374 0x00000000
378 0x00000000
37c 0x00000000
380 0x00000000
384 0x00000000
388 0x00000000
38c 0x00000000
390 0x00000000
394 0x00000000
398 0x00000000
39c 0x00000000
3a0 0x00000000
3a4 0x00000000
3a8 0x00000000
3ac 0x00000000
3b0 0x00000000
3b4 0x00000000
3b8 0x00000000
3bc 0x00000000
3c0 0x00010002
3c4 0x00000000
3c8 0x00000000
3cc 0x00000000
3d0 0x00000000
3d4 0x800000ff
3d8 0x00000000
3dc 0x00000000
3e0 0x00000000
3e4 0x00000000
3e8 0x00000000
3ec 0x00000000
3f0 0x00000000
3f4 0x00000000
3f8 0x00000000
3fc 0x00000000
4

4 に答える 4

4

わかりました、これがどのように機能するかがわかりました。標準機能と拡張機能の 2 種類の機能があります。最初の標準機能へのポインターは、構成レジスターの下位 8 ビットのオフセット 0x34 にあります。

そう

034 0x000000c0

0xc0 を指す

0c0 0x00420010

PCIe 機能レジスタ (0x10)、次のポインター (0x00、チェーンの終わり)、およびいくつかのメタデータ (デコードする仕様の 0x0042 参照 7.8.2) を見つける場所。

これとは別に、オフセット 0x0100 (仕様の参照 7.9) から始まる機能を拡張しました。

100 0x30020001

ここでは、高度なエラー報告機能の ID (0x0001)、そのバージョン (2)、および次のポインター (0x300) を見つけます。

300 0x30010019

ここでは、セカンダリ PCI Express 拡張機能 (0x0019)、そのバージョン (1)、および次のポインター (0x300 - それ自体を指しているので意味がありません) を見つけます。

于 2014-11-25T21:53:48.663 に答える
1

機能ポインタはアドレス 0x34 にあります。そこに表示される値は、移動先のアドレスです。あなたの場合は0xc0です。アドレス 0xC0 の値は 0x10 です。これは PCI Express Capability Structure を示します。次の値は 0x00 です。これは、リンクされたリストの終わりを示します。そうでなければ、ここにアドレスが表示され、そこにジャンプして続行したことになります。0x10 は PCI Express 機能構造です 0x05 は MSI 機能構造です 0x01 は MSI 機能構造です

于 2015-08-20T07:02:44.103 に答える
0

PCIe Extended capabilities ヘッダー構造について : 間違いがあると思います。

Bit 15:0 - ID これは、PCIe 拡張機能を識別するために使用できる ID 値です。この値は、PCIe ハードブロック インスタンスのプロパティを設定することで変更できます。読み取り専用。

Bit 19:16 - Rev これは、PCIe 拡張機能を識別するために使用できるリビジョン ID 値です。この値は、PCIe ハードブロック インスタンスのプロパティを設定することで変更できます。読み取り専用

31:20 - 長さ このフィールドは、PCI Express Extended Capability ヘッダー、Vendor-Specific ヘッダー、および残りのデータを含む構造全体のバイト数を示します。読み取り専用

ただし、情報は実際の数値では意味がありません(あなたが言うように)....

于 2016-04-26T10:20:37.227 に答える