こんばんは、ひろひとです。 先日、インターフェース社の2ポートRS-232拡張カード PCI-4141Pを FreeBSDで扱う機会がありましたので、結果を報告します。
■結果 PUC(4)経由で、2ポートとも使うことができる。 ■潰せなかった問題点 高速で通信を行うと、 搭載されているハードウェアFIFO (64byte)以上の データを、ごくまれに取りこぼす。 ■環境 CPU: Celeron4 2.1GHz ChipSet: i845E OS: FreeBSD 6.2R ■pciconf 初期状態では、以下の通りです。 [EMAIL PROTECTED]:2:0: class=0xff0000 card=0x00011147 chip=0x102d1147 rev=0x03 hdr=0x00 vendor = 'Interface Corp' ■使い方 /usr/src/sys/dev/puc/pucdata.c ファイルへ、以下のパッチを当てます。 *** pucdata.c.orig Tue Sep 5 03:52:09 2006 --- pucdata.c Tue Apr 24 23:42:24 2007 *************** *** 1294,1298 **** --- 1294,1308 ---- }, }, + /* Interface corp. for industrial PCI serial card */ + { "Interface PCI-4141P Dual port RS-232 card", + { 0x1147, 0x102d, 0, 0 }, + { 0xffff, 0xffff, 0, 0 }, + { + { PUC_PORT_TYPE_COM, 0x14, 0x00, COM_FREQ }, + { PUC_PORT_TYPE_COM, 0x18, 0x00, COM_FREQ }, + }, + }, + { 0 } }; /usr/share/misc/pci_vendors ファイルへ、以下のエントリを追加します。 1147 Interface Corp 102d PCI-4141P Dual port RS-232 interface GENERICカーネルコンフィグファイルをベースに、以下の変更を加えて カーネルのコンパイル&インストールします。 device puc # コメントアウトされている options PUC_FASTINTR # 追加する インストールが終わったら、リブートすればsio4とsio5で使えるようになります。 ■リブート後 (dmesg) puc0: <Interface PCI-4141P Dual port RS-232 card> port 0x9000-0x900f,0x9400-0x9407,0x9800-0x9807 irq 22 at device 2.0 on pci2 sio4: <Interface PCI-4141P Dual port RS-232 card> on puc0 sio4: type 16550A sio5: <Interface PCI-4141P Dual port RS-232 card> on puc0 sio5: type 16550A (pciconf -lv) [EMAIL PROTECTED]:2:0: class=0xff0000 card=0x00011147 chip=0x102d1147 rev=0x03 hdr=0x00 vendor = 'Interface Corp' device = 'PCI-4141P Dual port RS-232 interface' p.s. こういうFA系ボードのFreeBSDドライバって、需要はあるんでしょうか? -- ひろひと