コマンドを使用して、Brainboxes PX-246 PCI express シリアル カードを /dev/ttyS.. デバイスに割り当てようとしていますsetserial
が、このカードには I/O ポート アドレスがないようです (メモリ アドレスのみ)。
lspci -v
次のような結果になります。
05:00.0 Serial controller: Brain Boxes Device 4016 (rev 02) (prog-if 06 [16950])
Subsystem: Brain Boxes Device 4016
Flags: fast devsel, IRQ 18
Memory at f7600000 (32-bit, non-prefetchable) [size=16K]
Memory at f7400000 (32-bit, non-prefetchable) [size=2M]
Memory at f7200000 (32-bit, non-prefetchable) [size=2M]
Capabilities: [40] Power Management version 3
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [b0] MSI-X: Enable- Count=16 Masked-
Capabilities: [100] Device Serial Number 00-30-e0-11-11-00-01-50
Capabilities: [110] Power Budgeting <?>
I/O ポートではなくシリアル デバイスにメモリ アドレスを割り当てることは可能ですか?
現時点では、Ubuntu 16.04 でカードをテストしていますが、最終的には Fedora システムで使用される予定です。
ご協力いただければ幸いです。
答え1
OXPCIe952のデータシートは例えばここ3 ページには、5 ピンのハードウェア ストラップに応じて、チップをいくつかのモードで有効にできることが記載されています。
UART は、レガシー モード (I/O アドレス付き) とネイティブ モード (メモリ マップ、質問に示されている 3 つの BAR 付き) で使用できます。他の機能 (などの PCI デバイスなど) がない場合は05:00.1
、05:00.2
カードで 1 つのネイティブ UART (3 ページの表の 5 行目) が有効になっていることを意味します。また、13 ページで BAR の用途についても説明されています (興味がある場合)。推測したとおり、最初の BAR は UART のメモリ マップ I/O です。
確かに、このファイル8250_pci.c
には、このチップのレガシー UART とネイティブ UART の両方の PCI ID が含まれています。そのため、まず最初に試すべきことは、このファイルに PCI ID を追加し、再コンパイルして、動作するかどうかを確認することです。