PMC67x PPC vxWorks ドライバー V2.13.2 インストール
bootromからデバイスを認識させる手順についてはここを参照ください。
1. メディアキットのファイルを解凍します。
2. CPUボードのBSPディレクトリィへ下記のファイルをコピーします。
vxWorks5.xの場合
例: C:\Tornado2.2.1\target\config\mv6100
・target (フォルダごと)
・if_rxgbiSENSPPC_54.o
・if_rxgbiSENSPPC_55.o
・rxLocateDevicePPC_54.o
・rxLocateDevicePPC_55.o
・rxPciLibPPC_54.o
・rxPciLibPPC_55.o
・rxgbi_usr.h
・rxsetup.c
・rxsetup.h
・rxTest.c
vxWorks6.xの場合
例: C:\WindRiver\vxworks-6.5\target\config\mv6100
・target (フォルダごと)
・if_rxgbiSENSPPC_60.o
・if_rxgbiSENSPPC_61.o
・if_rxgbiSENSPPC_62.o
・if_rxgbiSENSPPC_63.o
・if_rxgbiSENSPPC_64.o
・if_rxgbiSENSPPC_65.o
・if_rxgbiSENSPPC_66.o
・if_rxgbiSENSPPC_67.o
・rxLocateDevicePPC_60.o
・rxLocateDevicePPC_61.o
・rxLocateDevicePPC_62.o
・rxLocateDevicePPC_63.o
・rxLocateDevicePPC_64.o
・rxLocateDevicePPC_65.o
・rxLocateDevicePPC_66.o
・rxLocateDevicePPC_67.o
・rxPciLibPPC_60.o
・rxPciLibPPC_61.o
・rxPciLibPPC_62.o
・rxPciLibPPC_63.o
・rxPciLibPPC_64.o
・rxPciLibPPC_65.o
・rxPciLibPPC_66.o
・rxPciLibPPC_67.o
・rxgbi_usr.h
・rxsetup.c
・rxsetup.h
・rxTest.c
コピーしたファイルで、以下のファイルは拡張子を.o から .objへ変更します。
if_rxgbiSENSPPC_xx.o ⇒ if_rxgbiSENSPPC_xx.obj
rxPciLibPPC_xx.o ⇒ rxPciLibPPC_67.obj
※make cleanを実行するとファイルが削除されてしまいますので
ファイル名を .o から .obj へ変更しておいてください。
3. BSPのMakefileを編集します。
Makefileファイル
下記の行へ下線部を追加します。
MACH_EXTRA = if_rxgbiSENSPPC_xx.obj rxPciLibPPC_xx.obj rxsetup.obj rxTest.obj
※xxの部分は使用されているvxWorksのバージョンに合せて下さい。
xx=54 ⇒ vxWorks5.4 xx=55 ⇒ vxWorks5.5(5.5.1)
xx=60 ⇒ vxWorks6.0 xx=67 ⇒ vxWorks6.7
4. rxsetup_target.hファイルを御使用の環境へ合わせて作成します。
targetディレクトリィから御使用のCPUボードに該当する
rxsetup_xxxxxx.h ファイルがある場合、そのファイルをBSP
フォルダーへコピーし、名前をrxsetup_target.hヘ変更します。
rxsetup_dy4179.h Dy4 SVME179,181,182,183用
rxsetup_frc6750.h Force PowerCore6750、PowerCoreシリーズ用
rxsetup_mv2400.h Motorola MVME2400用
rxsetup_mv2600.h Motorola MVME2600用
rxsetup_mv5100.h Motorola MVME5100用
rxsetup_mv5500.h Motorola MVME5500用
rxsetup_mv6100.h Motorola MVME6100用
rxsetup_ppc7d.h Radstone PPC7d用
rxsetup_vme7050.h GEfanuc VMIVME7050用
rxsetup_vpmc6a.h Thales VMPC6a用
rxsetup_ppc_skel.h その他PPCボード用Skelton
※このファイルはあくまでテンプレートですので御使用のCPUボードでそのまま使えるとは限りません。
rxsetup_target.hファイルの下記行を変更します。
使用するボードに合わせて変更してください。
例: MVME6100の場合
#include "mv6100/config.h" /* read values from the BSP header */
↓ 変更
#include "config.h" /* read values from the BSP header */
・68行付近の下線部を変更します。
vxWorks5.xの場合
#include <stdio.h> |
vxWorks6.xの場合はそのままOkです。
・次に、使用するPMCカードのポート数に合わせてinitStringパラメータを用意します。
このパラメータは使用するポート数につき1つ必要になります。
例:
PMC676/1 1ポート initString0のみ
PMC676/2 2ポート initString0、initString1
PMC673 3ポート initString0、initString1、initString2
PMC677 4ポート initString0、initString1、initString2、initString3
105行付近に 下記の行があります。
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
複数ポートのカードの場合はポート数分定義を追加してください。
例: 2ポートの場合
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString1 =
"-1:1:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
例: 3ポートの場合
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString1 =
"-1:1:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString2 =
"-1:2:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
例: 4ポートの場合
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString1 =
"-1:1:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString2 =
"-1:2:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
char *initString3 =
"-1:3:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500";
ポートにより赤字部分の番号が異なりますので注意してください。
・rxConfigAllTestルーチンの変更
164行付近の#endif の行を削除し135行へ#endifを定義してください。
これで、rxConfigAllTestルーチンがコンパイルされるようになります。
また、使用するポート数に合わせて下記行の変更が必要になります。
最初の設定内容:
if (RxTest(0, "192.168.10.10", initString1) != 0)
return ERROR;
if (RxTest(1, "192.168.20.20", initString2) != 0)
return ERROR;
if (RxTest(2, "192.168.30.30", initString3) != 0)
return ERROR;
使用ポート数に合わせて定義を削除するか必要な場合には追加してください。
また、IPアドレスは、太文字箇所を変更してください。
例: 1ポートのみの場合
if (RxTest(0, "192.168.10.10", initString0) != 0)
return ERROR;
例: 2ポートの場合
if (RxTest(0, "192.168.10.10", initString0) != 0)
return ERROR;
if (RxTest(1, "192.168.20.10", initString1) != 0)
return ERROR;
例: 3ポートの場合
if (RxTest(0, "192.168.10.10", initString0) != 0)
return ERROR;
if (RxTest(1, "192.168.20.10", initString1) != 0)
return ERROR;
if (RxTest(2, "192.168.30.10", initString2) != 0)
return ERROR;
例: 4ポートの場合
if (RxTest(0, "192.168.10.10", initString0) != 0)
return ERROR;
if (RxTest(1, "192.168.20.10", initString1) != 0)
return ERROR;
if (RxTest(2, "192.168.30.20", initString2) != 0)
return ERROR;
if (RxTest(3, "192.168.40.30", initString3) != 0)
return ERROR;
JumboFrame使用時の設定について
JumboFrameを使用する場合には、initStringパラメータの一番最後の1500を変更してください。
例: MTUが9000の場合
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:9000";
送受信ディスクリプタ数の設定について
送受信に使用するディスクリプタの数を変更することができます。
デフォルトでは128になっていますが、最高で256まで大きく出来ます。
例: 送受信ディスクリプタを256へ変更
char *initString0 =
"-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:256:256:1500";
6. vxWorksカーネルを再構築します。
make vxWorks
※エラーが出る場合は、make cleanを一度実行してください。
7. ”6.”にて作成した、vxWorksカーネルを立ち上げます。
8. 下記のように入力してドライバーを組み込ます。
-> rxConfigAllTest
初期化例: PMC677 4ポート vxWorks6.7
-> rxConfigAllTest initString = 0:-1:0:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500 RAMiX gigabit Ethernet driver VxWorks 6.7 M-GBI-SEV-ARC(2.13.2) [Dec 1 2009 15:48:29] pDrvCtrl = 0x0x1fff9c20 Found device 8086:1079 at 3:4.0 PCI Address was a1000000 to device Application address is a1000000 Connect to interrupt 0x50 level 0x50 Set IP address to 192.168.10.10 Address set OK initString = 1:-1:1:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500 RAMiX gigabit Ethernet driver VxWorks 6.7 M-GBI-SEV-ARC(2.13.2) [Dec 1 2009 15:48:29] pDrvCtrl = 0x0x2492d00 Found device 8086:1079 at 3:4.1 PCI Address was a1040000 to device Application address is a1040000 Connect to interrupt 0x51 level 0x51 Set IP address to 192.168.20.20 Address set OK initString = 2:-1:2:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500 RAMiX gigabit Ethernet driver VxWorks 6.7 M-GBI-SEV-ARC(2.13.2) [Dec 1 2009 15:48:29] pDrvCtrl = 0x0x2513fd0 Found device 8086:1079 at 3:5.0 PCI Address was a1080000 to device Application address is a1080000 Connect to interrupt 0x51 level 0x51 Set IP address to 192.168.30.30 Address set OK initString = 3:-1:3:0:-1:0x0:0x0:-1:-1:0x80000000:128:128:1500 RAMiX gigabit Ethernet driver VxWorks 6.7 M-GBI-SEV-ARC(2.13.2) [Dec 1 2009 15:48:29] pDrvCtrl = 0x0x25952a0 Found device 8086:1079 at 3:5.1 PCI Address was a10c0000 to device Application address is a10c0000 Connect to interrupt 0x52 level 0x52 Set IP address to 192.168.40.30 Address set OK value = 0 = 0x0 ->
|
9. 下記を入力し、ネットワークインターフェースが作成されているか確認します。
vxWorks5.xの場合
-> ifShow
vxWorks6.xの場合
-> ifConfig
表示例: PMC677 4ポート vxWorks6.7
-> ifconfig lo0 Link type:Local loopback Queue:none inet 127.0.0.1 mask 255.255.255.255 UP RUNNING LOOPBACK MULTICAST MTU:1500 metric:1 VR:0 ifindex:1 RX packets:0 mcast:0 errors:0 dropped:0 TX packets:0 mcast:0 errors:0 collisions:0 unsupported proto:0 RX bytes:0 TX bytes:0 geisc0 Link type:Ethernet HWaddr 00:01:af:17:d1:62 Queue:none rxg0 Link type:Ethernet HWaddr 00:30:f7:90:0a:00 Queue:none rxg1 Link type:Ethernet HWaddr 00:30:f7:90:0a:01 Queue:none rxg2 Link type:Ethernet HWaddr 00:30:f7:90:0a:02 Queue:none rxg3 Link type:Ethernet HWaddr 00:30:f7:90:0a:03 Queue:none value = 0 = 0x0 |