PMC234 PPC vxWorks ドライバー V3.44.1 インストール

 PMC234 PPC vxWorks ドライバー V3.44.1 インストール


CompactFlashからvxWorksを起動させる手順についてはここを参照ください。


1. メディアキットのファイルを解凍します。

2. 添付されている、下記のファイルを御使用のBSPディレクトリィへコピーします。

・pmc233drvPPC_54.o
・pmc233drvPPC_55.o
・rxPciLibPPC_54.o
・rxPciLibPPC_55.o
・pmc233.h
・rxsetup.c
・util.c
 

3. BSPのMakefileを編集します。

    Makefileファイル

     下記の行へ下線部を追加します。

      MACH_EXTRA = pmc233drvPPC_xx.o rxPciLibPPC_xx.o rxsetup.o util.o

    ※xxの部分は使用されているvxWorksのバージョンに合せて下さい。
xx=54 ⇒ vxWorks5.4 xx=55 ⇒ vxWorks5.5(5.5.1)

 

4. rxsetup_target.hファイルを御使用の環境へ合わせて作成します。

メディアキットのtargetディレクトリィから御使用のCPUボードに該当する
rxsetup_xxxxxx.h ファイルがある場合、そのファイルをBSP
フォルダーへコピーし、名前をrxsetup_target.hヘ変更します。

rxsetup_dy4179.h Dy4 SVME179,181用
rxsetup_frc6750.h Force PowerCore6750、PowerCoreシリーズ用
rxsetup_mv2400.h Motorola MVME2400用
rxsetup_mv2600.h Motorola MVME2600用
rxsetup_mv5100.h Motorola MVME5100用
(MVME5500,6100については5100用を部分的に内容を変更追加することで使用可能です)

※弊社にて別途提供しています。
rxsetup_mv5500.h Motorola MVME5500用
rxsetup_mv6100.h Motorola MVME6100用

 

5. util.cファイルを変更します。

    30行目の下線部のパラメータを変更します。


   lStatus = pmc233Drv (0, 0x19,0x19,0x30000, 0x30100, 0xfe000000, 0, 8);
 

   なお、上記のパラメータは御使用されるCPUボードにより異なりますので
下記の一覧に当てはまる場合には、そのパラメータを使用してください。
一覧に該当しない場合には、パラメータを作成する必要があります。

Force Computers

CPCI-680
PMC1スロット使用時 "0,0xb,0xb,0x840020,0x840100,0xfe000000,0,0"
PMC2スロット使用時 "0,0xf,0xf,0x850020,0x850100,0xfe000000,0,0"
PowerCore-VME-6750
PMC1スロット使用時 "0,0xe,0xe,0x840000,0x840100,0xfe000000,0,0"
PMC2スロット使用時 "0,0×5,0x5,0x840000,0x840100,0xfe000000,0,0"

Motorola Computer Group

MVME-6100
PMC1スロット使用時 "0,0×50,0x50,0x10000,0x10100,0xa2800000,0,0"
PMC2スロット使用時 "0,0×52,0x52,0x10000,0x10100,0xa2800000,0,0"
MVME-5500
PMC1スロット使用時 "0,0×48,0x48,0x10000,0x10100,0x81800000,0,0"
MVME-5100
PMC1スロット使用時 "0,0×19,0x19,0x30000,0x30100,0xfe000000,0,0"
PMC2スロット使用時 "0,0x1c,0x1c,0x30000,0x30100,0xfe000000,0,0"
MVME-2400
PMC1スロット使用時 "0,0×19,0x19,0x30000,0x30100,0xfe000000,0,0"
PMC2スロット使用時 "0,0x1c,0x1c,0x30000,0x30100,0xfe000000,0,0"
MVME-2300
PMC1スロット使用時 "0,0×19,0x19,0x30000,0x30100,0xfe000000,0,0"
PMC2スロット使用時 "0,0x1c,0x1c,0x30000,0x30100,0xfe000000,0,0"
MVME-2600
PMC1スロット使用時 "0,0×19,0x19,0x30000,0x30100,0xfe000000,0,0"

 

 

  次に、下記の部分でドライバ初期化時にDOSFS2のパーティションを使用するか選びます。
パーティションを使用した場合には、あらかじめDOS,Windowsなどで設定されたパーティションを
そのまま使用できるようになります。
使用しない場合、パーティションはvxWorks上からディスクの全体を1パーティションとして設定をします。
パーティションを使用する場合には、①、②をコメントアウト、使わない場合には①のみをコメントアウト
します。

 

/* optional defines
#define USE_DOSFS2   ①
#define USE_DOSFS22  ②
#define USE_DOSFS2_PARTITIONING  ②
*/

↓パーティションを使用する場合

/* optional defines */
#define USE_DOSFS2
#define USE_DOSFS22
#define USE_DOSFS2_PARTITIONING

↓パーティションを使用しない場合

/* optional defines */
#define USE_DOSFS2
/* #define USE_DOSFS22
#define USE_DOSFS2_PARTITIONING
*/

 

 

6. vxWorksカーネルを再構築します。

    make vxWorks

7. ”6.”にて作成した、vxWorksカーネルを立ち上げます。

 

8. 下記のように入力してドライバーを組み込ます。


ディスクをフォーマットする場合
-> pmcdiskFormat 1

ディスクのマウントのみでフォーマットしない場合
-> pmcdiskFormat 0

9. 下記を入力し、ディレクトリィが作成されていれば正常に動作しています。

    -> ll "/pcfsA"

Listing Directory /pcfsA:
drwxrwxrwx   1 0      0                            2048 Jan    1   1980 testdir/
value = 0 = 0x0

 

vxWorksをCompactFlashから起動させる場合の設定手順

※なお、この手順は前のドライバインストール手順が正常に動作していることが前提となります。

PMC234のCompactFlashからvxWorksを起動させるには、vxWorksのBootROMに起動させるための
機能を追加させる必要が御座います。

移行にその設定手順について御説明いたします。

1. メディアキットのファイルを解凍します。

2. 添付されている、下記のファイルを御使用のBSPディレクトリィへコピーします。

    ・pmc233drvPPC_54.o
・pmc233drvPPC_55.o
・rxPciLibPPC_54.o
・rxPciLibPPC_55.o
・pmc233.h
・rxsetup.c

3. target/config/allディレクトリィのbootConfig.c、usrConfig.cをBSPディレクトリへコピーします。

    cp ../all/bootConfig.c .
cp ../all/usrConfig.c .

4. BSPのMakefileを編集します。

    Makefileファイル

     下記の行へ下線部を追加します。

      MACH_EXTRA = pmc233drvPPC_xx.o rxsetup.o

    ※xxの部分は使用されているvxWorksのバージョンに合せて下さい。
xx=54 ⇒ vxWorks5.4 xx=55 ⇒ vxWorks5.5(5.5.1)

     下記の行を追加します。

      BOOTCONFIG = bootConfig.c
USRCONFIG = usrConfig.c
 

5. 前述のrxsetup_target.hファイルを御使用の環境へ合わせる設定をします

6. config.hファイルへ下記を追加します。

/* include RAMiX PMC23x CompactFlash adapter */

#define    INCLUDE_PMC23X
#ifdef      INCLUDE_PMC23X
#define    INCLUDE_PMC23X_BOOT /* support boot */
#define    INCLUDE_DOSFS
#define    INCLUDE_DISK_UTIL       /* include disk utility */
#ifdef      INCLUDE_PMC23X_BOOT
#define    STANDALONE_NET
#endif
#endif
 

 

7. bootConfig.c、usrConfig.cへ下記の太文字部分を追加します。
また、青文字部分については前述のutil.cファイルを変更しますを御参照ください。

 

・bootConfig.cファイル

#ifdef  INCLUDE_SCSI_BOOT
LOCAL STATUS    scsiLoad (int bootDevId, int bootDevLUN, char *fileName,
                          FUNCPTR *pEntry);
#endif  /* INCLUDE_SCSI_BOOT */

#ifdef  INCLUDE_PMC23X_BOOT
LOCAL STATUS    pmc23xLoad (char *filename, FUNCPTR *pEntry);
#endif /* INCLUDE_PMC23X_BOOT */


↓省略
#ifdef  INCLUDE_SCSI_BOOT
LOCAL STATUS    scsiLoad();
#endif  /* INCLUDE_SCSI_BOOT */

#ifdef INCLUDE_PMC23X_BOOT
LOCAL STATUS    pmc23xLoad();
#endif  /* INCLUDE_PMC23X_BOOT */


↓省略
#ifdef  INCLUDE_SCSI_BOOT
        "boot device: scsi=id,lun              file name: /sd0/vxWorks","",
#endif  /*INCLUDE_SCSI_BOOT*/

#ifdef  INCLUDE_PMC23X_BOOT
        "boot device: cf                       file name: /cf0/vxWorks","",
#endif  /*INCLUDE_PMC23X_BOOT*/


↓省略

#ifdef  INCLUDE_SCSI_BOOT
    printf (" scsi");
#endif  /*INCLUDE_SCSI_BOOT*/

#ifdef  INCLUDE_PMC23X_BOOT
    printf (" cf");
#endif  /*INCLUDE_PMC23X_BOOT*/


↓省略
        if (scsiLoad (bootDevId, bootDevLUN, params.bootFile, pEntry) != OK)
            {
            printErr ("\nError loading file: errno = 0x%x.\n", errno);
            return (ERROR);
            }
 
        return (OK);
        }

#endif  /* INCLUDE_SCSI_BOOT */
 
#ifdef INCLUDE_PMC23X_BOOT
 
    if (strncmp (params.bootDev, "cf", 2) == 0) {
        if (pmc23xLoad (params.bootFile, pEntry) != OK) {
            printErr ("\n Error loading file: error = 0x%x.\n",errno);
            return (ERROR);
        }
        return (OK);
    }
 
#endif  /* INCLUDE_PMC23X_BOOT */

 
#ifdef  INCLUDE_FD


↓省略

#endif  /* INCLUDE_NETWORK */

#if     (defined (INCLUDE_SCSI_BOOT) || defined (INCLUDE_FD) || \
         defined (INCLUDE_IDE) || defined (INCLUDE_ATA) || \
         defined (INCLUDE_TFFS) || defined (INCLUDE_PMC23X_BOOT))
 
#define SPIN_UP_TIMEOUT 45      /* max # of seconds to wait for spinup */


↓省略

readErr:
 
    close (fd);
    return (ERROR);
    }
 
#endif  /* INCLUDE_SCSI_BOOT */

#ifdef  INCLUDE_PMC23X_BOOT
 
/************************************************************
*
* pmc23xLoad – load a vxWorks image from a local PMC23x disk
*
* RETURNS: OK, or ERROR if file can not be loaded.
*/

 
LOCAL STATUS pmc23xLoad (char *fileName, FUNCPTR *pEntry) {
    int lfd,socket;
    BLK_DEV *lPmc23xBlkBootDev;
 
    /* create a block device on pmc23x disk */
 
    if (strncmp (fileName, "/cf0", 4) != 0) {
        printErr ("pmc23xLoad: Invalid pmc23x boot device /cf0 /cf1. \n");
        return (ERROR);
    }
 
    if ( pmc233Drv(0,0×19,0x19,0x110000,0x110100,0xfe000000,0,0) == ERROR) {
        printErr ("pmc23xLoad: couldn't found PMC23x device.\n");
    }
 
    if ((lPmc23xBlkBootDev = (BLK_DEV *) pmc233DevCreate (0, 0, 0)) == NULL) {
        printErr ("pmc23xLoad: pPmc23xBlkBootDev failed .\n");
        return (ERROR);
    }
 
    dosFsInit (NUM_DOSFS_FILES);    /* Initialize DOS-FS */
 
    /* Initialize the boot block device as a dosFs device named /cf */
 
    if (dosFsDevInit ("/cf0", lPmc23xBlkBootDev, NULL) == NULL) {
        printErr ("pmc23xload: dosFsDevInit failed. \n");
        return (ERROR);
    }
 
    printErr ("done.\n");   /* you may want to comment these out */
 
    /* load the boot file */
 
    printErr ("Loading %s \n", fileName);  /* you may want to comment these out */
 
    lfd = open (fileName, O_RDONLY, 0);
    if (lfd == ERROR) {
        printErr ("\nCan not open \"%s\".\n", fileName);
        return (ERROR);
    }
    if (bootLoadModule (lfd, pEntry) != OK) {
        printErr ("\nerror loading file: status = 0x%x. \n", errnoGet ());
        close (lfd);
        return (ERROR);
    }
 
    close (lfd);
    return (OK);
 
}
 
#endif    /* INCLUDE_PMC23X_BOOT */

 

 

・usrConfig.cファイル

 

#ifdef INCLUDE_STDIO
        printf ("sysScsiInit() Failed, SCSI system not initialized\n");
#endif  /* INCLUDE_STDIO */
        }
 
#endif  /* INCLUDE_SCSI */
 
#ifdef INCLUDE_PMC23X
    usrPmc23xConfig ();
#endif  /* INCLUDE_PMC23X */

 
 
#ifdef  INCLUDE_FD     /* initialize floppy disk driver */


↓省略

#endif  /* INCLUDE_DEMO */
 
#ifdef INCLUDE_PMC23X
 
usrPmc23xConfig () {
 
    if (pmc233Drv(0,0×19,0x19,0x110000,0x110100,0xfe000000,0,0) != ERROR) {
 
        printf("CF slot : ");
        pmc233ModelShow(0);
 
        if (dosFsDevInit ("/cf0", (BLK_DEV *) pmc233DevCreate (0, 0, 0), NULL) == NULL) {
            printErr ("usrPmc23xConfig: dosFsDevInit failed. \n");
            return (ERROR);
        }
    }
 
    return (OK);
}
 
#endif /* INCLUDE_PMC23X */

 

 

8. target/src/config/usrLoadSym.cファイルを変更します。

   変更する前にファイルのバックアップを取ります。

   cp usrLoadSym.c usrLoadSym.c.org

   usrLoadSym.cファイルへ下記の太文字部分を追加します。

#endif /* INCLUDE_TFFS */
#ifdef INCLUDE_PMC23X_BOOT
    else if (strncmp (sysBootParams.bootDev, "cf", 2) == 0)
        {
 
        sprintf (symTblFile, "%s.sym", sysBootParams.bootFile);
        }
#endif /* INCLUDE_PMC23X_BOOT */

    else
        {
#ifdef INCLUDE_NET_INIT
 

9. vxWorksカーネル、bootROMイメージを再構築します。

    make vxWorks
make bootrom
elfToBin < bootrom > bootrom.bin

10. ”9.”にて作成した、bootROMイメージをCPUボードのFlashROMへ書き込みます。

   ※この手順は御使用のCPUボード毎の手順となります。

11. ”9.”で作成したvxWorksイメージをネットワークから立ち上げます。

12. 下記の手順にてComapctFlashへvxWorksカーネルイメージをコピーします。

-> cd "/opt/tornado/target/config/BSP"

-> copy "vxWorks","/cf0/vxWorks"
-> copy "vxWorks.sym","/cf0/vxWorks.sym"
 

 

13. ”12.”にてCompactFlashへのコピーが終了したら、bootROMへ戻り
Bootパラメータを変更します。

boot device               : cf
file name                   : /cf0/vxWorks

 

14. vxWorksを起動します。

 

lhsPMC234 PPC vxWorks ドライバー V3.44.1 インストール