BPC-0821 Help for Windows

Similar documents
DPC-0401

EWF管理ソフトウェア

FBWFMemoryWatcher

GPC-6105

DPC-0244

システム監視ライブラリ

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

AP-RZA-1A シリアルFlashROMの書き込み方法


GPC-8826

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

DPC-0403

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

Android Layout SDK プログラミング マニュアル

RW-5100 導入説明書 Windows7 用 2017 年 7 月 シャープ株式会社

AN1526 RX開発環境の使用方法(CS+、Renesas Flash Programmer)

目次 目次... 1 はじめに... 3 概要... 4 サポート環境... 5 関数... 6 MEC_OpenDevice... 7 MECDevice_Release... 8 MECDevice_GetFirmVersion... 9 MECDevice_GetCoreTemperature

Microsoft Word - 7_rusb.doc

S1C17 Family Application Note S1C17 シリーズ PORT 多重割り込みアプリケーションノート Rev.1.0

UIOUSBCOM.DLLコマンドリファレンス

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

WindowsからLinuxへの引越ガイド(ダイジェスト版)

INplc-Driver[INFnCtrl]ユーザーズガイド

RW-4040 導入説明書 Windows 7 用 2017 年 7 月 シャープ株式会社

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

GPC-4150

MAC アドレス変更ツール MAC アドレスチェンジャー ユーザーズマニュアル User's Manual エレコム株式会社

AquesTalk プログラミングガイド

GPC-4851

AquesTalk Win Manual

AN424 Modbus/TCP クイックスタートガイド CIE-H14

MEDIAPOINT HD ファームウェアリリースノート

はじめに URBANO PROGRESSO を microusb ケーブル 01 ( 別売 ) またはこれと共通の仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をイン

はじめに 京セラ製スマートフォンを指定の microusb ケーブル ( 別売 ) またはこれと共通仕様の microusb ケーブル ( 別売 )( 以下 USB ケーブル ) と接続して USB テザリング機能をご使用いただくためには あらかじめパソコンに USB ドライバ をインストールしてい

チュートリアル LinuxとWindowsのOffice比較

プロセス間通信

MS104-SH2 USBドライバ(仮想COMポートドライバ)の不具合について

ファイル操作-バイナリファイル

CONTEC DIOプロバイダ ユーザーズガイド

目次 USBドライバダウンロードの手順...2 USBドライバインストールの手順...3 インストール結果を確認する...19 USBドライバアンインストール / 再インストールの手順...21 USB ドライバダウンロードの手順 1. SHL21 のダウンロードページからダウンロードしてください

NM30操作DLL(SSK.DLL)

ファイル操作-インターネットキャッシュ

パソコン決裁7 捺印ツールインストールマニュアル

NetworkVantage 9

GPC-2000

VFD256 サンプルプログラム

PN-T321

AquesTalk for WinCE プログラミングガイド

評価ボード キット 開発ツールご使用上の注意事項 1. 本評価ボード キット 開発ツールは お客様での技術的評価 動作の確認および開発のみに用いられることを想定し設計されています それらの技術評価 開発等の目的以外には使用しないで下さい 本品は 完成品に対する設計品質に適合していません 2. 本評価

PCI-Express ハード IP を使用した DMA の実現 for Cyclone V GT FPGA 開発キット(ソフトウェア編)

<4D F736F F D C A8DED8F9C8EE88F878F E C5816A2E646F63>

はじめにお読みください

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

P-touch Transfer Manager の使用方法 ご使用になる前に 必ず本書をお読みください 本書はお読みになったあとも いつでも手にとって参照できるようにしてください Version 0 JPN

法人税の達人from減価償却の達人 運用ガイド

DWR-R02DN Updater 取扱説明書 発 :2015/10/30

NFCライブラリマニュアル

本資料のご使用につきましては 次の点にご留意願います 本資料の内容については 予告無く変更することがあります 1. 本資料の一部 または全部を弊社に無断で転載 または 複製など他の目的に使用することは堅くお断りいたします 2. 本資料に掲載される応用回路 プログラム 使用方法等はあくまでも参考情報で

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

Microsoft Word - Cプログラミング演習(10)

monologue Sound Librarian 取扱説明書

OTRS10 他社システムOTRS呼出利用手順書

システム管理者ガイド GIGAPOD 3 システム管理者ガイド - 負荷分散構成 第 1.01 版 2013 年 3 月 改訂履歴 No バージョン 日付 作成者 改訂者 補足 /09 トライポッドワークス 初稿 /03 トライポッドワークス cr

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

ユーザーズマニュアル

クラウドバックアップサービスアンインストールガイド 第 1.3 版 平成 29 年 1 月 24 日 株式会社大塚商会

AquesTalk2 Mac マニュアル

1. USB の VCP( 仮想 COM ポート ) について USB の VCP( 仮想 COM ポート ) は USB を非同期シリアル通信として使用するための USB のドライバです PC には VCP ドライバをインストールする必要があります USB の VCP( 仮想 COM ポート )

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows インストールガイド 2013(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

WindowsXPインストール

Flash Loader

CoIDE 用 F4D_VCP の説明 V /07/05 USB の VCP( 仮想 COM ポート ) による非同期シリアル通信を行うプログラムです Free の開発ツール CoIDE で作成した STM32F4 Discovery 用のプロジェクトです プログラムの開始番地は 0x

AquesTalk Mac マニュアル

2006年10月5日(木)実施

1

PowerPoint プレゼンテーション

取扱説明書[SH-04E]

Microsoft Word - Writing Windows Installer's DLL.doc

ご注意 1) 本書の内容 およびプログラムの一部 または全部を当社に無断で転載 複製することは禁止されております 2) 本書 およびプログラムに関して将来予告なしに変更することがあります 3) プログラムの機能向上のため 本書の内容と実際の画面 操作が異なってしまう可能性があります この場合には 実

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

AN1609 GNUコンパイラ導入ガイド

BIP Smart サンプル説明書

所得税の達人from大蔵大臣NX 運用ガイド

画面について メイン画面 メイン画面 Logitec EXtorage Link を起動すると メイン画面が表示されます メイン画面の構成は 次のとおりです 1 メニュー 2 端末から外部ストレージへ 3 外部ストレージから端末へ 4 端末 5 外部ストレージ 6 カメラ機能 スマホやタブレットで使

USBドライバインストールマニュアル [Windows Vista/Windows 7]

パソコン決裁7 Business 試用版

Prog1_12th

捺印ツールを使う 捺印ツールをインストールする 1. [ パソコン決裁 6 試用版捺印ツール ] の [ ダウンロード ] ボタンをクリックします 2. [ 実行 ] ボタンをクリックし [SetupDstmp32.exe] ファイルを実行します ご利用のブラウザまたはバージョンにより画面が異なりま

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

AquesTalk2 Win マニュアル

無線LAN JRL-710/720シリーズ ファームウェアバージョンアップマニュアル 第2.1版

Microsoft Word - USB2-PCI…V…−†[…Y_04†iWinNt40_PDFŠp†j.doc

Microsoft Word - Cプログラミング演習(9)

はじめに 本書は GRATINA2 とパソコンを指定の USB ケーブル ( 別売 ) を使用して接続し インターネット通信や au ホームページで公開している各種ツールをご利用になるための USB ドライバ のインストール方法を説明しています USB ドライバをインストールする 3 パソコンに接続

始める スタート > 全てのプログラム > Cypress > PSoC Creator 2.0 > PSoC Creator 2.0 をクリックします プロジェクトを作成する / 開く Start Page の "Create New Project" をクリックし 要求されたプロジェクト情報を入

Rev.1.1 S1V50300 サンプルプログラムマニュアル

資産ファイルのエクスポート(会計王19シリーズ) 運用ガイド

Transcription:

IFMEM4G.WIN BPC-0821 Windows 用メモリアクセスツール Help for Windows www.interface.co.jp

目次 第 1 章はじめに 2 1.1 概要...2 1.2 特長...2 第 2 章製品仕様 3 2.1 基本仕様...3 2.2 製品構成...3 第 3 章導入方法 4 3.1 インストール手順...4 3.2 実行手順...4 第 4 章リファレンス 6 4.1 関数一覧...6 4.2 関数個別説明...7 4.3 構造体...40 第 5 章サンプルプログラム 43 5.1 IoReadWrite...43 5.2 MemReadWrite...44 第 6 章ユーティリティ 45 6.1 メモリダンプユーティリティプログラム...45 第 7 章重要な情報 48 1

第 1 章はじめに 1.1 概要 BPC-0821 は Windows 上から I/O ポート メモリへ直接アクセスを行えるツールです Windows 上のアプリケーションから DLL をダイナミックリンクし API をコールすることにより I/O ポート メモリへ直接アクセスすることが出来ます また分散処理コンピュータに搭載されているメモリ共有インタフェース ( 以降メモリ共有インタフェース ) 制御用の API も提供しています 本ドキュメントは Windows 上で BPC-0821 を使用するための情報を掲載しています 1.2 特長 Windows 上から I/O ポート メモリへ直接アクセスすることが出来る為 Windows 上からでも パフォーマンスの高いハードウェア制御を行うことができます 通常 Windows 上から I/O ポート メモリへのアクセスを行う場合 ドライバ呼び出しに時間がかかりますが 本ソフトウェアを使用することにより ソフトウェアのオーバーヘッドを最小にすることができます PCI コンフィグレーションアクセス用関数を提供していますので PCI デバイスのリソース情報を取得することができます メモリ共有インタフェースの割り込み発生時 コールバックルーチンを呼び出すことができます メモリ共有インタフェースのメモリアクセスを高速にする API を提供しています 2

第 2 章製品仕様 2.1 基本仕様 イベント機能 メモリ共有インタフェースの割り込みが発生した場合に アプリケーションにイベント通知することができます ウォッチドック割り込み STB/ACK 割り込み FIFO 割り込み 2.2 製品構成 製品構成 ファイル名 説明 弊社管理用ファイル BPC0821.VER 弊社ソフトウェア管理用ファイル 最新情報ドキュメント README.HTM 最新ドキュメント掲載ファイル インストールプログラム SETUP.EXE インストール用ファイル ユーティリティプログラム MEMDUMP.EXE メモリダンプユーティリティプログラム DLL IFMEM4G.DLL ダイナミックリンクライブラリファイル IFMEM4G.LIB インポートライブラリファイル デバイスドライバ IFMEM4G.SYS デバイスドライバ IFMEM4G.INF ドライバインストールファイル ヘッダファイル IFMEM4G.H Visual C++ 用ヘッダファイル IFMEM4G.BAS Visual Basic 用ヘッダファイル IFMEM4G.PAS Delphi 用ヘッダファイル Help HELP.PDF Help(PDF 形式 ) サンプルプログラム Visual C++ IoReadWrite I/O ポートアクセスサンプルプログラム MemReadWrite メモリアクセスサンプルプログラム Visual Basic MemReadWrite メモリアクセスサンプルプログラム Visual C#.NET MemReadWrite メモリアクセスサンプルプログラム Visual Basic.NET MemReadWrite メモリアクセスサンプルプログラム Delphi MemReadWrite メモリアクセスサンプルプログラム Visual C#.NET,Visual Basic.NET 用サンプルプログラムは それぞれ Viausl C#.NET 2003,Visual Basic.NET 2003 を使用して作成しています 3

第 3 章導入方法 3.1 インストール手順 README.HTM のインストール方法を参照してください 3.2 実行手順 基本的な制御の手順は以下の通りです ( 記述例は C 言語です ) I/O ポートアクセス関数 1. ユーザモード (RIN3) から I/O ポートへのアクセスを有効にします ret = UioIoEnable(); 2. I/O ポートからのデータ読み込み I/O ポートへのデータ書き込みを行います Data = _inp(port); // データ読み込み _outp(port, Data); // データ書き込み 3. ユーザモード (RIN3) から I/O ポートへのアクセスを無効にします ret = UioIoDisable(); 物理メモリアクセス関数 1. ユーザモード (RIN3) のメモリ空間へ物理メモリを割り当てます address = (unsigned char *)UioMemMap((void *)0xD4000000, 0x02000000); 2. 1. で取得したユーザメモリのアドレスに対して データの読み書きを行います 3. ユーザモード (RIN3) のメモリ空間から物理メモリを開放します UioMemUnmap((void *)address); 4

PCI コンフィグレーションレジスタアクセス関数 1. 入力 PciGetCfgByte 関数, PciGetfgWord 関数, PciGetfgDword 関数を使用して PCI コンフィグレーションレジスタの Byte 単位, Word 単位, Dword 単位の読み出しが行えます PciGetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), &data); PciGetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), &data); PciGetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), &data); 2. 出力 PciSetCfByte 関数, PciSetCfWord 関数, PciSetCfDword 関数をしようして PCI コンフィグレーションレジスタの Byte 単位, Word 単位, Dword 単位の書き込みが行えます PciSetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), 0x12); PciSetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), 0x1234); PciSetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), 0x12345678); MK_PCI_ADDR 関数を使用すると アクセス関数の第一引数の PCI コンフィグレーションレジスタアクセス用アドレスをバス番号, デバイス番号, ファンクション番号, PCI コンフィグレーションレジスタのオフセットから作成することが出来ます メモリ共有インタフェース関数 1. メモリ共有インタフェースの高速アクセス LbEnableCache 関数を使用することで CPU のキャッシュを有効にして メモリ共有インタフェースの高速アクセスを有効にします LbDisableCache 関数を使用することで LbEnable 関数で有効に設定されているキャッシュ設定を無効にし メモリ共有インタフェースの高速アクセスを無効にします 2. 割り込み LbSetEvent 関数でメモリ共有インタフェースの割り込みイベント機能の登録を行います また LbKillEvent 関数でメモリ共有インタフェースの割り込みイベント機能の解除を行います 割り込みイベント機能を有効した場合は 必ずアプリケーションの終了前に割り込みイベントの解除を行ってください 5

第 4 章リファレンス 4.1 関数一覧 No 関数名機能 I/O ポートアクセス関数 1 UioIoEnable ユーザモード (RING3) から I/O ポートのアクセスを有効にします 2 UioIoDisable ユーザモード (RING3) から I/O ポートのアクセスを無効にします 物理メモリアクセス関数 3 UioMemMap ユーザモード (RING3) のメモリ空間へ物理メモリを割り当てます 4 UioMemUnmap ユーザモード (RING3) のメモリ空間から物理メモリを開放します PCI コンフィグレーションレジスタアクセス関数 5 PciGetCfgByte PCI コンフィグレーションレジスタの読み出し (BYTE 単位 ) を行います 6 PciGetCfgWord PCI コンフィグレーションレジスタの読み出し (WORD 単位 ) を行います 7 PciGetCfgDword PCI コンフィグレーションレジスタの読み出し (DWORD 単位 ) を行います 8 PciSetCfgByte PCI コンフィグレーションレジスタの書き込み (BYTE 単位 ) を行います 9 PciSetCfgWord PCI コンフィグレーションレジスタの書き込み (WORD 単位 ) を行います 10 PciSetCfgDword PCI コンフィグレーションレジスタの書き込み (DWORD 単位 ) を行います 11 MK_PCI_ADDR PCI コンフィグレーションレジスタアクセス用アドレスを作成します メモリ共有インタフェース関数 12 LbEnableCache CPUのキャッシュを有効にして メモリ共有インタフェースの高速アクセスを有効にします 13 LbDisableCache メモリ共有インタフェースの高速アクセスを無効にします 14 LbSetEvent メモリ共有インタフェースの割り込みイベント機能を登録します 15 LbKillEvent メモリ共有インタフェースの割り込みイベント機能の解除を行います 16 WdtCallBackProc メモリ共有インタフェースのウォッチドック割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 17 AckCallBackProc メモリ共有インタフェースのACK 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 18 StbCallBackProc メモリ共有インタフェースのSTB 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 19 WriteFifoCallBackProc メモリ共有インタフェースのライトFIFO 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 20 ReadFifoCallBackProc メモリ共有インタフェースのリードFIFO 割り込みイベント発生によっ てコールされるコールバック関数のプレースホルダです 6

4.2 関数個別説明 1. UioIoEnable 機能 ユーザモード (RING3) から I/O ポートのアクセスを有効にします 書式 BOOL WINAPI UioIoEnable( void ); パラメータ なし 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 備考 本 API は Visual Basic, Delphi では使用することはできません 使用例 BOOL ret; unsigned short Port=0x280; int Data; ret = UioIoEnable(); if(!ret) { return; } Data =_inp(port); // I/O ポートから読み込み _outp(port, Data); // I/O ポートへの書き込み ret = UioIoDisable(); 指定した I/O ポートへのデータ書き込み 読み込みを行います 7

2. UioIoDisable 機能 ユーザモード (RING3) から I/O ポートのアクセスを無効にします 書式 BOOL WINAPI UioIoDisable( void ); パラメータ なし 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 備考 本 API は Visual Basic, Delphi では使用することはできません 使用例 BOOL ret; unsigned short Port = 0x280; int Data; ret = UioIoEnable(); : UioIoDisable(); 指定した I/O ポートへのデータ書き込み 読み込みを行います 8

3. UioMemMap 機能 ユーザモード (RING3) のメモリ空間へ物理メモリを割り当てます 書式 VOID * WINAPI UioMemMap( VOID DWORD ); *base, size Declare Function UioMemMap Lib "ifmem4g.dll" ( _ ByVal base As Long, _ ByVal size As Long _ ) As Long function UioMemMap( base: DWORD; size: DWORD ): pointer; stdcall; external 'ifmem4g.dll'; パラメータ base 物理メモリアドレスを指定します size メモリサイズを指定します 戻り値 正常終了した場合は ユーザ空間のメモリアドレスが返されます 失敗した場合には NULL(0) が返されます 9

使用例 unsigned char *address; int i, j; address = (unsigned char *)UioMemMap((void *)0xD4000000, 0x02000000); if(address == NULL) { return; } for (i = 0; i < 16; i++) { for (j = 0; j < 16; j++) { printf("%02x ", *(address + (i * 16) + j)); } printf("\n"); } UioMemUnmap((void *)address); Declare Sub MemReadByte Lib "Kernel32.dll" Alias "CopyMemory" (ByRef buffer As Any, ByVal address As Long, ByVal length As Long) Dim address As Long Dim i, j As Long Dim Message As String Dim ret As Long address = UioMemMap(&HD4000000, &H02000000); If address = 0 Then Exit Sub MemReadByte buffer(0), address, 256 For I = 0 To 15 For J = 0 To 15 Message = Message & Hex(buffer(I * 16 + J)) & " " Next Message = Message & vbcrlf Next MsgBox Message ret = UioMemUnmap(address) 10

var address: pointer; i, j: integer; buffer: array[0..255] of Byte; Message: string address := UioMemMap($d4000000, $02000000); if address = 0 then exit; CopyMemory(@buffer[0], address, 256); for i := 0 to 15 do begin for j := 0 to 15 do begin Message := Message + IntToHex(buffer[i*16 + j], 2); end; Message := Message + '\n'; end; MessageDlg(Message, mtinformation, [mbok], 0); UioMemUnmap(address); メモリ領域 (D4000000h) のデータを読み込んで画面に表示します 11

4. UioMemUnmap 機能 ユーザモード (RING3) に割り当てた物理メモリを解放します 書式 BOOL WINAPI UioMemUnmap( VOID *base ); Declare Function UioMemUnmap Lib "ifmem4g.dll" ( _ ByVal base As Long _ ) As Long function UioMemUnmap( base: pointer ): integer; stdcall; external 'ifmem4g.dll'; パラメータ base 解放するユーザメモリのアドレスを指定します UioMemMap 関数で得られたアドレスを指定します 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 12

使用例 unsigned char *address; address = (unsigned char *)UioMemMap((void *)0xD4000000, 0x02000000); : UioMemUnmap((void *)address); Dim address As Long address = UioMemMap(&HD4000000, &H02000000); : UioMemUnmap(address) var address: pointer; address := UioMemMap($d4000000, $02000000); : UioMemUnmap(address); 物理メモリを解放します 13

5. PciGetCfgByte 機能 PCI コンフィグレーションレジスタの読み出し (BYTE 単位 ) を行います 書式 BOOL WINAPI PciGetCfgByte( DWORD addr, BYTE *data ); Declare Function PciGetCfgByte Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByRef data As Byte _ ) As Long function PciGetCfgByte( address: DWORD; var data: Byte ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 読み出しデータ格納用領域へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は TRUE が返され data に有効な値が格納されます 失敗した場合には FALSE が返されます (data に格納される値は不定です ) 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 14

使用例 int ret ; BYTE data; ret = PciGetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), &data); Dim ret As Long Dim data As Byte ret = PciGetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), data); var ret: integer data: Byte; ret := PciGetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), data); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) から BYTE 単位でデータを読み出します 15

6. PciGetCfgWord 機能 PCI コンフィグレーションレジスタの読み出し (WORD 単位 ) を行います 書式 BOOL WINAPI PciGetCfgWord( DWORD addr, WORD *data ); Declare Function PciGetCfgWord Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByRef data As Byte _ ) As Long function PciGetCfgWord( address: DWORD; var data: Byte ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 読み出しデータ格納用領域へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は TRUE が返され data に有効な値が格納されます 失敗した場合には FALSE が返されます (data に格納される値は不定です ) 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 16

使用例 int ret ; WORD data; ret = PciGetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), &data); Dim ret As Long Dim data As Short ret = PciGetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), data); var ret: integer data: word; ret := PciGetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), data); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) から WORD 単位でデータを読み出します 17

7. PciGetCfgDword 機能 PCI コンフィグレーションレジスタの読み出し (DWORD 単位 ) を行います 書式 BOOL WINAPI PciGetCfgDword( DWORD addr, DWORD *data ); Declare Function PciGetCfgDword Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByRef data As Long _ ) As Long function PciGetCfgDword( address: DWORD; var data: DWORD ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 読み出しデータ格納用領域へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は TRUE が返され data に有効な値が格納されます 失敗した場合には FALSE が返されます (data に格納される値は不定です ) 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 18

使用例 int ret ; DWORD data; ret = PciGetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), &data); Dim ret As Long Dim data As Long ret = PciGetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), data); var ret: integer data: dword; ret := PciGetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), data); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) から DWORD 単位でデータを読み出します 19

8. PciSetCfgByte 機能 PCI コンフィグレーションレジスタの書き込み (BYTE 単位 ) を行います 書式 BOOL WINAPI PciSetCfgByte( DWORD addr, BYTE data ); Declare Function PciSetCfgByte Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByVal data As Byte _ ) As Long function PciSetCfgByte( address: DWORD; data: BYTE ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 書き込みデータを指定します 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 20

使用例 int ret ; ret= PciSetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), 0x12); Dim ret As Long ret = PciSetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), &H12); var ret: integer ret := PciSetCfgByte(MK_PCI_ADDR(0, 2, 0, 4), $12); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) に BYTE データを書き込みます 21

9. PciSetCfgWord 機能 PCI コンフィグレーションレジスタの書き込み (WORD 単位 ) を行います 書式 BOOL WINAPI PciSetCfgWord ( DWORD addr, WORD data ); Declare Function PciSetCfgWord Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByVal data As Short _ ) As Long function PciSetCfgWord( address: DWORD; data: WORD ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 書き込みデータを指定します 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 22

使用例 int ret; ret = PciSetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), 0x1234); Dim ret As Long ret = PciSetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), &H1234); var ret: integer ret := PciSetCfgWord(MK_PCI_ADDR(0, 2, 0, 4), $1234); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) に WORD データを書き込みます 23

10. PciSetCfgDword 機能 PCI コンフィグレーションレジスタの書き込み (DWORD 単位 ) を行います 書式 BOOL WINAPI PciSetCfgDword ( DWORD addr, DWORD data ); Declare Function PciSetCfgDword Lib "ifmem4g.dll" ( _ ByVal address As Long, _ ByVal data As Long _ ) As Long function PciSetCfgDword( address: DWORD; data: DWORD ): integer; stdcall; external 'ifmem4g.dll'; パラメータ addr PCI コンフィグレーションレジスタアクセス用アドレスを指定します data 書き込みデータを指定します 戻り値 正常終了した場合は TRUE が返されます 失敗した場合には FALSE が返されます 備考 addr は 80000000h + (BUS 10000h) + (DEV 800h) + (FUNC 100h) + REGで指定します パラメータ 内容 BUS バス番号 DEV デバイス番号 FUNC ファンクション番号 REG PCI コンフィグレーションレジスタオフセットアドレス (MK_PCI_ADDR マクロを使用することもできます ) 24

使用例 int ret; ret = PciSetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), 0x12345678); Dim ret As Long ret = PciSetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), &H12345678); var ret: integer ret := PciSetCfgDword(MK_PCI_ADDR(0, 2, 0, 4), $12345678); PCI デバイス ( バス番号 0 デバイス番号 2 ファンクション番号 0) のコンフィグレーションレジスタ ( オフセットアドレス +4) に DWORD データを書き込みます 25

11. MK_PCI_ADDR 機能 PCI コンフィグレーションレジスタアクセス用アドレスを作成します 書式 DWORD MK_PCI_ADDR( bus, dev, func, reg ); (MK_PCI_ADDR はマクロです ) Declare Function MK_PCI_ADDR Lib "ifmem4g.dll" ( _ ByVal bus As Long, _ ByVal dev As Long, _ ByVal func As Long, _ ByVal reg As Long _ ) As Long function PciSetCfgDword( bus: DWORD; dev: DWORD; func: DWORD; reg: DWORD ): DWORD; stdcall; external 'ifmem4g.dll'; パラメータ bus バス番号を指定します dev デバイス番号を指定します func ファンクション番号を指定します reg PCI コンフィグレーションレジスタのオフセットアドレスを指定します 戻り値 以下の形式で PCI コンフィグレーションレジスタアクセス用アドレスが生成されます 80000000h + (bus 10000h) + (dev 800h) + (func 100h) + reg 26

使用例 DWORD addr; addr = MK_PCI_ADDR(0, 2, 0, 4); Dim addr As Long addr = MK_PCI_ADDR(0, 2, 0, 4) var addr: DWORD; addr := MK_PCI_ADDR(0, 2, 0, 4); バス番号 0 デバイス番号 2 ファンクション番号 0 のデバイスの PCI コンフィグレーションレジスタオフセットアドレス +4 にアクセスする為の PCI コンフィグレーションレジスタアクセス用アドレスを作成します 27

12. LbEnableCache 機能 CPU のキャッシュを有効にして メモリ共有インタフェースの高速アクセスを有効にします 書式 INT WINAPI LbEnableCache( DWORD offset, DWORD length ); Declare Function LbEnableCache Lib "ifmem4g.dll" ( _ ByVal offset As Long, _ ByVal length As Long, ) As Long function LbEnableCache ( offset: DWORD; length: DWORD ): Integer ; stdcall; external 'ifmem4g.dll'; パラメータ offset キャッシュを有効にする共有メモリ領域のオフセットアドレスを指定します offset = 4096 m (m 0) である必要があります length キャッシュを有効にする領域の大きさを バイト単位で表した値を指定します length = 4096 2 n (n 0) である必要があります 戻り値 正常終了した場合は LB_ERROR_SUCCESS が返されます 正常終了しなかった場合は 以下のエラーコードが返されます エラーコード内容 LB_ERROR_DEVICE_NOT_FOUND メモリ共有インタフェースが見つかりません LB_ERROR_ALREADY_ENABLE すでにキャッシュが有効になっています LB_ERROR_INVALID_PARAMETER パラメータが不正な値です 28

備考 offset から length バイトのメモリ領域を ライトスルータイプに設定します これにより 設定された範囲内への連続したメモリアクセスが高速に行えるようになります ある程度の大きさのまとまったデータ転送時に効果を発揮します データ量が多ければ多いほど その効果は大きくなります 同時にキャッシュ有効に出来る領域は 1 箇所だけです offset, length の値が 条件を満足していない場合 システムの動作を不安定にしてしまう危険性があります キャッシュが有効になっている期間に対向側システムがキャッシュ有効範囲へ書き込んだ値を正しく読み出せるとは限らなくなります また 場合によっては 対向側システムが書き込んだ値を破壊する危険性もあります キャッシュ有効範囲について 十分注意してご使用ください 使用例 INT ret; ret = LbEnableCache(0x3000000, 0x1000000); Dim ret As Long ret = LbEnableCache(&H3000000, &H1000000) var ret: Integer; ret := LbEnableCache($3000000, $1000000); 共有メモリのオフセット 3000000h から 1M バイトをキャッシュ有効にします 29

13. LbDisableCache 機能 LbEnableCash 関数により有効に設定されているキャッシュ設定を無効にし メモリ共有インタフェースの高速アクセスを無効にします 書式 INT WINAPI LbDisableCache(VOID); Declare Function LbDisableCache Lib "ifmem4g.dll" ( _ ) As Long function LbDisableCache ( ): Integer ; stdcall; external 'ifmem4g.dll'; パラメータ なし 戻り値 正常終了した場合は LB_ERROR_SUCCESS が返されます 正常終了しなかった場合は 以下のエラーコードが返されます エラーコード内容 LB_ERROR_DEVICE_NOT_FOUND メモリ共有インタフェースが見つかりません 使用例 INT ret; ret = LbDisableCache(); Dim ret As Long ret = LbDisableCache () var ret: Integer; ret := LbDisableCache (); 共有メモリのキャッシュ設定を無効にします 30

14. LbSetEvent 機能 メモリ共有インタフェースの割り込みイベント機能を登録します 書式 INT WINAPI LbSetEvent( PLB_EVENT_CONFIG ); EventConfig Declare Function LbSetEvent Lib "ifmem4g.dll" ( _ ByRef EventConfig As LB_EVENT_CONFIG _ ) As Long function LbSetEvent( var EventConfig: LB_EVENT_CONFIG; ): Integer: stdcall; external 'ifmem4g.dll'; パラメータ EventConfig イベント設定構造体へのポインタ ( 参照渡し ) を指定します 戻り値 正常終了した場合は LB_ERROR_SUCCESS が返されます 正常終了しなかった場合は 以下のエラーコードが返されます エラーコード内容 LB_ERROR_DEVICE_NOT_FOUND メモリ共有インタフェースが見つかりません 備考 1. 本関数は 分散処理コンピュータ上以外では使用できません 2. 本関数はイベントマスクの設定は行いません イベントマスクの設定は ユーザアプリケーション上で行うようにしてください 3. 本関数により割り込みイベント機能を有効にした場合 必ずアプリケーション終了前に LbKillEvent 関数でイベント機能の解除を行ってください 4. すでにイベント機能の設定を行っている状態で本 API を呼び出した場合 新しいイベント設定で上書きされます 31

使用例 INT WdtEventHandler(DWORD UserData) { : return 0; } INT ret; LB_EVENT_CONFIG EventConfig; PBYTE WdtAddress; WdtAddress = (PBYTE)UioMemMap(LB_BASE_ADDRESS0, 63); ZeroMemory(&EventConfig, sizeof(lb_event_config)); EventConfig.WdtCallBackProc = WdtEventHandler; EventConfig.WdtUserData = (DWORD)WdtAddress; ret = LbSetEvent(&EventConfig); *(WdtAddress + 0x25) = 0x01; // ウォッチドック割り込みを有効 Declare Sub UioWriteMemory Lib "Kernel32.dll" Alias "RtlMoveMemory" (ByVal address As Long, ByRef buffer As Any, ByVal length As Long) Declare Function WdtEventHandler(ByVal UserData As Long) : WdtEventHandler = 0 End Function Dim ret As Long Dim EventConfig As LB_EVENT_CONFIG Dim WdtAddress As Long Dim Buffer(16) As Byte WdtAddress = UioMemMap(LB_BASE_ADDRESS0, 63) EventConfig.WdtCallBackProc = ChangeAddressOf(AddressOf WdtEventHandler) EventConfig.WdtUserData = WdtAddress ret = LbSetEvent(EventConfig) Buffer(0) = &H01 UioWriteMemory(WdtAddress + 0x25, Buffer(0), 1) ' ウォッチドック割り込みを有効 32

function WdtEventHandler(UserData: DWORD): Integer; stdcall begin : Result := 0; end; var ret: Integer; EventConfig: LB_EVENT_CONFIG; WdtAddress: pointer; Buffer: array[0..15] of Byte; WdtAddress := UioMemMap(LB_BASE_ADDRESS0, 63); ZeroMemory(@EventConfig, SizeOf(LB_EVENT_CONFIG)); EventConfig.WdtCallBackProc := Addr(WdtEventHandler); EventConfig.WdtAddress := WdtAddress; ret := LbSetEvent(EventConfig); Buffer[0] := $01; CopyMemory(WdtAddress + $25, @Buffer[0], 1) ' ウォッチドック割り込みを有効割り込みイベントを登録します 33

15. LbKillEvent 機能 メモリ共有インタフェースの割り込みイベント機能の解除を行います 書式 INT WINAPI LbKillEvent(VOID); Declare Function LbKillEvent Lib "ifmem4g.dll" ( _ ) As Long function LbSetEvent( ): Integer: stdcall; external 'ifmem4g.dll'; パラメータ なし 戻り値 正常終了した場合は LB_ERROR_SUCCESS が返されます 正常終了しなかった場合は 以下のエラーコードが返されます エラーコード内容 LB_ERROR_DEVICE_NOT_FOUND メモリ共有インタフェースが見つかりません 備考 本関数は 分散処理コンピュータ上以外では使用できません 使用例 INT ret; ret = LbKillEvent(); Dim ret As Long ret = LbKillEvent() var ret: Integer; ret := LbKillEvent(); 割り込みイベント機能の解除を行います 34

16. WdtCallBackProc 機能 メモリ共有インタフェースのウォッチドック割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 書式 INT WdtCallBackProc( DWORD ); UserData Declare Function WdtCallBackProc ( _ ByVal UserData As Long _ ) As Long function WdtCallBackProc( UserData: DWORD; ) :Integer; stdcall パラメータ UserData LbSetEvent 関数で設定したユーザデータです 戻り値 コールバック関数実行後 ウォッチドック割り込みを無効にする場合 戻り値に 0 を設定します コールバック関数実行後 ウォッチドック割り込みを有効にする場合 戻り値に 1 を設定します 35

17. AckCallBackProc 機能 メモリ共有インタフェースの ACK 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 書式 INT AckCallBackProc( DWORD ); UserData Declare Function AckCallBackProc ( _ ByVal UserData As Long _ ) As Long function AckCallBackProc( UserData: DWORD; ) :Integer; stdcall パラメータ UserData LbSetEvent 関数で設定したユーザデータです 戻り値 コールバック関数実行後 ACK 割り込みを無効にする場合 戻り値に 0 を設定します コールバック関数実行後 ACK 割り込みを有効にする場合 戻り値に 1 を設定します 36

18. StbCallBackProc 機能 メモリ共有インタフェースの STB 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 書式 INT StbCallBackProc( DWORD ); UserData Declare Function StbCallBackProc ( _ ByVal UserData As Long _ ) As Long function StbCallBackProc( UserData: DWORD; ) :Integer; stdcall パラメータ UserData LbSetEvent 関数で設定したユーザデータです 戻り値 コールバック関数実行後 STB 割り込みを無効にする場合 戻り値に 0 を設定します コールバック関数実行後 STB 割り込みを有効にする場合 戻り値に 1 を設定します 37

19. WriteFifoCallBackProc 機能 メモリ共有インタフェースのライト用 FIFO 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 書式 INT WriteFifoCallBackProc( DWORD DWORD ); EventMask, UserData Declare Function WriteFifoCallBackProc ( _ ByVal EventMask As Long _ ByVal UserData As Long _ ) As Long function WriteFifoCallBackProc( EventMask: DWORD; UserData: DWORD; ) :Integer; stdcall パラメータ EventMask コールバック関数を呼び出した 割り込みイベント要因です EventMask 内容 1 ライト用 FIFO EMPTY 割り込みイベントが有効です 2 ライト用 FIFO フル解除割り込みイベントが有効です UserData LbSetEvent 関数で設定したユーザデータです 戻り値 コールバック関数実行後 ライト用 FIFO 割り込みを無効にする場合 戻り値に 0 を設定します コールバック関数実行後 ライト用 FIFO 割り込みを有効にする場合 戻り値に 1 を設定します 38

20. ReadFifoCallBackProc 機能 メモリ共有インタフェースのリード用 FIFO 割り込みイベント発生によってコールされるコールバック関数のプレースホルダです 書式 INT ReadFifoCallBackProc( DWORD DWORD ); EventMask, UserData Declare Function ReadFifoCallBackProc ( _ ByVal EventMask As Long _ ByVal UserData As Long _ ) As Long function ReadFifoCallBackProc( EventMask: DWORD; UserData: DWORD; ) :Integer; stdcall パラメータ EventMask コールバック関数を呼び出した 割り込みイベント要因です EventMask 内容 1 リード用 FIFO EMPTY 解除割り込みイベントが有効です 2 リード用 FIFO フル割り込みイベントが有効です UserData LbSetEvent 関数で設定したユーザデータです 戻り値 コールバック関数実行後 リード用 FIFO 割り込みを無効にする場合 戻り値に 0 を設定します コールバック関数実行後 リード用 FIFO 割り込みを有効にする場合 戻り値に 1 を設定します 39

4.3 構造体 1. LB_EVENT_CONFIG 構造体 メモリ共有インタフェースのイベント情報を設定する構造体です typedef struct { LPLBCALLBACK WdtCallBackProc; DWORD WdtUserData; LPLBCALLBACK AckCallBackProc; DWORD AckUserData; LPLBCALLBACK StbCallBackProc; DWORD StbUserData; LPLBFIFOCALLBACK WriteFifoCallBackProc1; DWORD WriteFifoUserData1; LPLBFIFOCALLBACK ReadFifoCallBackProc1; DWORD ReadFifoUserData1; LPLBFIFOCALLBACK WriteFifoCallBackProc2; DWORD WriteFifoUserData2; LPLBFIFOCALLBACK ReadFifoCallBackProc2; DWORD ReadFifoUserData2; } LB_EVENT_CONFIG, *LB_EVENT_CONFIG; Type LB_EVENT_CONFIG WdtCallBackProc WdtUserData AckCallBackProc AckUserData StbCallBackProc StbUserData WriteFifoCallBackProc1 WriteFifoUserData1 ReadFifoCallBackProc1 ReadFifoUserData1 WriteFifoCallBackProc2 WriteFifoUserData2 ReadFifoCallBackProc2 ReadFifoUserData2 End Type As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long As Long 40

type LB_EVENT_CONFIG = record WdtCallBackProc WdtUserData AckCallBackProc AckUserData StbCallBackProc StbUserData WriteFifoCallBackProc1 WriteFifoUserData1 ReadFifoCallBackProc1 ReadFifoUserData1 WriteFifoCallBackProc2 WriteFifoUserData2 ReadFifoCallBackProc2 ReadFifoUserData2 End Type pointer; DWORD; pointer; DWORD; pointer; DWORD; pointer; DWORD; pointer; DWORD; pointer; DWORD; pointer; DWORD; メンバ WdtCallBackProc WdtUserData AckCallBackProc AckUserData StbCallBackProc StbUserData 説明メモリ共有インタフェースのウォッチドック割り込みイベント発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースのウォッチドック割り込みコールバック関数へ引き渡すユーザ データを指定してください メモリ共有インタフェースの ACK 割り込みイベント発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースの ACK 割り込みコールバック関数へ引き渡すユーザ データを指定してください メモリ共有インタフェースの STB 割り込みイベント発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースの STB 割り込みコールバック関数へ引き渡すユーザ データを指定してください 41

WriteFifoCallBackProc1 WriteFifoUserData1 ReadFifoCallBackProc1 ReadFifoUserData1 WriteFifoCallBackProc2 WriteFifoUserData2 ReadFifoCallBackProc2 ReadFifoUserData2 メモリ共有インタフェースのライト用 FIFO1 割り込み発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースのライト用 FIFO1 割り込みコールバック関数へ引き渡すユーザ データを指定してください メモリ共有インタフェースのリード用 FIFO1 割り込み発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースのリード用 FIFO1 割り込みコールバック関数へ引き渡すユーザ データを指定してください メモリ共有インタフェースのライト用 FIFO2 割り込み発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースのライト用 FIFO2 割り込みコールバック関数へ引き渡すユーザ データを指定してください メモリ共有インタフェースのリード用 FIFO2 割り込み発生時に呼び出されるコールバック関数のポインタを指定してください コールバック関数を使用しない場合は C 言語では NULL Visual Basic Delphi では 0 を指定してください メモリ共有インタフェースのリード用 FIFO2 割り込みコールバック関数へ引き渡すユーザ データを指定してください 42

第 5 章サンプルプログラム 以下 各サンプルプログラムの概要を説明します 各種言語に対応したサンプルプログラムはそれぞれ以下の場所にインストールされます Visual C++ ( インストール指定先ディレクトリ )\Sample\VC Visual Basic ( インストール指定先ディレクトリ )\Sample\VB Delphi ( インストール指定先ディレクトリ )\Sample\Delphi 5.1 IoReadWrite 概要 IoReadWrite は I/O ポートのデータ読み込み データ書き込みを行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル IoReadWrite.mak を開き ビルドしてください 作成後 IoReadWrite を起動してください 内容 I/O ポートアクセス関数を使用し I/O ポートのデータを読み出し 表示します 読み出したデータの各ビットを反転させ I/O ポートへの書き込みます 43

5.2 MemReadWrite 概要 MemReadWrite はメモリのデータ読み込み データ書き込みを行うサンプルプログラムです 実行手順 サンプルプログラムには実行形式のファイルが付属していません ソースコードをコンパイルして実行ファイルを生成してから 動作させてください Visual C++ の場合 Visual C++(Visual Studio) を起動し ファイル メニューから ワークスペースを開く を選び メイクファイル MemReadWrite.mak を開き ビルドしてください の場合 Visual Basic を起動し プロジェクトファイル MemReadWrite.vbp を開き ビルドしてください の場合 Delphi を起動し プロジェクトファイル MemReadWrite.dpr を開き ビルドしてください 作成後 MemReadWrite を起動してください 内容 物理メモリアクセス関数を使用し 物理メモリのデータを読み出し 表示します その後 物理メモリへデータの書き込みます 44

第 6 章ユーティリティ 6.1 メモリダンプユーティリティプログラム メモリをダンプし表示するユーティリティプログラムです 操作方法 1. スタート メニュー - Interface BPC-0821 - メモリダンプユーティリティプログラム を選択してユーティリティプログラムを起動させます 2. ユーティリティを起動時メモリ共有インタフェースが見つかった場合 共有メモリ領域 ( 先頭から 1M バイト ) をダンプします 45

メモリ共有インタフェースが見つからなかった場合 ファイル 表示領域の設定 メニューから ダンプ表示する領域を指定してください ダンプアドレス にダンプする先頭アドレス サイズ にダンプするサイズをバイト単位で入力し OK ボタンを押します ダンプアドレス サイズは 256(100h) バイト単位で設定します 3. 先頭アドレスから 128 バイトのデータが画面上に表示されます データは 1 秒周期に更新します 4. 編集 メニューから 書き込み フィル コピー の操作を行います 5. 表示 表示オフセットを変更 メニューから 画面表示する先頭アドレスを変更します 6. ファイル ファイル読み込み ファイル書き込み メニューから ファイルの読み書きを行います 46

以下の設定を行い OK ボタンを押すことでファイル読み込みまたはファイル書き込みを行います 設定項目内容ファイル名読み込みを行うまたは書き込みを行うファイル名を指定します ファイル名テキストボックス右横のボダンを押すことでファイル選択ダイアログが開きます オフセットアドレス読み込み時 : ファイルから読み込んだデータを格納する先頭のオフセットアドレスを指定します 書き込み時 : ファイルに書き込むデータが格納された先頭のオフセットアドレスを指定します サイズ読み込みまたは書き込みバイトサイズを指定します 7. ファイル アプリケーションの終了 メニューでユーティリティを終了します メニュー ファイル メニューメニュー内容表示領域の設定ダンプ表示する領域を設定します ファイル読み込み指定領域へファイルから読み込んだデータを格納します ファイル書き込み指定領域から読み込んだデータをファイルへ書き込みます アプリケーションの終了ユーティリティを終了します 編集 メニューメニューライトフィルコピー 表示 メニューメニュー表示オフセットを変更 内容指定領域へデータを書き込みます 指定領域へデータをフィルします 指定領域のデータを別領域にコピーします 内容画面表示する先頭オフセットアドレスを変更します 47

第 7 章重要な情報 保証の内容と制限弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと またはその実行に誤りが無いことを保証していません 本製品の品質や使用に起因する 性能に起因するいかなるリスクも使用者が負うものとします 弊社はドキュメント内の情報の正確さに万全を期しています 万一 誤記または誤植などがあった場合 弊社は予告無く改訂する場合があります ドキュメントまたはドキュメント内の情報に起因するいかなる損害に対しても弊社は責任を負いません ドキュメント内の図や表は説明のためであり ユーザ個別の応用事例により変化する場合があります 著作権 知的所有権弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています 本製品はコンピュータソフトウェア 映像 / 音声 ( 例えば図 文章 写真など ) を含んでいます 医療機器 / 器具への適用における注意弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計 製造された物では有りません 弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機器と共に設計された物では有りません 医療機器 治療器具などの本製品の適用により 製品の故障 ユーザ 設計者の過失などにより 損傷 / 損害を引き起こす場合が有ります 複製の禁止弊社の許可なく 本ドキュメントの全て または一部に関わらず 複製 改変などを行うことはできません 責任の制限弊社は 弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害 偶発的損害 間接的な損害 重大な損害について 責任を負いません 本製品 ( ハードウェア, ソフトウェア ) のシステム組み込み 使用 ならびに本製品から得られる結果に関する一切のリスクについては 本製品の使用者に帰属するものとします 本製品に含まれるバグ あるいは本製品の供給 ( 納期遅延 ) 性能もしくは使用に起因する付帯的損害もしくは間接的損害に対して 弊社に全面的に責がある場合でも 弊社はその製品に対する改良 ( 正常に動作する ) 代品交換までとし 金銭面での賠償の責任は負わないものとしますので 予めご了承ください 本製品 ( ソフトウェアを含む ) は 日本国内仕様です 本製品を日本国外で使用された場合 弊社は一切責任を負いかねます また 弊社は本製品に関し 海外での保守サービスおよび技術サポート等は行っておりません 48

商標 / 登録商標本書に掲載されている会社名 製品名は それぞれ各社の商標または登録商標です 49