1. HOME
  2. FAQ
  3. Solaris1.x SPARC CPU-5V ドライバ作成時の変更内容について

FAQ

Solaris1.x SPARC CPU-5V ドライバ作成時の変更内容について

Solaris1.x SPARC CPU-5V ドライバ作成時の変更内容について

Solaris1.x SPARC CPU-5V ドライバ作成時の変更内容について

        この資料は、CPU-2CE/3CE/5CEなどの、S4-VMEチップが搭載されている

        CPUボード上で使用していたデバイスドライバーをCPU-5V上で動作させる上で変更する点

        について示したものです。

VMEbus空間のマッピングについて

        VMEbus上の2つのアクセス空間(例えばA32とA16の両方)をマッピングしたい場合には、

        GENERICファイル中の”flags”にアドレスを指定してドライバーからこのアドレスを取り込み、

        attatch()ルーチンにて手動でマッピングをします。

        CPU-5Vでは、マッピングする際にFGA-5000への設定が必要になります。

        この設定については専用ルーチンが、用意されていますので従来のattach()ルーチンに多少の

        変更をするだけで動作する様になります。

        以下に、従来のルーチンと追加後のルーチンの例を示します。

        従来のルーチン

xxattach(md)
struct mb_device *md;
{
register long mapindex;
register unsigned long pageval,off;
register caddr_t vaddr;
off = md->md_flags & PAGEOFFSET;
mapindex = rmalloc(kernelmap,(long)btoc(sizeof(xx_reg)));
vaddr = (caddr_t)((int)kmxtob(mapindex));
pageval = PGT_VME_D16 | btop(VME16_BASE);
segkmem_mapin(&kseg,(addr_t)vaddr,(u_int)(ptob(btoc(sizeof(xx_reg)))), PROT_READ |
PROT_WRITE,(u_int)pageval,0); xx_addr = (caddr_t)vaddr + off;
}

        変更後のルーチン

xxattach(md)
struct mb_device *md;
{
register long mapindex;
register unsigned long pageval,off;
register caddr_t vaddr;
off = md->md_flags & PAGEOFFSET;
mapindex = rmalloc(kernelmap,(long)btoc(sizeof(xx_reg)));
vaddr = (caddr_t)((int)kmxtob(mapindex));
pageval = vme_masterwin_setup(VME_BT_D16 | VME_BT_A16 | VME_BT_STD, md->md_flags &
PAGEMASK,sizeof(xx_reg));
segkmem_mapin(&kseg,(addr_t)vaddr,(u_int)(ptob(sizeof(xx_reg)))), PROT_READ | PROT_WRITE,
(u_int)pageval,0);
xx_addr = (caddr_t)vaddr + off;
}

        変更後のルーチンの中にvme_masterwin_setup()と言うルーチンがあります。

        このルーチンは、CPU-5Vの専用ルーチンであり、FGA-5000に必要な設定をするルーチンです。

        上記の例では、A16:D16のマッピングをしていますが     線部の内容を変えることで

        VME64でのアクセスも可能となります。

        以下にここで選択可能な内容について示します。

        データ転送サイズ

VME_BT_D64 /* 64bit データ転送用 */ VME_BT_D32 /* 32bit 〃 */ VME_BT_D16 /* 16bit 〃 */ VME_BT_D8 /* 8bit 〃 */

アドレス空間

VME_BT_A64 /* 64bit アドレス指定 */ VME_BT_A32 /* 32bit 〃 */ VME_BT_A24 /* 24bit 〃 */ VME_BT_A16 /* 16bit 〃 */

アクセスモード

VME_BT_SSBLT /* Sbusスレーブ MBLT */ VME_BT_MBLT /* MBLT(VME64)*/ VME_BT_BLT /* BLT(ブロック転送)*/ VME_BT_STD /* 標準(VME32)*/

その他

VME_BT_WP /* 書き込み時のライトポストを有効にするモード */

DVMA転送の使用について CPU-5Vで従来使用していたドライバーでDVMAを使用する場合には、OPENBOOT上の 環境変数の設定を変更する必要があります。 この設定をする事で、DVMAでのIOPB領域,DVMA領域の使用がドライバーの変更も無くそのまま 使用できる様になります。 以下にOPENBOOT上で設定する環境変数について示します。

環境変数名 設定内容

vme-a24-slave-ena? true

vme-a24-slave-addr 0

vme-a24-slave-size 1048576

設定手順 以下を入力します。

ok setenv vme-a24-slave-ena? true

ok setenv vme-a24-slave-addr 0

ok setenv vme-a24-slave-size 1048576

ok reset