• 検索結果がありません。

関数説明

ドキュメント内 IPB-J4172 (ページ 56-66)

第 4 章  DOS からのリソース取得(BPD-0805) 54

4.4  関数説明

PciGetConfigReg

【機 能】

PCI BIOSをコールしてPCIボードのリソース情報を取得します。

【書 式】

int PciGetConfigReg(

int index,

unsigned int ven_id, unsigned int dev_id, unsigned long bar[], char *irq

)

【パラメータ】

index

ボードのインデックス番号を指定します。

(RSW1の値とは関係ありません)

同一型式のボードが1枚しかない場合は1を指定します、複数枚ある場合には何枚 目のボードのリソースを取得するか指定します。

ven_id

ベンダーIDを指定します。

弊社のベンダーIDは1147hです。

dev_id

デバイスIDを指定します。

PCI-4172のデバイスIDは4172( 16進数では 104C)です。

bar[6] BaseAddress0〜BaseAddress5を格納する変数へのポインタです。

PCI-4172では以下のようになります。

bar[0](BaseAddress0)  CH1 HDLC通信制御アドレス

bar[1](BaseAddress1)  CH1 HDLC通信インタフェースメモリアドレス

bar[2](BaseAddress2)  CH2 HDLC通信制御アドレス

bar[3](BaseAddress3)  CH2 HDLC通信インタフェースメモリアドレス

irq

割り込み番号を格納する変数へのポインタです。

【戻り値】

0 : 正常終了(ボードが見つかりました)

1 : PCI BIOSがありません

2 : ボードが1枚も見つかりませんでした

3 : これ以上ボードがありません

【使用例】

#include <stdio.h>

#include “GETBAR.H”

void main ( void ) {

unsigned long bar[6], adr0, adr1, adr2, adr3;

char irq;

PciGetConfigReg ( 1, 0x1147, 4172, bar, &irq ); //

リソースの取得

Adr0 = bar[0]; // CH1 HDLC

通信制御アドレス

Adr1 = bar[1]; // CH1 HDLC通信インタフェースメモリアドレス

Adr2 = bar[2]; // CH2 HDLC

通信制御アドレス

Adr3 = bar[3]; // CH2 HDLC

通信インタフェースメモリアドレス

printf ( “CH1

ベースアドレス:

%8x, %8x¥n” , adr0 , adr1);

printf ( “CH2

ベースアドレス:

%8x, %8x¥n” , adr2 , adr3);

printf ( “割り込み番号:%d¥n” , irq );

}

PciGetConfigRegEx

【機 能】

PCI BIOSをコールしてPCIコンフィグレーションレジスタの値を取得します。

【書 式】

int PciGetConfigRegEx(

int index,

unsigned int ven_id, unsigned int dev_id, unsigned int subven_id, unsigned int subsys_id, unsigned int *bus_info, PPCI_CONFIG PciData )

【パラメータ】

index

ボードのインデックス番号を指定します。

(RSW1の値とは関係ありません)

同一型式のボードが1枚しかない場合は1を指定します、複数枚ある場合に は何枚目のボードのリソースを取得するか指定します。

ven_id

ベンダーIDを指定します。

弊社のベンダーIDは1147hです。

dev_id

デバイスIDを指定します。

PCI-4172のデバイスIDは4172(16進数では104Ch)です。

subven_id

サブベンダーIDを指定します。

弊社のサブベンダーIDは1147hです。

subsys_id

サブシスムIDを指定します。

PCI-4172のサブシステムIDは0001hです。

bus_info

バス情報を格納する変数へのポインタです。

バス情報は、以下の形式で格納されます。

bit15〜bit8

: バス番号

bit7〜bit3 :

デバイス番号

bit2〜bit0 :

ファンクション番号

PciData PCIコンフィグレーションレジスタの値を格納する構造体へのポインタです。

【戻り値】

0 : 正常終了(ボードが見つかりました)

1 : PCI BIOSがありません

2 : ボードが1枚も見つかりませんでした

3 : これ以上ボードがありません

#include <stdio.h>

#include “GETBAR.H”

void main ( void ) {

unsigned long adr0, adr1, adr2, adr3;

unsigned int bus_info;

PCI_CONFIG PciData;

PciGetConfigRegEx ( 1, 0x1147, 4172, 0x1147, 0x0001,

&bus_info, &PciData ); //

リソースの取得

adr0 = bar[0]; // CH1 HDLC通信制御アドレス

adr1 = bar[1]; // CH1 HDLC

通信インタフェースメモリアドレス

adr2 = bar[2]; // CH2 HDLC通信制御アドレス

adr3 = bar[3]; // CH2 HDLC

通信インタフェースメモリアドレス

printf ( “CH1

ベースアドレス:

%8x, %8x¥n” , adr0 , adr1);

printf ( “CH2

ベースアドレス:

%8x, %8x¥n” , adr2 , adr3);

}

PCI_CONFIG構造体

【機 能】

PCIコンフィグレーションレジスタの値を格納します。

【書 式】

typedef struct _PCI_CONFIG {

unsigned short VendorID; // 00: Vendor ID unsigned short DeviceID; // 02: Device ID unsigned short Command; // 04: Command unsigned short Status; // 06: Status unsigned char RevisionID; // 08: Revision

unsigned char ProgIf; // 09: ProgIf

unsigned char SubClass; // 0A: Sub Class unsigned char BaseClass; // 0B: Base unsigned char CacheLineSize; // 0C: Cache Line unsigned char LatencyTimer; // 0D: Latency unsigned char HeaderType; // 0E: Header

unsigned char BIST; // 0F: BIST

unsigned long BaseAddresses[6]; // 10: Base Address

unsigned long CIS; // 28: CIS Pointer

unsigned short SubVendorID; // 2C: Subsystem Vendor ID unsigned short SubSystemID; // 2E: Subsystem ID

unsigned long ROMBaseAddress; // 30: ROM Base Address unsigned char CapabilitiesPtr; // 34: Capabilities Pointer unsigned char Reserved1[3]; // 35: Reserved

unsigned long Reserved2[1]; // 38: Reserved unsigned char InterruptLine; // 3C: INT Line unsigned char InterruptPin; // 3D: INT Pin unsigned char MinimumGrant; // 3E: MIN_GNT

unsigned char MaximumLatency; // 3F: MAX_LAT unsigned char DeviceSpecific[192]; // 40:

} PCI_CONFIG, *PPCI_CONFIG;

【パラメータ】

ここでは、主なパラメータのみを説明します。

BaseAddresses[6] BaseAddress0〜BaseAddress5を格納する変数です。

PCI-4172では以下のようになります。

bar[0](BaseAddress0)  CH1 HDLC通信制御アドレス

bar[1]

(BaseAddress1) CH1 HDLC通信インタフェースメモリア

ドレス

bar[2](BaseAddress2)  CH2 HDLC通信制御アドレス

bar[3](BaseAddress3) CH2 HDLC通信インタフェースメモリア

ドレス

InterruptLine

割り込み番号を格納する変数です。

RevisionID Revisionを格納する変数です。

他のパラメータについては、PCI仕様書をご覧ください。

■付録A PCI-4159との機能比較

機能 PCI-4172 PCI-4159 備考

バッファメモリ 1Mバイト 1Mバイト

DTSDデータ送信 端数ビットのパラメータが'0'固定

MSETメモリエリア設定

MDST動作モード設定 ビットの配置が異なる

一部パラメータが固定値 AFST受信アドレスフィールド設定

LOPNラインオープン

LCLSラインクローズ

MARDメモリエリアリード ×

MDRD動作モードリード ×

AFRD受信アドレスフィールドリード ×

SIRD統計情報リード

GOWR汎用出力端子ライト × 汎用入出力端子はボード内部で未接続

GPRD汎用入出力端子リード × 汎用入出力端子はボード内部で未接続

SIRE統計情報リードⅡ ×

GRPE汎用入出力端子リードⅡ × 汎用入出力端子はボード内部で未接続

MDSE動作モード設定Ⅱ ×

コマンド

(*1)

AFSE受信アドレスフィールド設定Ⅱ ×

DTRVデータ受信 端数ビットのパラメータが'0'固定

TXURデータ送信中止 ×

TOUTアイドル監視タイマタイムアウト ×

LOAKラインオープン完了

LCAKラインクローズ完了

TXEDデータ送信完了

MAAKメモリエリアリード応答 ×

MDAK動作モードリード応答 ×

AFAK受信アドレスフィールドリード応答 ×

SIAK統計情報リード応答 一部パラメータが固定値

CILGコマンドイリーガル 一部パラメータの定義が異なる

GI1C汎用入力端子変化検出Ⅰ × 一部パラメータが固定値

汎用入出力端子はボード内部で未接続

GI2C汎用入力端子変化検出Ⅱ 一部パラメータが固定値

汎用入出力端子はボード内部で未接続

GPAK汎用入出力端子リード応答 × 汎用入出力端子はボード内部で未接続

OLSWステータステーブルオーバーフロー 一部パラメータの定義が異なる

SIAF統計情報リード応答Ⅱ ×

ステータス (*1)

GPAE汎用入出力端子リード応答Ⅱ × 一部パラメータが固定値

汎用入出力端子はボード内部で未接続

NRZ

符号 NRZI

端数ビット ×

CRC-16 ×

CRC-ITU-T ×

FCS-16

FCS

FCS-32

エラーフレーム保持 ×

1バイト目/8bit

2バイト目/8bit ×

アドレス検出 検出開始位置/

サイズ 1バイト目/16bit

HDLC コントローラ

アイドル検出

アイドル検出 時間 0µs〜

16777215µs

アイドル検出 時間 8msまたは

100ms

*1 ○:互換性あり、△:互換性なし、×:未実装

■付録B PCI-4159とのレジスタマップ比較

PCI-4172 PCI-4159

オフセット 互換性 入出力 方向

内      容 入出力 方向

内      容

入力 HDLCコントローラステータスレジスタ 入力 µPD72103 ステータスレジスタ

+00h

出力 HDLCコントローラ制御レジスタ 出力 µPD72103 コントロールレジスタ 入力 OvROvFレジスタ 入力 予約

+01h ×

出力 予約 出力 予約

入力 ソースクロック選択レジスタ 入力 送受信クロック設定

04h ×

出力 ソースクロック選択レジスタ 出力 送受信クロック読み出し 入力 モデムレジスタ 入力 制御信号入力レジスタ

08h

出力 モデムレジスタ 出力 制御信号出力レジスタ

入力 RS-485ドライバ制御レジスタ 入力 ドライバ/レシーバ制御レジスタ

+ 09h ×

出力 RS-485ドライバ制御レジスタ 出力 ドライバ/レシーバ制御レジスタ

入力 クロックモードレジスタ 入力 同期クロック設定レジスタ

+0Ah ×

出力 クロックモードレジスタ 出力 同期クロック設定レジスタ

入力 TXBRGレジスタ 入力 予約

0Ch

+0Dh

出力 TXBRGレジスタ 出力 送信クロックBRG

入力 RXBRGレジスタ 入力 予約

0Eh

0Fh

出力 RXBRGレジスタ 出力 受信クロックBRG

入力 インターバルタイマレジスタ 入力 タイマカウント読み出し

10h

出力 インターバルタイマレジスタ 出力 インターバルタイマ設定

入力 予約 入力 予約

+11h

出力 リセットレジスタ 出力 通信コントローラリセット 入力 割り込みステータスレジスタ 入力 割り込みステータスフラグ読み込み

12h ×

出力 予約 出力 予約

入力 割り込みマスクレジスタ 入力 割り込み設定状態確認

13h ×

出力 割り込みマスクレジスタ 出力 割り込みマスク設定

入力 エッジ検出レジスタ 入力 割り込み発生条件の切り替え設定読 み込み

14h

出力 エッジ検出レジスタ 出力 割り込み発生条件の切り替え 入力 アイドル検出時間設定レジスタ 入力 予約

18h

19h

+1Ah

× 出力 アイドル検出時間設定レジスタ 出力 予約

入力 送信有効ディレイ時間設定レジスタ 入力 予約

+1Ch ×

出力 送信有効ディレイ時間設定レジスタ 出力 予約 入力 送信無効ディレイ時間設定レジスタ 入力 予約

+1Dh ×

出力 送信無効ディレイ時間設定レジスタ 出力 予約

入力 RSWレジスタ 入力 RSW1読み出し

1Fh

出力 予約 出力 予約

重要な情報

保証の内容と制限

ドキュメント内の情報には万全を期していますが、万一、誤記または誤植等があった場合、予告無 く改訂する場合があります。

ドキュメントまたはドキュメント内の情報を利用して作成されたプログラムの挙動により発生した いかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のために用意されたものであり、ユーザ個別の応用事例により変化 する場合があります。

著作権,知的所有権

本ドキュメントに含まれるソースプログラムおよび、本ドキュメントに関する権利や知的所有権は 弊社が所有しています。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製,改変,転用等を行うこと はできません。

サポート

本ドキュメントは、経験を積んだ開発者を対象に作成されたものです。

本ドキュメントの内容に関する質問および、本ドキュメントを利用したプログラム作成や記載内容 に関する技術サポートは行いません。

どうしてもサポートが必要な方は、有償にてサポートが可能です。別途、お客様相談センタまでお 問い合わせください。

商標/登録商標

本ドキュメントに掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。

ご使用の製品に関する制限,注意事項,保証などに関しては、

製品の

USER’S MANUAL

に記載されていますので、よく目 を通した上で、本ドキュメントをご利用ください。

ドキュメント内 IPB-J4172 (ページ 56-66)

関連したドキュメント