Comments
Transcript
Intel Atom搭載 Interface DOS System(日本語環境モデル)
SOFTWARE USER’S GUIDE Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■ 安全にお使い頂くために 安全にご利用頂くために、本製品をご使用になる前に必ず製品のマニュアルに記載されて いる取扱い上のご注意を最後までお読みください。 本製品は機能追加、品質向上のため予告なく仕様を変更する場合があります。 継続的にご利用頂く場合でも、必ずSOFTWARE USER’S GUIDEをお読みください。本製品 のご使用には、ハードウェア, ソフトウェアの専門知識が必要です。 各図記号は以下のような意味を表しています。 ! ! 警告 この表示を無視して誤った取扱いをすると、使用者が死亡または重傷を 負う可能性があると思われる事項があることを示しています。 注意 この表示を無視して誤った取扱いをすると、人が傷害を負うことが想定 される内容および物的損害の発生が想定される事項があることを示し ています。 禁止 分解禁止 行ってはならない禁止事項があることを示しています。指示内容 をよく読み、禁止されている事項は絶対に行わないでください。 接触禁止 静電気注意 静電気により、製品破損の恐れがありますのでご注意ください。 注意 注意すべき点を示しています。 本書に掲載されている会社名, 製品名はそれぞれ各社の商標または登録商標です。 © 2014 Interface Corporation 株式会社インタフェースの許可なく複製, 改変等を行うことはできません。 Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 製品ドキュメントのご紹介 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)に関する情報を 下記の通りご用意しております。 必要に応じて、適切なものをご利用ください。 マニュアル システム構築ガイド 内 容 無償 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)システム構築ガイドです。 無償:弊社Web site(www.interface.co.jp)からのダウンロードは無料です。 有償:ドキュメント類の冊子(印刷物)での提供は有料販売となります。 -1- Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 目 次 製品ドキュメントのご紹介 1 第1章 5 1.1 第2章 2.1 2.2 2.3 2.4 2.5 第3章 本書概要 本書概要 ...................................................................................................................................... 5 Interface DOS System(日本語環境モデル) 6 製品構成 ...................................................................................................................................... 6 対応製品 ...................................................................................................................................... 6 概要 .............................................................................................................................................. 7 機能と特長 .................................................................................................................................. 7 Interface DOS System開発らくらくパッケージ....................................................................... 7 2.5.1 対応コンパイラ................................................................................................................ 8 2.5.2 開発環境............................................................................................................................ 8 2.5.3 ファイル一覧.................................................................................................................... 9 CPU制御 10 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 SpeedStep機能 ........................................................................................................................... 11 クロックデューティ制御 ........................................................................................................ 13 CPU温度測定機能 .................................................................................................................... 16 電源電圧測定機能 .................................................................................................................... 17 ウォッチドッグタイマ機能 .................................................................................................... 18 ハードウェアタイマ機能 ........................................................................................................ 24 RAS制御 .................................................................................................................................... 26 その他ハードウェア機能 ........................................................................................................ 31 3.8.1 システム再起動.............................................................................................................. 31 3.8.2 システムシャットダウン.............................................................................................. 32 3.8.3 バッテリモジュール制御.............................................................................................. 33 3.9 戻り値一覧 ................................................................................................................................ 38 3.10 サンプルプログラムのコンパイル方法............................................................................... 39 第4章 インタフェースモジュール制御 4.1 40 概要 ............................................................................................................................................ 40 4.1.1 インタフェースモジュール制御方法 .......................................................................... 40 4.1.2 ハードウェア制御に必要な処理 .................................................................................. 40 4.2 ハードウェアリソース情報取得・表示................................................................................. 40 4.2.1 ハードウェアリソース情報 .......................................................................................... 40 4.2.2 PCIコンフィギュレーション情報表示方法 ................................................................ 41 4.2.3 ハードウェアリソース情報取得方法 .......................................................................... 42 ■概要 .................................................................................................................................. 42 ■リソース情報取得ライブラリ関数一覧....................................................................... 42 ■構造体説明 ...................................................................................................................... 45 ■リソース情報取得関数使用例 ...................................................................................... 46 Interface Corporation -2- Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.3 4.4 4.5 4.6 4.7 4.8 第5章 5.1 5.2 I/Oアクセス・メモリアクセス ............................................................................................... 47 4.3.1 I/Oポートへのアクセス ................................................................................................ 47 4.3.2 メモリアクセス(1MB以上のメモリ空間アクセス) ................................................... 48 4.3.3 DOS用 4GBメモリアクセスユーティリティ.............................................................. 48 ■概要 .................................................................................................................................. 48 4.3.4 1MB以上のメモリ空間へのアクセス .......................................................................... 49 ■ライブラリ関数一覧 ...................................................................................................... 49 ■ライブラリ関数個別説明 .............................................................................................. 50 ■メモリアクセス関数使用例 .......................................................................................... 62 ■EMM386 使用時の制限事項.......................................................................................... 62 ■CPU のメモリキャッシュ機能を利用したメモリ間でのデータ高速転送 .............. 62 ■メモリキャッシュ関数使用時の制限事項................................................................... 63 ■メモリキャッシュ機能使用時のサンプルプログラムコード 1 ................................ 63 ■メモリキャッシュ機能使用時のサンプルプログラムコード 2 ................................ 64 割り込み設定・制御 ................................................................................................................ 65 4.4.1 割り込み処理とは.......................................................................................................... 65 4.4.2 割り込み処理の流れ...................................................................................................... 66 4.4.3 割り込み処理.................................................................................................................. 66 ■概要 .................................................................................................................................. 66 ■割り込みライブラリ関数一覧 ...................................................................................... 67 ■割り込みライブラリ関数個別説明 .............................................................................. 67 4.4.4 割り込み処理関数使用例.............................................................................................. 70 4.4.5 割り込み信号の伝播遅延.............................................................................................. 73 ■概要 .................................................................................................................................. 73 ■使用方法 .......................................................................................................................... 73 PCI BIOSドライバ .................................................................................................................... 74 ■概要 .................................................................................................................................. 74 ■使用方法 .......................................................................................................................... 74 インタフェースモジュール使用例......................................................................................... 75 4.6.1 I/Oポート入出力制御 .................................................................................................... 75 4.6.2 メモリアクセス制御...................................................................................................... 77 4.6.3 割り込み制御.................................................................................................................. 79 コンパイル方法 ........................................................................................................................ 81 4.7.1 総合ライブラリを使用したコンパイル方法 .............................................................. 81 カード型モジュール使用方法 ................................................................................................ 82 4.8.1 ハードウェアリソース設定 .......................................................................................... 82 4.8.2 CardBus設定方法(CardBusイネーブラ使用方法) ....................................................... 83 ■概要 .................................................................................................................................. 83 ■使用方法 .......................................................................................................................... 83 4.8.3 CardBus ID確認・設定方法........................................................................................... 84 デジタル入出力機能 85 関数一覧 .................................................................................................................................... 86 個別説明 .................................................................................................................................... 86 -3- Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第6章 6.1 CAN機能 94 CAN機能.................................................................................................................................... 94 第7章 BIOS割り込み一覧 95 7.1 INT 10h VGA BIOS................................................................................................................... 95 7.1.1 INT 10h ビデオサービス ............................................................................................ 95 7.2 INT 11h システム情報割り込み ........................................................................................... 97 7.2.1 INT 11h システム情報取得 ........................................................................................ 97 7.3 INT 12h メモリサイズの取得............................................................................................... 98 7.3.1 INT 12h メモリ量の取得 ............................................................................................ 98 7.4 INT 13h ディスケットサービス ........................................................................................... 98 7.4.1 INT 13h ステータスコード ........................................................................................ 98 7.4.2 INT 13h ディスケットサービス ................................................................................ 98 7.5 INT 14h シリアルサービス................................................................................................. 102 7.5.1 モデムステータス........................................................................................................ 102 7.5.2 ラインステータス........................................................................................................ 102 7.5.3 INT 14h シリアルサービス ...................................................................................... 102 7.5.4 INT 15h システムサービス ...................................................................................... 104 7.6 INT 15h ビッグメモリサービス ......................................................................................... 107 7.7 INT 15h PS/2 マウスサービス ............................................................................................ 108 7.7.1 PS/2 マウスステータスコード取得 ........................................................................... 108 7.7.2 INT 15h PS/2 マウスサービス.................................................................................. 108 7.8 INT 16h キーボードサービス............................................................................................. 110 7.9 INT 1Ah タイマサービス .................................................................................................... 111 7.10 INT 1Ah PCIサービス........................................................................................................ 112 7.10.1 PCIサービスステータスコード................................................................................ 112 7.10.2 INT 1Ah 一般PCIサービス ..................................................................................... 112 第8章 8.1 8.2 BIOSデータ領域 BIOSデータ領域定義 ............................................................................................................. 115 拡張BIOSデータ領域 ............................................................................................................. 119 第9章 9.1 割り込みベクタ 120 割り込みベクタ ...................................................................................................................... 120 第 10 章 10.1 10.2 10.3 10.4 115 情報サービス 121 情報の入手方法 .................................................................................................................... 121 製品使用登録 ........................................................................................................................ 121 FAQ(よく寄せられる質問).................................................................................................. 121 組み込み済みOSの情報 ....................................................................................................... 121 お知らせ 122 ■USB ポートの使用について........................................................................................ 122 Interface Corporation -4- Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第1章 本書概要 1.1 本書概要 本書は、Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)を使用し た、ハードウェア制御, 弊社CPUモジュールの制御を解説したドキュメントです。 DOS起動メディアに収録されているライブラリ, ユーティリティを使用したそれぞれの制御方法 を解説しています。 ※ 本書に記載されていない組み込みOSの詳細は『121ページ 10.4 組み込み済みOSの情報』を 参照してください。 -5- Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第2章 Interface DOS System(日本語環境モデル) 2.1 製品構成 DOS起動メディアは下記の内容で構成されています。 起動メディアの収録内容 名 称 DOS System 開発らくらくパッケージ for ATOM DOS外部コマンド 拡張I/O用ライブラリ 内 容 1)PCIデバイスのリソース取得 2)4GBメモリアクセス 3)割り込みアクセス 4)CPU制御 5)デジタル入出力 等、開発支援総合パッケージソフトウェア DOSの各種外部コマンドを収録 CAN等、各種制御用ソフトウェア ※ 拡張I/Oが搭載されている製品にのみ収録 されています。 収録 ディレクトリ ¥IFCM ¥DOS ¥GPDxxxx 2.2 対応製品 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)に対応している 製品は下記の通りです。 対応製品 プロセッサ Intel(R) Atom(TM) プロセッサ N450 Intel(R) Atom(TM) プロセッサ D525 長期安心FAコントローラ 車載 Classembly Devices(R) Interface Corporation -6- Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2.3 概要 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)は、MS-DOS互換 OSで、日本語入力も行うができます。 さらに、収録されている DOS System開発らくらくパッケージを使用することで、簡 単にインタフェースモジュールの制御やCPUの制御を行うことができます。 2.4 機能と特長 ●MS-DOS互換 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)は、MS-DOS互 換OSです。OSとしての安定性は、Windows, Linuxをはるかに凌ぎ、シングルタスクで、リアル タイム性の高いシステムを構築することができます。 ●日本語入力 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)は、日本語入力 も行うことができます。開発者, 組み込み後のお客様ともに扱いやすいモデルです。 ● DOS System開発らくらくパッケージ for ATOMを収録 PCIデバイスのリソース取得, 4GBメモリアクセス, PCIデバイスの割り込み登録, CPU制御等が 簡単に行える、開発支援総合パッケージを収録しています。 2.5 Interface DOS System開発らくらくパッケージ Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)には DOS System開発らくらくパッケージを収録しています。開発らくらくパッケージの 総合ライブラリを使用することで、リソース情報の取得, I/O, メモリアクセス, 割り込み制御等を 簡単に行うことができます。 製品名 収録ディレクトリ ¥IFCM DOS System開発らくらくパッケージ for ATOM DOS System開発らくらくパッケージの利用方法については、次章以降で説明します。 ! 注意 DOS System開発らくらくパッケージは、対象の DOS System(日本語環境モデル)以外で 起動メディアに収録されている Intel(R) Atom(TM) プロセッサ搭載 は動作しません。 -7- Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2.5.1 対応コンパイラ 対応言語 メモリモデル Ver.6.0 Microsoft C Ver.7.0 Microsoft C/C++ Ver.8.0 Microsoft C/C++ Turbo C Ver.2.0 (英語版) Turbo C++ Ver.4.0 Borland C++ Ver.5.0 Borland C++ Ver.5.2 Open Watcom C/C++ Ver.1.5 Open Watcom C/C++ Ver.1.6 スモール, ラージ, ヒュージ 2.5.2 開発環境 開発(コンパイル)は、別のコンピュータにクロス開発環境を構築して行ってください。 ! 注意 開発するコンピュータに要求されるCPU, メモリ, OS等は、各コンパイラのマニュアルを参考に してください。 コンパイラによっては、本製品に搭載されている い可能性があります。 Interface Corporation -8- DOS System上では動作しな Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2.5.3 ファイル一覧 フォルダ名 IFCM ファイル名 DRIVERS INCLUDE LIB TOOLS SAMPLES 内 容 FBIMEM4G.COM IFPCIBDR.SYS※ ISRFIX.EXE SETCARD.EXE IFCM.H IFCMWS.LIB IFCMWL.LIB IFCMWH.LIB IFCMBS.LIB IFCMBL.LIB IFCMBH.LIB IFCMMS.LIB IFCMML.LIB IFCMMH.LIB VOLTAGE.EXE THERMAL.EXE SPSTEP.EXE REBOOT.EXE POFF.EXE GETMAC.EXE FBIPCIDG.EXE CLKDUTY.EXE IFCARDID.EXE IFCARDID.TBL BMON.EXE GETTEMP GETTEMP.C BCMP.BAT MCMP.BAT TCMP.BAT WCMP.BAT POWER POWER.C BCMP.BAT MCMP.BAT TCMP.BAT WCMP.BAT RASOUT RASOUT.C BCMP.BAT MCMP.BAT TCMP.BAT WCMP.BAT WDT.C WDT BCMP.BAT MCMP.BAT TCMP.BAT WCMP.BAT ※ Intel(R) Atom(TM) プロセッサ N450搭載 長期安心FAコントローラと 車載Classembly Devices Atom D525搭載モデルにのみ収録されています。 -9- Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第3章 CPU制御 CPUを制御する便利な機能が 制御機能 SpeedStep機能 クロックデューティ制御 CPU温度測定機能 電源電圧測定機能 ウォッチドッグタイマ機能 ハードウェアタイマ機能 RAS制御 その他ハードウェア機能 DOS System開発らくらくパッケージに収録されています。 ユーティリティ SPSTEP.EXE CLKDUTY.EXE THERMAL.EXE VOLTAGE.EXE ― ― ― 各種ユーティリティ 総合ライブラリ IFCMxx.LIB ユーティリティは、DOS起動メディア(¥IFCM¥TOOLS)に収録されています。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 Interface Corporation - 10 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.1 SpeedStep機能 CmSetCpuClock関数を用いて、ドライバファイル内に設定されているCPUステートテーブルに従 い、設定したパラメータに応じた電圧, クロックを設定することができます。 本機能を使用したユーティリティがDOS起動メディア(¥IFCM¥TOOLS)に収録されています。 1. CmSetCpuClock 【機能】 CPUの速度を設定します。 【書式】 int CmSetCpuClock ( int stepno ); 【パラメータ】 stepno CPUのStepNo.を指定します。デフォルトはCM_CPU_CLK_HIGH(最 高速度)です。 識別子 CM_CPU_CLK_HIGH CM_CPU_CLK_LOW 値 0 1 意味 最高速度 最低速度 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 8h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 CPUを最高速度に設定します。 Int Ret; Ret = CmSetCpuClock(CM_CPU_CLK_HIGH); 【備考】 設定される周波数は、以下の通りです。 CPU CM_CPU_CLK_HIGH CM_CPU_CLK_LOW N450(1.66GHz) 1.66GHz 800MHz ※ Intel(R) Atom(TM) D525 プロセッサには SpeedStep 機能はありません。 - 11 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. CmGetCpuClock 【機能】 CPUの速度を取得します。 【書式】 int CmGetCpuClock ( int* stepno ); 【パラメータ】 stepno CPUのStepNo.の格納先です。 識別子 CM_CPU_CLK_HIGH CM_CPU_CLK_LOW 値 0 1 意味 最高速度 最低速度 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 1h 5h 8h 内容 正常終了 内部エラー NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 CPUの速度を取得します。 int Ret; int Stepno; Ret = CmGetCpuClock(&Stepno); ※ Intel(R) Atom(TM) D525 プロセッサにはSpeedStep機能はありません。 Interface Corporation - 12 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.2 クロックデューティ制御 CPUクロックのデューティ比を制御します。 CmSetCpuClkDuty関数を用いてCPUクロックのデューティ比を変更することができます。 本機能を使用したユーティリティがDOS起動メディア(¥IFCM¥TOOLS)に収録されています。 1. CmSetCpuClkDuty 【機能】 CPUのスロットル(クロック・デューティ・サイクル)を設定します。 【書式】 int CmSetCpuClkDuty( int Duty ); 【パラメータ】 CPUのスロットルを設定します。デフォルトは100.0%です。 Duty 値 1 2 3 4 5 6 7 8 意味 12.5% 25.0% 37.5% 50.0% 62.5% 75.0% 87.5% 100.0% 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 8h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 CPUの温度上昇を抑えるため、CPUの速度を50.0%に設定します。 int Ret; Ret = CmSetCpuClkDuty(4); - 13 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【備考】 ・BIOSメニューで「Hyperthreading」を「Disabled」にしてご使用ください。 ・「デューティ・サイクル」とは、クロック信号の実際のデューティ・サイクルを指すのではな く、クロック信号がプロセッサ・チップを駆動できる時間を指します。 クロック停止機構を使用してプロセッサのクロックの間隔を制御することで、プロセッサの 消費電力を調整できます。 例:25%のデューティ・サイクルの場合 プロセッサに適用されるクロック クロック停止デューティ・サイクル Interface Corporation - 14 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. CmGetCpuClkDuty 【機能】 CPUのスロットル(クロック・デューティ・サイクル)を取得します。 【書式】 int CmGetCpuClkDuty( int* pDuty ); 【パラメータ】 pDuty CPUのスロットル(クロック・デューティ・サイクル)格納先です。 下記の値が取得できます。 値 1 2 3 4 5 6 7 8 意味 12.5% 25.0% 37.5% 50.0% 62.5% 75.0% 87.5% 100.0% 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_NULL_POINTER 5h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』 を参照してください。 【記述例】 CPUのスロットル(クロック・デューティ・サイクル)を取得します。 int Ret; int Duty; Ret = CmGetCpuClkDuty(&Duty); 【備考】 BIOSメニューで「Hyperthreading」を「Disabled」にしてご使用ください。 - 15 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.3 CPU温度測定機能 CPU温度を計測します。 CmGetTemp関数を用いてCPUの温度を取得します。クロックデューティ制御と組み合わせること で、CPUの温度変化を容易に計測することができます。 本機能を使用したユーティリティがDOS起動メディア(¥IFCM¥TOOLS)に収録されています。 本機能を使用したサンプルプログラムがDOS起動メディア(¥IFCM¥SAMPLES¥GETTEMP)に収録 されています。 1. CmGetTemp 【機能】 指定対象の温度値を取得します。 【書式】 int CmGetTemp( unsigned int Target, int* pTemp ); 【パラメータ】 Target 温度値を取得する対象を指定します。下記の値が指定できます。 識別子 CM_TEMP_TARGET_CPU CM_TEMP_TARGET_BRD pTemp 値 0 1 意味 CPU温度値を取得します。 基板温度値を取得します。 温度値格納先です。負数が得られることもあります。単位は℃です。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 5h 8h 内容 正常終了 内部エラー 入力パラメータ不正 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 現在のCPU温度値を取得します。 int Ret; int CpuTemp; Ret = CmGetTemp(CM_TEMP_TARGET_CPU, &CpuTemp); Interface Corporation - 16 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.4 電源電圧測定機能 電源電圧を計測できます。 CmGetPower関数を用いて電源電圧を取得し表示できます。 本機能を使用したユーティリティがDOS起動メディア(¥IFCM¥TOOLS)に収録されています。 本機能を使用したサンプルプログラムがDOS起動メディア(¥IFCM¥SAMPLES¥POWER)に収録さ れています。 1. CmGetPower 【機能】 指定対象の電圧値を取得します。 【書式】 int CmGetPower( unsigned int Target, float* pPower ); 【パラメータ】 Target 電圧値を取得する対象を指定します。下記の値が指定できます。 識別子 CM_POWER_TARGET_EXT CM_POWER_TARGET_5V CM_POWER_TARGET_3_3V CM_POWER_TARGET_12V 値 0 1 2 3 意味 入力電源電圧値を取得します。 5Vバス電圧値を取得します。※ 3.3Vバス電圧値を取得します。※ 12Vバス電圧値を取得します。※ ※ Intel(R) Atom(TM) プロセッサ N450搭載 長期安心FAコントローラ専用です。 pPower 電圧値格納先です。単位はVです。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 5h 8h 内容 正常終了 内部エラー 入力パラメータ不正 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 現在の電源電圧値を取得します。 int Ret; float Power; Ret = CmGetPower(CM_POWER_TARGET_EXT, &Power); - 17 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.5 ウォッチドッグタイマ機能 CPUにウォッチドッグタイマ(WDT)が内蔵されています。 ソフトウェアにより、設定時間内にウォッチドッグタイマを都度クリアすることにより、ハング アップ等のOS異常、およびアプリケーション異常によるシステムの停止を最小限に抑えることが できます。本機能を使用したサンプルプログラムがDOS起動メディア(¥IFCM¥SAMPLES¥WDT) に収録されています。 1. CmSetWDTConfig 【機能】 WDTの周期、および周期満了時のアクションを設定します。 【書式】 int CmSetWDTConfig( unsigned int Cycle, unsigned int Action ); 【パラメータ】 Cycle WDTの周期を設定します。設定できる範囲は1∼255で、単位は秒です。 デフォルトは30です。 BIOS設定でWDTを有効にしている場合は、その設定となります。 Action WDT周期満了時のアクションを指定します。下記の値が指定できます。 デフォルトはCM_WDT_ACT_RESETです。 BIOS設定でWDTを有効にしている場合は、CM_WDT_ACT_RESETにな ります。 識別子 CM_WDT_ACT_RESET 値 1 意味 周期満了時にCPUリセットを起こします。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 8h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 Interface Corporation - 18 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【記述例】 WDT周期を50秒、アクションをCPUリセットに設定します。 int Ret; Ret = CmSetWDTConfig(50, CM_WDT_ACT_RESET); 【備考】 ・WDT動作中に、本関数を実行すると、新しく設定した周期で、再度カウントし直します。 ・複数の異なるアプリケーションで本関数を実行した場合、最後に設定した周期、アクションが 有効となります。 ・BIOS設定でWDTを有効にしている場合は、OS起動時にその設定が引き継がれます。 - 19 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. CmGetWDTConfig 【機能】 現在のWDTの周期、および周期満了時のアクションの設定情報を取得します。 【書式】 int CmGetWDTConfig( unsigned int* pCycle, unsigned int* pAction ); 【パラメータ】 pCycle WDTの周期格納先です。 pAction WDT周期満了時のアクション格納先です。CmSetWDTConfigで設定 できる値が取得できます。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_NULL_POINTER 5h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 WDT周期とアクションの設定情報を取得します。 int Ret; unsigned int Cycle; unsigned int Action; Ret = CmGetWDTConfig(&Cycle, &Action); Interface Corporation - 20 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. CmStartWDT 【機能】 WDTのカウントを開始します。 【書式】 int CmStartWDT(void); 【パラメータ】 なし 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_ALREADY 3h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー 既に動作中 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 WDTのカウントを開始します。 int Ret; Ret = CmStartWDT(); 【備考】 一度WDTを停止させた後、再度本関数を実行した場合、カウント数は最初からカウントし直さ れます。 - 21 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4. CmStopWDT 【機能】 WDTのカウントを停止します。 【書式】 int CmStopWDT(void); 【パラメータ】 なし 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_ALREADY 3h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー 既に停止中 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 WDTのカウントを停止します。 int Ret; Ret = CmStopWDT(); Interface Corporation - 22 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 5. CmClearWDT 【機能】 WDTのカウントをクリアします。クリアすると設定した周期の値でカウントし直します。 【書式】 int CmClearWDT(void); 【パラメータ】 なし 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_ALREADY 3h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー 既に停止中 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 WDTのカウントをクリアします。 int Ret; Ret = CmClearWDT(); - 23 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.6 ハードウェアタイマ機能 SCH(System Controller Hub)上に搭載されているカウンタの値を取得できます。 PMタイマのカウンタ値を取得します。このカウンタのクロックは3.579545MHzです。 カウンタ値を2回読み込み、差分を取ることで処理の実行時間の計測が簡単に行えます。 1. CmGetIchTmr 【機能】 SCH(System Controller Hub)に搭載されているカウンタの値を取得します。 カウンタは24ビットで、クロックは3.579545MHzです。PMタイマのカウンタ値を取得します。 このカウンタのクロックは3.579545MHzです。カウンタ値を2回読み込み、差分を取ることで処 理の実行時間の計測が簡単に行えます。 【書式】 int CmGetIchTmr( unsigned long* ); 【パラメータ】 pCounter pCounter カウンタ値格納先です。カウンタの値(00000000h∼00FFFFFFh)を返します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 Interface Corporation - 24 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【記述例】 ハードウェアのカウンタ値を取得します。 int Ret; unsigned long Counter; Ret = CmGetIchTmr (&Counter); if (Ret != CM_ERROR_SUCCESS) { printf(“CmGetIchTmr ERROR ¥n”); } ハードウェアのカウンタ値を取得し時間計測を行います。 int Ret; double td; unsigned long t1, t2; Ret = CmGetIchTmr(&t1); if (Ret != CM_ERROR_SUCCESS) { printf(“CmGetIchTmr ERROR ¥n”); } Ret = CmGetIchTmr(&t2); if (Ret != CM_ERROR_SUCCESS) { printf(“CmGetIchTmr ERROR ¥n”); } if (t2 td = } else td = t2); } >= t1) { ((double)1.0/(double)3579545.0) * 1000000.0*(t2 - t1); { ((double)1.0/(double)3579545.0)*1000000.0*((0x01000000L-t1) + printf("time distance is :%.1lf micro second¥n",td); - 25 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.7 RAS制御 本機能を使用したサンプルプログラムが、DOS起動メディア(¥IFCM¥SAMPLES¥RASOUT)に収録 されています。 ! 注意 RAS制御機能が搭載されているClassembly Deveices(R)でのみ利用できます。 1. CmControlRO 【機能】 RAS出力端子を制御します。 【書式】 int CmControlRO( unsigned int Ctrl ); 【パラメータ】 Ctrl RAS出力の制御値を指定します。 下記の値が指定できます。 識別子 CM_RO_OFF CM_RO_ON 値 0 1 意味 RAS出力をリレーOFFに設定します。 RAS出力をリレーONに設定します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_INTERNAL 1h CM_ERROR_INVALID_PARAMETER 2h CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 RAS出力をリレーONに設定します。 int Ret; Ret = CmControlRO(CM_RO_ON); 【備考】 システムの電源投入時、RAS出力はリレーOFFになります。OS再起動、およびシャットダウン 時でも、電源が待機状態であれば、RAS出力状態は保持されます。 Interface Corporation - 26 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. CmGetStatus 【機能】 現在のステータスを取得します。 【書式】 int CmGetStatus( unsigned long* pStatus ); 【パラメータ】 予め取得したいステータスビットを1にして渡します。予約ビットに pStatus は0を指定してください。 関数が正常終了すると、予め1にしておいたビット位置のステータスが返されます。 それ以外のビットは0が返ります。 bit13 bit12, bit11 bit31∼bit14 予約 IO 予約 項目 IO FAN RASO WDTE bit10 bit9 bit8 bit7∼bit0 FAN RASO WDTE 予約 説明 現在のI/O部の稼動状態が取得できます。 0:I/O部停止 1:I/O部稼動中 現在のFANの稼動状態が取得できます。 0:FAN停止 1:FAN稼動中 RAS出力状態を取得できます。 0:リレーOFF 1:リレーON WDTの動作状態を取得できます。 0:WDT有効 1:WDT無効 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 1h 5h 8h 内容 正常終了 内部エラー NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 - 27 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【記述例】 現在のWDTとRAS出力状態を取得します。 int Ret; unsiged long Status; Status = 0x00000300; Ret = CmGetStatus(&Status); 【備考】 FANの稼動状態は、I/O Classembly Deveices(R)でのみ、ステータス取得できます。 I/O部の稼動状態は、タフコントローラ Classembly Deveices(R)でのみ、ステータス取得できます。 Interface Corporation - 28 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. CmSetROConfig 【機能】 自動RAS出力条件と、異常時のRAS出力状態を設定します。 【書式】 int CmSetROConfig( unsigned int Enable, unsigned int Ctrl ); 【パラメータ】 RAS出力する異常条件を設定します。下記の値が設定できます。 Enable 複数の条件をORで設定することもできます。 識別子 CM_ROCONF_WDS CM_ROCONF_V27VA Ctrl 値 1h 80h 意味 WDT周期満了時にRAS出力を行います。 電源電圧異常時にRAS出力を行います。 異常時にRAS出力する端子状態を設定します。 下記の値が使用できま す。 識別子 CM_RO_OFF CM_RO_ON 値 0 1 意味 異常検知時にRAS出力をリレーOFFに設定します。 異常検知時にRAS出力をリレーONに設定します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NOT_SUPPORT 値 0 1h 2h 8h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 WDT異常, 電源電圧異常時にRAS出力をリレーONにします。 int Ret; Ret = CmSetROConfig(CM_ROCONF_WDS | CM_ROCONF_V27VA, CM_RO_ON); 【備考】 システムの電源投入時、異常条件(Enable)は0、異常時RAS出力状態(Ctrl)はリレーOFFになりま す。OS再起動、およびシャットダウン時でも、電源が待機状態であれば、設定情報は保持され ます。 - 29 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4. CmGetROConfig 【機能】 自動RAS出力条件と、異常時のRAS出力状態を取得します。 【書式】 int CmGetROConfig( unsigned int* pEnable, unsigned int* pCtrl ); 【パラメータ】 pEnable RAS出力する異常条件格納先です。下記の値が取得できます。 複数の条件が取得されることもあります。 識別子 CM_ROCONF_WDS CM_ROCONF_V27VA pCtrl 値 1h 80h 意味 WDT周期満了時にRAS出力を行います。 電源電圧異常時にRAS出力を行います。 異常時にRAS出力する端子状態の格納先です。 下記のいずれかが取得 できます。 識別子 CM_RO_OFF CM_RO_ON 値 0 1 意味 異常検知時にRAS出力をリレーOFFに設定します。 異常検知時にRAS出力をリレーONに設定します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 1h 5h 8h 内容 正常終了 内部エラー NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 現在のRAS出力条件、異常時のRAS出力設定を取得します。 int Ret; unsigned int Enable; unsigned int Ctrl; Ret = CmGetROConfig(&Enable, &Ctrl); Interface Corporation - 30 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.8 その他ハードウェア機能 3.8.1 システム再起動 DOS起動メディア(¥IFCM¥TOOLS)に収録されているREBOOT.EXEを使用することでシステムの 再起動を行えます。 ■使用方法 コマンドラインより C:¥REBOOT を実行します。 1. CmReboot 【機能】 リブートを行います。 【書式】 int CmReboot( int ); 【パラメータ】 RebootMode RebootMode リブートモードを指定します。 識別子 CM_CPU_COLD_RESET CM_CPU_WARM_RESET 値 0 1 意味 Cold Resetによるリブートを行います。 Warm Resetによるリブートを行います。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 CM_ERROR_SUCCESS 0 CM_ERROR_NOT_SUPPORT 8h 内容 正常終了 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 Cold Resetによるリブートを行います。 int Ret; Ret = CmReboot(CM_CPU_COLD_RESET); ! 注意 タフコントローラ Classembly Devices(R)では、Cold Resetは行えません。 - 31 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.8.2 システムシャットダウン DOS起動メディア(¥IFCM¥TOOLS)に収録されているPOFF.EXEを使用することでシステムをシャ ットダウンできます。本機能を使用したユーティリティがDOS起動メディア(¥IFCM¥TOOLS)に収 録されています。 ■使用方法 コマンドラインより C:¥POFF を実行します。 1. CmShutdown 【機能】 シャットダウンを行います。 【書式】 int CmShutdown(void); 【パラメータ】 なし 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_NOT_SUPPORT 値 0 8h 内容 正常終了 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 シャットダウンを行います。 int Ret; Ret = CmShutdown(); Interface Corporation - 32 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.8.3 バッテリモジュール制御 車載 Classembly Devices(R)には、オプション品のバッテリモジュールを接続することができます。 DOS System開発らくらくパッケージには、その機能を簡単に制御できる機能が収録 されています。 また、DOSメディア(¥IFCM¥TOOLS)に収録されているBMON.EXEを使用することで、バッテリモ ジュールのステータスを簡単に確認することができます。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 ! 注意 本機能は、オプション品のバッテリモジュールを接続した環境でのみ使用できます。 長期安心FAコントローラのバッテリモジュールでは使用できません。 - 33 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 1. CmGetBatStatus 【機能】 バッテリモジュールのステータスを取得します。 【書式】 int CmGetBatStatus( unsigned long* pStatus ); 【パラメータ】 バッテリステータス格納先です。下記の値が取得できます。 pStatus 関数が正常終了すると、予め1にしておいたビット位置のステータスが返されます。 それ以外のビットは0が返ります。 bit7 bit6 bit31∼bit8 予約 ERR BLALM bit5 bit4 bit3 bit2 bit1 bit0 LALM DCHG CHG RSOC2 RSOC1 RSOC0 項目 説明 ERR バッテリ異常 0:正常 1:エラーが発生 ※ バッテリ異常が発生した場合、弊社カスタマーサポートセンタまでお問い 合わせください。 BLALM バッテリ低下アラーム 0:正常 1:バッテリ容量が20%以下 LALM 寿命アラーム 0:正常 1:寿命アラームが発生 ※ 寿命アラームが発生した場合、バッテリモジュールの交換時期です。 DCHG 放電情報 0:放電していない 1:放電中 CHG 充電情報 0:充電していない 1:充電中 車載 Classembly Devices(R)用の場合 RSOC2 バッテリ残容量 RSOC1 111:100%∼80% RSOC0 011:79%∼30% 001:29%∼1% 000:0% Interface Corporation - 34 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT CM_ERROR_NOT_LINKED 値 0 1h 5h 8h 9h 内容 正常終了 内部エラー NULLポインタ検出 未サポート バッテリモジュール接続異常 CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 バッテリモジュールのステータスを取得します。 int Ret; unsiged long Status; Ret = CmGetBatStatus(&Status); - 35 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. CmSetPowerOffTime 【機能】 停電発生からバッテリモジュールの電源出力停止までの時間を設定します。 【書式】 int CmSetPowerOffTime( unsigned int PowerOff ); 【パラメータ】 PowerOff バッテリモジュールの電源出力停止までの時間を設定します。設定 可能範囲は0∼255で、単位は秒です。デフォルトは16秒です。0を指 定すると電源出力は停止しません。(バッテリの残容量が0になるまで 電源出力します。) 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_INVALID_PARAMETER CM_ERROR_NOT_SUPPORT CM_ERROR_NOT_LINKED 値 0 1h 2h 8h 9h 内容 正常終了 内部エラー 入力パラメータ不正 未サポート バッテリモジュール接続異常 CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 停電後、60秒間バッテリモジュールの電源を出力させます。 int Ret; unsiged int PowerOff=60; Ret = CmSetPowerOffTime(PowerOff); ! 注意 CmSetPowerOffTimeで電源出力の停止時間を設定していない場合、196秒(16秒+180秒)後 にバッテリモジュールからの電源は出力が停止されます。 電源出力を停止させるまでの時間を、デフォルトの16秒に設定したい場合でも、 CmSetPowerOffTimeで時間を設定してください。 Interface Corporation - 36 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. CmGetPowerOffTime 【機能】 停電発生からバッテリモジュールの電源出力停止までの時間を取得します。 【書式】 int CmGetPowerOffTime( unsigned int* pPowerOff ); 【パラメータ】 pPowerOff バッテリモジュールの電源出力停止までの時間を取得します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT CM_ERROR_NOT_LINKED 値 0 1h 5h 8h 9h 内容 正常終了 内部エラー NULLポインタ検出 未サポート バッテリモジュール接続異常 CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 停電後、バッテリモジュールの電源出力が停止するまでの時間を取得します。 int Ret; unsiged int PowerOff; Ret = CmGetPowerOffTime(&PowerOff); ! 注意 CmSetPowerOffTimeで電源出力の停止時間を設定していない場合、CmGetPowerOffTime では16が返されますが、バッテリモジュールの電源は196秒(16秒+180秒)後に出力が停止さ れます。 電源出力を停止させるまでの時間を、デフォルトの16秒に設定したい場合でも、 CmSetPowerOffTimeで時間を設定してください。 - 37 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.9 戻り値一覧 エラー識別子 CM_ERROR_SUCCESS CM_ERROR_INTERNAL 値 0 1h 正常終了 内部エラー CM_ERROR_INVALID_PARAMETER 2h 入力パラメータが不正 CM_ERROR_ALREADY 3h CM_ERROR_NOT_YET 4h CM_ERROR_NULL_POINTER 5h 既にWDTが動作して いる。 既にコールバックを登 録している。 まだWDTが動作して いない。 まだコールバックを登 録していない。 NULLポインタ検出 CM_ERROR_NOT_ALLOCATE 6h メモリ確保失敗 CM_ERROR_NOT_SUPPORT 8h 未サポート CM_ERROR_NOT_LINKED 9h バッテリモジュール接 続異常 Interface Corporation 意味 - 38 - 対処方法 − ハードウェア制御中の内部 エラーです。 どのような状況でエラーが 発生したかをご連絡くださ い。 設定できる範囲をご確認の 上、パラメータを設定してく ださい。 WDT停止中に実行してくだ さい。 コールバックを解除してか ら実行してください。 WDT動作中に実行してくだ さい。 コールバックを登録してく ださい。 引数にNULLが渡されていま す。 有効な変数を指定してくだ さい。 メモリの使用を抑えてくだ さい。 本機能はサポートしていま せん。 バッテリモジュールが接続 されていません。 Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3.10 サンプルプログラムのコンパイル方法 下記のサンプルプログラムコンパイル用バッチファイルを用意しています。 ・Borland C++コンパイル用バッチファイル「Bcmp.bat」 ・Turbo C++ コンパイル用バッチファイル「Tcmp.bat」 ・Microsoft C/C++コンパイル用バッチファイル「Mcmp.bat」 ・Open Watcom C/C++コンパイル用バッチファイル「Wcmp.bat」 バッチファイル実行時には、アンダーラインの部分に「メモリモデル」を指定してください。 バッチファイルコマンドは、二重アンダーラインが付いた文字の部分です。 ●Turbo C++ の環境でサンプルプログラムをコンパイルする場合 C:¥IFCM¥SAMPLES¥xxxx>tcmp l メモリモデル指定 ・「s」:スモールモデル ・「l」:ラージモデル ・「h」:ヒュージモデル ●Borland C++ の環境でサンプルプログラムをコンパイルする場合 C:¥IFCM¥SAMPLES¥xxxx>bcmp l メモリモデル指定 ・「s」:スモールモデル ・「l」:ラージモデル ・「h」:ヒュージモデル ●Microsoft C/C++ の環境でサンプルプログラムをコンパイルする場合 C:¥IFCM¥SAMPLES¥xxxx>mcmp L メモリモデル指定 ・「S」:スモールモデル ・「L」:ラージモデル ・「H」:ヒュージモデル ●Open Watcom C/C++ の環境でサンプルプログラムをコンパイルする場合 C:¥IFCM¥SAMPLES¥xxxx>wcmp L メモリモデル指定 ・「S」:スモールモデル ・「L」:ラージモデル ・「H」:ヒュージモデル - 39 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第4章 インタフェースモジュール制御 4.1 概要 本章では、Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)で インタフェースモジュールを制御するための方法を説明します。 DOSでインタフェースモジュールを制御するためのライブラリが提供されている場合は、専用の ライブラリソフトを使用します。ライブラリソフトがない場合は直接制御する必要があります。 4.1.1 インタフェースモジュール制御方法 ハードウェアベンダからインタフェースモジュールを制御するための専用ライブラリが提供され ている場合があります。弊社の場合、DOSでインタフェースモジュールを制御するために、DOS 専用ライブラリ(GPDシリーズ)を提供しています。弊社製インタフェースモジュールをご使用の場 合は、幣社Web site(www.interface.co.jp)よりGPDシリーズをダウンロードし、インタフェースモジ ュールの制御を行ってください。 ハードウェアベンダから制御用ライブラリが提供されていない場合は、お客様が直接インタフ ェースモジュールを制御する必要があります。 4.1.2 ハードウェア制御に必要な処理 お客様がインタフェースモジュールを直接制御するには、主に以下の処理が必要となります。 1) ハードウェアリソース情報(I/Oポートアドレスまたはメモリアドレス, 割り込み番号)の取得 2) I/Oポートまたはメモリへのアクセス 3) 割り込みの制御 I/Oポートやメモリ等の仕様は、インタフェースモジュールごとに決まっています。 DOSでインタフェースモジュールを直接制御する場合は、ハードウェアベンダにお問い合わせの 上、各インタフェースモジュールの仕様を必ずご確認ください。 4.2 ハードウェアリソース情報取得・表示 4.2.1 ハードウェアリソース情報 PCIデバイスを制御するためには、制御するインタフェースモジュールのハードウェアリソース情 報(I/Oポートアドレス, メモリアドレス, IRQ)を取得する必要があります。 ハードウェアリソース情報はインタフェースモジュールのPCIコンフィギュレーションレジスタ に格納されています。 Interface Corporation - 40 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.2.2 PCIコンフィギュレーション情報表示方法 PCIデバイスを制御するには、ハードウェアリソース情報が必要です。 PCIデバイスの場合、ハードウェアリソースは、システム起動時にBIOSが自動的に割り当てます。 BIOSはハードウェアリソースを、インタフェースモジュールのPCIコンフィギュレーション情報 として管理します。このPCIコンフィギュレーション情報はPCIバスにつながっている全てのデバ イスに存在し、ハードウェアリソース情報以外にもメーカ名やデバイスの種類等の情報が管理さ れています。 DOS上で認識されているPCIデバイスのコンフィギュレーション情報を表示するユーティリティ を起動メディアに収録しています。本ユーティリティを使用することで、DOS上から簡単にPCIデ バイス情報を確認できます。 製品名 PCIデバイス表示ユーティリティ 実行ファイル名 FBIPCIDG.EXE 収録ディレクトリ ¥IFCM¥TOOLS DOS上で上記実行ファイルを実行すると下記のような画面に、認識されているPCIデバイスの一覧 情報が表示されます。 ※ 表示は16進数です。例えば弊社PCI-466102の場合、Vendor IDは1147h, Device IDは1235h(4661) と表示されます。 上記画面で「Enter」キーを押すと、選択されているデバイスのコンフィギュレーション情報の詳 細表示画面に移行します。 - 41 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.2.3 ハードウェアリソース情報取得方法 DOS System開発らくらくパッケージの総合ライブラリを使用することで、ハード ウェアリソース情報の取得をプログラム上から簡単に行うことができます。 ■概要 総合ライブラリを使用することで、プログラム上から簡単にハードウェアリソース情報を取得す ることができます。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 総合ライブラリのリソース取得機能を利用する場合、PCIコンフィギュレーション情報として、以 下の4つがポイントとなります。 コンフィギュレーション情報 Vendor ID Device ID Base Address Interrupt Line 内 容 ベンダID。PCIデバイスメーカを示すIDです。 弊社製品は1147hになっています。 デバイスID。ベンダIDで指定されるPCIデバイスメーカが自 社のデバイスに割り当てた16ビットのIDです。 弊社製品のデバイスIDは製品型式になっています。 (例)PCI-2702Cなら0A8Eh(2702), PCI-466102なら1235h(4661) になります。 ※ 詳細は各GPDシリーズをご確認ください。 I/Oポートやメモリの先頭アドレスです。BIOSがPCIデバイス に、自動的に割り当てます。 PCIデバイスは1枚で最大6つのBaseAddressを持つことができ ます。最下位ビットが1の時、このBaseAddressはI/O空間を意 味します。実際のI/Oポートアドレスは、この値をFFFChでマ スクした値です。 また、最下位ビットが0の時、このベースアドレスはメモリ 空間を意味します。実際のメモリアドレスは、この値を FFFFFFF0hでマスクした値です。 割り込み番号です。BaseAddress同様BIOSがPCIデバイスに自 動的に割り当てます。 総合ライブラリは、ベンダIDとデバイスIDでインタフェースモジュールを特定し、そのインタ フェースモジュールに割り当てられているPCIコンフィギュレーション情報を取得します。 ■リソース情報取得ライブラリ関数一覧 No. 1 2 関数名 PciGetConfigReg PciGetConfigRegEx Interface Corporation 機 能 デバイスのリソース情報を取得します。 デバイスのリソース情報を取得します。 - 42 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド リソース情報取得関数個別説明 1. PciGetConfigReg 【機能】 ベンダID, デバイスIDから、インタフェースモジュールに割り当てられたI/Oポートアドレス, メモリアドレス, 割り込み番号を取得します。サブシステムID, サブベンダIDを区別する時や、 全てのPCIコンフィギュレーションレジスタの値を取得したい場合は、PciGetConfigRegEx関数 を使用します。 【書式】 #include "IFCM.h" int IFCDECL PciGetConfigReg( int index, unsigned int ven_id, unsigned int dev_id, unsigned long bar[], char *irq ) 【パラメータ】 index ハードウェアリソース情報を取得したいPCIデバイスの、インタフェース モジュールのインデックス番号を指定します。 (RSW1の値とは関係ありません) 同一型式のインタフェースモジュールが1枚しかない場合は1を指定しま す。複数枚ある場合には何枚目のPCIデバイスのリソースを取得するか指 定します。 ven_id ハードウェアリソース情報を取得したいインタフェースモジュールのベ ンダIDを指定します。 dev_id ハードウェアリソース情報を取得したいインタフェースモジュールのデ バイスIDを指定します。 bar[] BaseAddress[0]∼BaseAddress[5]を格納する変数へのポインタです。 irq 割り込み番号を格納する変数へのポインタです。 【戻り値】 0 :正常終了(インタフェースモジュールが見つかりました)。 -1 : PCI BIOSがありません。 -2 :インタフェースモジュールが1枚も見つかりませんでした。 -3 :これ以上インタフェースモジュールがありません。 -9 :本関数はIntel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデ ル)以外では使用できません。 ! 注意 PciGetConfigRegではマルチファンクションデバイス(ファンクション番号が1以上のデバイス)の リソース情報は取得できません。マルチファンクションデバイスのリソース情報を取得する場 合、PciGetConfigRegExを使用してください。 - 43 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. PciGetConfigRegEx 【機能】 ベンダID, デバイスID, サブベンダID, サブシステムIDから、インタフェースモジュールに割 り当てられたI/Oポートアドレス, メモリアドレス, 割り込み番号を取得します。 本関数では、全てのPCIコンフィギュレーションレジスタの値を取得できます。 【書式】 #include "IFCM.h" int IFCDECL 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を指定します。 dev_id インタフェースモジュールのデバイスIDを指定します。 subven_id インタフェースモジュールのサブベンダIDを指定します。 subsys_id インタフェースモジュールのサブシステムIDを指定します。 bus_info バス情報を格納する変数へのポインタです。 バス情報は、以下の形式で格納されます。 ビット15∼ビット8:バス番号 ビット7∼ビット3:デバイス番号 ビット2∼ビット0:ファンクション番号 pciData PCIコンフィギュレーションレジスタの値を格納する構造体へのポイン タです。 【戻り値】 0 :正常終了(インタフェースモジュールが見つかりました)。 -1 : PCI BIOSがありません。 -2 :インタフェースモジュールが1枚も見つかりませんでした。 -3 :これ以上インタフェースモジュールがありません。 -9 :本関数はIntel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデ ル)以外では使用できません。 Interface Corporation - 44 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■構造体説明 PCI_CONFIG構造体 【機能】 PCIコンフィギュレーションレジスタの値を格納します。 【書式】 typedef struct _PCI_CONFIG { unsigned short VendorID; unsigned short DeviceID; unsigned short Command; unsigned short Status; unsigned char RevisionID; unsigned char ProgIf; unsigned char SubClass; unsigned char BaseClass; unsigned char CacheLineSize; unsigned char LatencyTimer; unsigned char HeaderType; unsigned char BIST; unsigned long BaseAddresses[6]; unsigned long CIS; unsigned short SubVendorID; unsigned short SubSystemID; unsigned long ROMBaseAddress; unsigned char CapabilitiesPtr; unsigned char Reserved1[3]; unsigned long Reserved2[1]; unsigned char InterruptLine; unsigned char InterruptPin; unsigned char MinimumGrant; unsigned char MaximumLatency; unsigned char DeviceSpecific[192]; } PCI_CONFIG, *PPCI_CONFIG; /* 00: Vendor ID /* 02: Device ID /* 04: Command /* 06: Status /* 08: Revision /* 09: ProgIf /* 0A: Sub Class /* 0B: Base /* 0C: Cache Line /* 0D: Latency /* 0E: Header /* 0F: BIST /* 10: Base Address /* 28: CIS Pointer /* 2C: Subsystem Vendor ID /* 2E: Subsystem ID /* 30: ROM Base Address /* 34: Capabilities Pointer /* 35: Reserved /* 38: Reserved /* 3C: INT Line /* 3D: INT Pin /* 3E: MIN_GNT /* 3F: MAX_LAT /* 40: */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ */ 【パラメータ】 ここでは、主なパラメータのみを説明します。 BaseAddresses[6] BaseAddress[0]∼BaseAddress[5]を格納する変数です。 InterruptLine 割り込み番号を格納する変数です。 RevisionID Revisionを格納する変数です。 他のパラメータについては、PCI仕様書をご覧ください。 - 45 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■リソース情報取得関数使用例 リソース情報取得関数を使用したサンプルプログラムで使用例の説明をします。 下記の処理を実行することで、PCIデバイスのI/Oポート, メモリ, 割り込み等のリソースを取得で きます。 【プログラム例(PCI-3161)】 01 /* PCI-3161のリソース情報を取得し、表示するプログラム例です。 02 #include <stdio.h> */ /* 総合ライブラリヘッダファイル */ /* ベースアドレスを格納する配列 */ 05 unsigned short ioadr; /* I/Oポートアドレスを格納する変数 */ 06 unsigned long memadr; /* メモリアドレスを格納する変数 */ 07 char /* 割り込み番号を格納する変数 */ 03 #include "IFCM.h" 04 unsigned long irq; bar[6]; 08 void main(void) 09 { 10 PciGetConfigReg ( 1, 0x1147, 3161, bar, &irq );/* リソース情報の取得 11 ioadr = (unsigned short)bar[0] & 0xfffc; 12 memadr = (unsigned short)bar[1] & 0xfffffff0L; /* メモリアドレス抽出 13 printf ( "I/O PORT ADDRESS:%4x¥n" , ioadr ); /* I/Oポートアドレス表示 */ 14 printf ( "MEMORY ADDRESS:%8x¥n" , memadr ); /* メモリアドレス表示 */ /* 割り込み番号表示 */ 15 printf ( "INTERRUPT NUMBER:%d¥n" , irq ); 16 } */ /* I/Oポートアドレス抽出 */ */ 【解説】 ハードウェアリソース情報を取得したいインタフェースモジュールを、インデックス番号, ベン ダID, デバイスIDの3つでPciGetConfigReg関数に特定させます。 PciGetConfigReg関数はbarにI/Oポートかメモリアドレスを格納し、irqには割り込み番号が格納し ます。抽出したioadrにI/Oアクセス、memadrにメモリアクセスすれば、ハードウェアを直接制御す ることができます。 ! 注意 リンク時は総合ライブラリを一緒にリンクしてください。 Interface Corporation - 46 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.3 I/Oアクセス・メモリアクセス 取得したI/OポートにI/Oアクセス、メモリアドレスにメモリアクセスを行い、インタフェースモ ジュールを制御します。 4GB空間へのメモリアクセスに対しても、開発らくらくパッケージの総合ライブラリを使用する ことで、簡単にアクセスすることができます。 4.3.1 I/Oポートへのアクセス ■I/OマップドI/O方式 専用のI/Oアドレス空間にI/Oポートアドレスを割り当てる方式です。メモリ空間が狭いCPU等で はメモリ空間を広く確保することができます。 I/OポートへのアクセスはI/Oアクセス命令(入力命令, 出力命令)を用います。 ■メモリマップドI/O方式 専用I/Oアドレス空間ではなく、データメモリと同じメモリ空間にI/Oポートアドレスを割り当て る方式です。 通常のメモリアクセスと同じように、メモリ上に割り当てたI/Oポートへアクセスできます。アク セスにはメモリアクセス命令(リード命令, ライト命令)を使用します。 DOSからI/OマップドI/OのI/Oポートアドレスにアクセスする場合、I/Oポートアドレスにinp, outp コマンドで入出力命令を行い、制御することができます。 I/OマップドI/O 0x0000 0x0001 メモリマップドI/O 0x00 0x0000 0x0001 I/O空間 メモリ空間 メモリ空間 0xFF 0xFEFF 0xFF00 I/O空間 0xFFFE 0xFFFF アドレス空間 0xFFFF アドレス空間 I/O 空間もメモリ空間も、メモリアクセス命令でアクセス I/Oもメモリも、メモリアクセス命令でアクセス ・I/O空間にはI/O命令でアクセス ・メモリ空間にはメモリアクセス命令でアクセス I/OマップドI/O方式とメモリマップドI/O方式の違い メモリアクセスを行う場合、取得したリソースにそのままinp, outpコマンドを使用してアクセスす ることはできません。 メモリアクセスを行うには、『48ページ 4.3.2 メモリアクセス(1MB以上のメモリ空間アクセ ス)』を参照してください。 - 47 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.3.2 メモリアクセス(1MB以上のメモリ空間アクセス) 通常、DOSでは1MB以上のメモリ空間にアクセスすることができません。アクセスするためには 専用のドライバが必要となります。 DOS System開発らくらくパッケージに、メモリアクセスユーティリティ FBIMEM4G.COMを収録しています。FBIMEM4G.COMを実行することで、4GBまでのメモリ空間 にアクセスできるようになり、総合ライブラリを使用して、4GBまでのメモリ空間に対してバイ ト・ワード・ダブルワード単位でのリード/ライトが行えます。 メモリアクセスユーティリティは、PROTECTモードでi386のグローバルディスクリプタテーブル を書き換え、REALモードに戻ってくる、ということを行っています。 このため32ビットレジスタ(EBX, ESI, EDI)を使って、4GBメモリ空間のアドレスを指定できるよ うになります。 総合ライブラリは、この32ビットレジスタを使ってメモリの読み書きをしています。 4.3.3 DOS用4GBメモリアクセスユーティリティ 4GBメモリアクセスユーティリティの概要, 使用方法を説明します。 製品名 4GBメモリアクセスユーティリティ 実行ファイル名 FBIMEM4G.COM 収録ディレクトリ ¥IFCM¥DRIVERS ■概要 DOSのREALモードでは、CPUのセグメントリミットが64KBに制限されるため、32ビットレジス タ(EBX, ESI, EDI)による1MBを超えるメモリ空間へのアクセスは、例外が発生します。 DOS System開発らくらくパッケージに収録されている、FBIMEM4G.COMの実行に より、1MBを超えるメモリ空間へのアクセスが有効となります。 FBIMEM4G.COMはメモリ常駐タイプです。コンベンショナルメモリを約2KB使用します。 ! 注意 CPUモードが仮想86モードの時は4GB空間にアクセスできません。 CPUのGDTを変更するアプリケーションは動作しません。 FBIMEM4G.COMを実行していない状態で、4GBの領域にアクセスするとコントローラがハン グアップするのでご注意ください。 EMM386を組み込んだ環境では動作しません。 Interface Corporation - 48 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.3.4 1MB以上のメモリ空間へのアクセス FBIMEM4G.COMの実行により、4GBメモリ空間へのメモリアクセスができます。 DOS System開発らくらくパッケージの総合ライブラリを使用することで、メモリア クセスを行います。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 ■ライブラリ関数一覧 No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 関数名 UioPeekByte UioPeekWord UioPeekDword UioPokeByte UioPokeWord UioPokeDword UioWriteBlock UioReadBlock UioFillByte UioFillWord UioFillDword UioEnableCache UioDisableCache UioMemCopy UioMemAreaInit UioMemAlloc UioMemFree UioMemContArea 機 能 指定したメモリから1バイト(8ビット)データを読み込みます。 指定したメモリから1ワード(16ビット)データを読み込みます。 指定したメモリから1ダブルワード(32ビット)データを読み込みます。 指定したメモリに、1バイト(8ビット)データを書き込みます。 指定したメモリに、1ワード(16ビット)データを書き込みます。 指定したメモリに、1ダブルワード(32ビット)データを書き込みます。 指定したメモリに、ブロックデータを書き込みます。 指定したメモリからブロックデータを読み込みます。 指定したメモリにバイトデータを指定回数分、書き込みます。 指定したメモリにワードデータを指定回数分、書き込みます。 指定したメモリにダブルワードデータを指定回数分、書き込みます。 外部メモリの指定した領域のメモリキャッシュを有効にします。 メモリ領域へのキャッシュを無効にします。 指定したメモリ領域から指定サイズ分データをコピーします。 連続メモリ領域確保のための初期化動作を行います。 メモリ領域の確保を行います。 確保しているメモリ領域の開放を行います。 現在確保できる最大連続メモリ領域のサイズを取得します。 - 49 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■ライブラリ関数個別説明 1. UioPeekByte 【機能】 指定したメモリから1バイト(8ビット)データを読み込みます。 【書式】 #include "IFCM.h" unsigned char IFCDECL far UioPeekByte ( unsigned long _address ); 【パラメータ】 _address データを読み込むメモリのアドレスです。 【戻り値】 処理が正常に終了すると読み込まれたデータの値を返します。 【記述例】 メモリアドレス00400000hのデータをバイト単位で読み込みます。 ReadData = UioPeekByte(0x00400000L); 2. UioPeekWord 【機能】 指定したメモリから、1ワード(16ビット)データを読み込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioPeekWord ( unsigned long _address ); 【パラメータ】 _address データを読み込むメモリのアドレスです。 【戻り値】 処理が正常に終了すると読み込まれたデータの値を返します。 【記述例】 メモリアドレス00400000hのデータをワード単位で読み込みます。 ReadData = UioPeekWord(0x00400000L); Interface Corporation - 50 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. UioPeekDword 【機能】 指定したメモリから、1ダブルワード(32ビット)データを読み込みます。 【書式】 #include "IFCM.h" unsigned long IFCDECL far UioPeekDword ( unsigned long _address ); 【パラメータ】 _address データを読み込むメモリのアドレスです。 【戻り値】 処理が正常に終了すると読み込まれたデータの値を返します。 【記述例】 メモリアドレス00400000hのデータをダブルワード単位で読み込みます。 ReadData = UioPeekDword(0x00400000L); 4. UioPokeByte 【機能】 指定したメモリに、1バイト(8ビット)データを書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioPokeByte ( unsigned long _address, unsigned char _data ); 【パラメータ】 _address _data データを書き込むメモリのアドレスです。 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hへバイトデータ(FFh)を書き込みます。 UioPokeByte(0x00400000L, 0xFF); - 51 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 5. UioPokeWord 【機能】 指定したメモリに、1ワード(16ビット)データを書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioPokeWord ( unsigned long _address, unsigned short _data ); 【パラメータ】 _address _data データを書き込むメモリのアドレスです。 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hへワードデータ(FFFFh)を書き込みます。 UioPokeWord(0x00400000L, 0xFFFF); 6. UioPokeDword 【機能】 指定したメモリに、1ダブルワード(32ビット)データを書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioPokeDword ( unsigned long _address, unsigned long _data ); 【パラメータ】 _address _data データを書き込むメモリのアドレスです。 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hへダブルワードデータ(FFFFFFFFh)を書き込みます。 UioPokeDword(0x00400000L, 0xFFFFFFFFL); Interface Corporation - 52 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7. UioWriteBlock 【機能】 指定したメモリにブロックデータを書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioWriteBlock ( unsigned long _address, void far *_data, unsigned long _length ); 【パラメータ】 _address データを書き込むメモリ領域の先頭アドレスです。 *_data 書き込むデータを格納する変数へのfarポインタです。 _length 書き込むサイズ(バイト単位)です。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hへ配列データを16バイト書き込みます。 UioWriteBlock(0x00400000L, *data, 0x10); 8. UioReadBlock 【機能】 指定したメモリにブロックデータを読み込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioReadBlock ( unsigned long _address, void far *_data, unsigned long _length ); 【パラメータ】 _address データを読み込むメモリ領域の先頭アドレスです。 *_data 読み込むデータを格納する変数へのfarポインタです。 _length 読み込むサイズ(バイト単位)です。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから配列へ16バイト読み込みます。 UioReadBlock(0x00400000L, *data, 0x10); - 53 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 9. UioFillByte 【機能】 指定したメモリにバイトデータを指定回数分、書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioFillByte ( unsigned long _address, unsigned long _count, unsigned char _data ); 【パラメータ】 _address データ書き込みを開始するメモリ領域の先頭アドレスです。 _count 書き込みを行う回数です。 _data 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから16バイトデータ(FFh)を書き込みます。 UioFillByte(0x00400000L, 0x10, 0xFF); 10. UioFillWord 【機能】 指定したメモリにワードデータを指定回数分、書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioFillWord ( unsigned long _address, unsigned long _count, unsigned short _data ); 【パラメータ】 _address データ書き込みを開始するメモリ領域の先頭アドレスです。 _count 書き込みを行う回数です。 _data 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから8ワードデータ(FFFFh)を書き込みます。 UioFillWord(0x00400000L, 0x08, 0xFFFF); Interface Corporation - 54 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 11. UioFillDword 【機能】 指定したメモリにダブルワードデータを指定回数分、書き込みます。 【書式】 #include "IFCM.h" void IFCDECL far UioFillDword ( unsigned long _address, unsigned long _count, unsigned long _data ); 【パラメータ】 _address データ書き込みを開始するメモリ領域の先頭アドレスです。 _count 書き込みを行う回数です。 _data 書き込むデータです。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから4ダブルワードデータ(FFFFFFFFh)を書き込みます。 UioFillDword(0x00400000L, 0x04, 0xFFFFFFFFL); - 55 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 12. UioEnableCache 【機能】 外部メモリの指定した領域のメモリキャッシュを有効にします。 【書式】 #include "IFCM.h" void IFCDECL far UioEnableCache ( unsigned long _address, unsigned long _size ); 【パラメータ】 _address メモリキャッシュを有効にするメモリの先頭アドレスです。 _size メモリキャッシュを有効とするメモリサイズ(バイト)です。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから10000hバイト分のメモリキャッシュを有効にします。 UioEnableCache(0x00400000L, 0x00010000L); 【備考】 外部メモリ(メインメモリ以外)を指定してください。 キャッシュが有効にできるサイズ指定は、最小4096バイト(1000h)から実装メモリの最大有効 サイズまでです。また4096の倍数で指定する必要があります。(1000hのn倍で指定する。) 実行環境により使用できるメモリの最大有効サイズは異なります。 Interface Corporation - 56 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 13. UioDisableCache 【機能】 メモリ領域へのキャッシュを無効にします。 【書式】 #include "IFCM.h" void IFCDECL far UioDisableCache ( unsigned long _address, unsigned long _size ); 【パラメータ】 _address UioEnableCache関数で指定したメモリの先頭アドレスです。 _size UioEnableCache関数で指定したメモリサイズ(バイト)です。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから10000hバイト分のメモリキャッシュを無効にします。 UioDisableCache(0x00400000L, 0x00010000L); 【備考】 UioEnableCache関数でキャッシュを有効にしたアドレス, サイズを指定してください。 - 57 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 14. UioMemCopy 【機能】 指定したメモリ領域から指定サイズ分データをコピーします。 【書式】 #include "IFCM.h" void IFCDECL far UioMemCopy ( unsigned long _raddress, unsigned long _waddress, unsigned long _size ); 【パラメータ】 _raddress 読み込み先の先頭アドレスです。 _waddress 書き込み先の先頭アドレスです。 _size 転送するサイズ(バイト)です。 【戻り値】 戻り値はありません。 【記述例】 メモリアドレス00400000hから10000hバイト分のデータをメモリアドレス00100000hへ書き込み ます。 UioMemCopy(0x00400000L, 0x00100000L, 0x00010000L); Interface Corporation - 58 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 15. UioMemAreaInit 【機能】 連続メモリ領域確保のための初期化動作を行います。 【書式】 #include "IFCM.h" unsigned long IFCDECL far UioMemAreaInit ( void ); 【パラメータ】 パラメータはありません。 【戻り値】 処理が正常に終了すると確保できる最大のメモリサイズを返します。処理が異常終了すると0を 返します。 【記述例】 連続メモリ領域確保のための初期化動作を行います。 ret = UioMemAreaInit(); 【備考】 本APIを実行するには最低65MB以上のメモリ空き領域が必要です。本APIを実行し得られた最大 メモリサイズ+1MBまでをシステムの管理領域として使用します。 システム管理領域へ直接データを書き込んだ場合、本APIでのメモリの管理が正しく行われなく なります。 また、UioMemAreaInit関数を実行後、UioMemAlloc関数を実行してください。 ! 注意 DOS System起動時に表示されるバージョンがVer.1.50以下の場合、本関数は 弊社DOS専用ライブラリ(GPDシリーズ)とは併用できません。Ver.1.60以上の場合、この制限 はありません。 - 59 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 16. UioMemAlloc 【機能】 メモリ領域の確保を行います。 【書式】 #include "IFCM.h" unsigned long IFCDECL far UioMemAlloc ( unsigned long _MemSize ); 【パラメータ】 _MemSize 確保するメモリサイズ(64KB単位)です。 【戻り値】 処理が正常に終了すると割り当てられた登録ハンドル(メモリの上位アドレス)を返します。処理 が異常終了すると0を返します。 【記述例】 メモリ領域に10000hの連続領域を確保します。 handle = UioMemAlloc(0x10000L); メモリアクセスできる領域は、ハンドルからサイズ分引いたアドレスとなります。 MemAddress = (handle) – (0x10000L) 確保したメモリ領域にアクセスします。 UioPokeByte(MemAddress, 0x55); 【備考】 UioMemAreaInit関数を実行後、UioMemAlloc関数を実行してください。 確保できるメモリの最小単位は64KBです。 また64KB未満の値は切り捨てられます。(例:11000h → 10000h) 【注意】 FFFFFFFFh 0DDE0000h 0CDE0000h 確保した メモリ領域 1000000h 00000000h メモリから指定サイズ分(01000000h)メモリ確保する場合、UioMemAlloc(0x1000000)と指定します。 この時handleとして0DDE0000hが返った場合、確保した領域の先頭アドレスは、 handle(0DDE0000h) − サイズ(01000000h)で0CDE0000hとなり、0CDE0000hから01000000hサイズ のメモリ領域が確保されています。 Interface Corporation - 60 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 17. UioMemFree 【機能】 確保しているメモリ領域の開放を行います。 【書式】 #include "IFCM.h" int IFCDECL far UioMemFree ( unsigned long _handle ); 【パラメータ】 _handle 開放する領域の登録ハンドルです。 【戻り値】 処理が正常に終了すると0を返します。処理が異常終了すると-1を返します。 【記述例】 確保した連続領域を開放します。 handle = UioMemAlloc(0x10000L); ret = UioMemFree(handle); 【備考】 UioMemAlloc関数で取得した登録ハンドルを指定してください。 18. UioMemContArea 【機能】 現在確保できる最大連続メモリ領域のサイズを取得します。 【書式】 #include "IFCM.h" unsigned long IFCDECL far UioMemContArea ( void ); 【パラメータ】 パラメータはありません。 【戻り値】 処理が正常に終了すると現在確保できる最大連続領域サイズを返します。処理が異常終了する と0を返します。 【記述例】 確保できる連続領域サイズを取得します。 MemSize = UioMemContArea(); - 61 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■メモリアクセス関数使用例 メモリアクセス関数を使用したサンプルプログラムで使用例の説明をします。 サンプルプログラムでは、メモリ領域に対してバイト・ワード・ダブルワードでそれぞれ入出力を行 います。 01 /* 4GBメモリアクセス サンプルプログラムソース */ 02 #include<stdio.h> 03 #include"IFCM.h" /* 総合ライブラリヘッダファイル */ 04 int main(void) 05 { 06 unsigned char bReadData, bWriteData = 0x12; 07 unsigned int wReadData, wWriteData = 0x3456; 08 unsigned long dReadData, dWriteData = 0x98765432L; 09 UioPokeByte(0xE1800000L , bWriteData); /* バイト出力 */ 10 bReadData = UioPeekByte(0xE1800000L); /* バイト入力 */ 11 printf( "INPUT BYTE DATA: %02x ¥n", bReadData); /* バイトデータ表示 */ 12 UioPokeWord(0xE1800000L + 0x10 , wWriteData ); /* ワード出力 */ 13 wReadData = UioPeekWord(0xE1800000L + 0x10); /* ワード入力 */ 14 printf( "INPUT WORD DATA: %04x ¥n", wReadData); /* ワードデータ表示 */ 15 UioPokeDword(0xE1800000L + 0x20 , dWriteData ); /* ダブルワード出力 */ 16 dReadData = UioPeekDword(0xE1800000L + 0x20); 17 printf("INPUT DWORD DATA: %08lX ¥n",dReadData); /*ダブルワードデータ表示 */ 18 return(0); /* ダブルワード入力 */ 19 } ※ サンプル中のメモリアドレス(E1800000h)はご使用の環境に応じた適切な値(PciGetConfigReg関 数で取得したメモリアドレス等)に変更してください。 【解説】 UioPoke系関数でメモリライトを行い、UioPeek系関数でメモリリードを行うことができます。 ■EMM386使用時の制限事項 FBIMEM4G.COMは、EMM386を組み込んだ環境では使用できません。 FBIMEM4G.COMは、EMM386を組み込まずにご使用ください。 ■CPUのメモリキャッシュ機能を利用したメモリ間でのデータ高速転送 UioEnableCache関数を使用することで、指定したメモリ領域間でデータの高速転送が行えます (バースト転送機能)。分散処理コントローラやメモリンクインタフェースモジュール等、メモリを 搭載したモジュール上のメモリへの高速アクセスを行う場合に役立ちます。 Interface Corporation - 62 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■メモリキャッシュ関数使用時の制限事項 メモリをキャッシュする範囲は外部メモリ(メインメモリ以外)を指定してください。 キャッシュが有効にできるサイズ指定は最小4096バイト(1000h)から実装メモリの最大有効サイズ までです。また4096の倍数で指定する必要があります。(1000hのn倍で指定する。) 実装している外部メモリのサイズによりキャッシュできるメモリの最大有効サイズは異なります。 ■メモリキャッシュ機能使用時のサンプルプログラムコード1 01 /* 4GBメモリアクセス サンプルプログラムソース メモリキャッシュ機能使用時*/ 02 /* 外部メモリ間でのデータ転送 */ 03 #include <stdio.h> 04 #include "IFCM.h" /* 総合ライブラリヘッダファイル */ 05 void main() 06 { /* キャッシュを開始するメモリアドレス */ 07 unsigned long adr = 0xE1D00000L; 08 unsigned long cache_size = 0x200000L;/* メモリキャッシュサイズ */ 09 /* メモリキャッシュを有効にする(指定アドレス∼+2MBキャッシュ有効) */ 10 /* 引数はキャッシュを有効にするメモリの先頭アドレス、 */ 11 /* 有効にするサイズの順で指定します。 */ 12 UioEnableCache(adr , cache_size); 13 /* データ転送 指定アドレスから+1MBの領域を指定アドレス+1MBから+1MBへ転送する */ 14 /* 引数は転送元の先頭アドレス, 転送先の先頭アドレス, 転送サイズの順で指定 15 */ UioMemCopy(adr, adr+ cache_size / 2, cache_size / 2); 16 /* メモリキャッシュを無効にする */ 17 /* 引数はキャッシュを有効にした範囲と同じ箇所を指定します。*/ 18 UioDisableCache(adr, cache_size); 19 } ※ サンプル中のメモリアドレスはご使用の環境に応じた適切な値に変更してください。 【解説】 4行目 メモリアクセスライブラリのヘッダファイルを挿入します。 7行目 キャッシュを開始するメモリアドレスを設定します。アドレスは使用するコントローラ により異なります。 8行目 キャッシュサイズを指定します。 12行目 指定範囲のメモリキャッシュを有効にします。 15行目 メモリ間でデータ転送を行います。 18行目 メモリキャッシュを解除します。 - 63 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■メモリキャッシュ機能使用時のサンプルプログラムコード2 01 /* 4GBメモリアクセス サンプルプログラムソースメモリキャッシュ機能使用時 */ 02 /* メインメモリ, 外部メモリ間でのデータ転送 */ 03 #include <stdio.h> 04 #include "IFCM.h" /*メモリアクセス関数ヘッダファイル */ 05 void main() 06 { 07 unsigned long adr = 0xE1D00000L; /* キャッシュを開始するメモリアドレス */ 08 unsigned long mainadr = 0x1000000L; /* メインメモリのアドレス */ 09 unsigned long cache_size = 0x100000L; /* メモリキャッシュサイズ */ 10 /*メモリキャッシュを有効にする(指定アドレス∼+1MBキャッシュ有効) */ 11 /* 引数はキャッシュを有効にするメモリの先頭アドレス */ 12 /* 有効にするサイズの順で指定します。 */ 13 UioEnableCache(adr , cache_size); 14 /* 指定したメインメモリのアドレスから1MBのデータを指定した外部メモリへ転送 */ 15 /* 引数はメインメモリのアドレス, 外部メモリのアドレス, 転送サイズの順で指定 */ 16 UioMemCopy(mainadr, adr, cache_size); 17 /* メモリキャッシュを無効にする */ 18 /* 引数はキャッシュを有効にした範囲と同じ箇所を指定します。 */ 19 UioDisableCache(adr, cache_size); 20 } ※ サンプル中のメモリアドレスはご使用の環境に応じた適切な値に変更してください。 【解説】 7行目 キャッシュを開始するメモリアドレスを設定します。アドレスは使用するコントローラ により異なります。 8行目 データ元のメインメモリアドレスを指定します。アドレスは使用するコントローラによ り異なります。 9行目 キャッシュサイズを指定します。 13行目 指定範囲のメモリキャッシュを有効にします。 16行目 メインメモリ, 外部メモリ間でデータ転送を行います。 19行目 メモリキャッシュを解除します。 ※ メインメモリはシステムがすでにキャッシュしているので、UioEnableCache関数でキャッシュを 有効にする必要はありません。また、システム領域や、インタフェースモジュールの占有して いる領域をキャッシュしてしまうと、システムがハングアップしたり、インタフェースモジュー ルへアクセスできなくなるため、それらの領域へのキャッシュは行わないようにしてください。 Interface Corporation - 64 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.4 割り込み設定・制御 4.4.1 割り込み処理とは 割り込みとは、「実行している処理を一時中断して、別の処理を行うこと」です。 下図の処理系等を使って説明をすると、実行中のメイン処理中に割り込みが発生した場合、コン トローラはメイン処理を一時中断し、割り込み処理を優先的に処理し、完了後にメイン処理に復 帰するという流れになります。 メイン処理 1 割り込み発生 メイン処理 割り込み処理 メイン処理 割り込み処理フロー ■IRQ が共有される A 共有 B ■自分のインタフェースモジュールへの 割り込みか判断する必要あり! IRQ2 IRQ3 IRQ4 ①割り込みが発生! ②自分のインタフェースモジュール からの割り込み? Yes! ③割り込み処理実行! No! ③別の割り込み処理にチェイン インタフェースモジュールは、PCIバスにつながっている他のデバイスと割り込みを共有します。 どのデバイスと共有するかは、BIOS等によって決められます。FBIPCIDG.EXEでInterrupt Pin(割り 込みピン番号)を確認することでIRQの状況を見ることができます。PCIデバイスは、IRQの空きが なくてもどれかのPCIデバイスと共有すれば良いので、IRQが不足することはありません。 IRQを共有することでIRQが不足するということは避けられますが、その副作用として、発生した 割り込みがどのデバイスから発生したものかを判断するという処理が必要になります。 割り込みの発生したデバイスを判断する方法として、PCIデバイスが持つ、「割り込み要因ステー タス」を利用します。割り込み発生時に割り込み要因ステータスを確認し、どのデバイスから割 り込みが発生しているか順に確認していきます。最初のデバイスで割り込みを確認できなければ 次のデバイスの割り込み処理へ、そこでも確認できなければまた次のデバイスへ、と割り込み処 理を移行させていきます。(この処理を割り込み処理のチェインまたはチェインニングといいま す。) - 65 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.4.2 割り込み処理の流れ 割り込み処理を行うには、以下の処理が必要になります。 DOS System開発らくらく パッケージの総合ライブラリを使用することで、以下の作業は簡単に処理できます。 1. 割り込みベクタの書き換え 「割り込みベクタ」というのは、割り込みが発生した時に実行する処理の飛び先を格納しておく テーブルのことです。 1. 割り込みベクタに書いてある、元のアドレスを読み込み、保管しておく。 2. 割り込み発生時に実行したい処理の先頭アドレスを、割り込みベクタに書き込む。 2. 割り込みマスクを開ける 「割り込みマスク」は、割り込み番号ごとにあり、その割り込みを許可するかどうかを管理して います。 1. 割り込みマスクレジスタ(IMR)の今の設定を読み出す。 2. 目的の割り込みレベル(IRQn)のビットを0にする。 3. 割り込みマスクレジスタ(IMR)に書き込む。 ここまでで、割り込みを使う準備は完了です。 3. 割り込み発生 割り込みが発生すると、「割り込みベクタ」に書いてあるアドレスに処理が移ります。そして、 割り込み処理の最後では、EOI(End Of Interrupt)を発行して、割り込みコントローラに処理が終わ ったことを知らせます。 4.4.3 割り込み処理 DOS System開発らくらくパッケージの総合ライブラリを使用することで、割り込み 処理を簡単に行うことができます。 ■概要 総合ライブラリを使用することで、アプリケーションから、割り込みを使用するための割り込み 処理関数の登録, 削除を簡単に行うことができます。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 総合ライブラリでは、まずPciSetInterrupt関数で割り込み処理の登録ができます。その際、割り込 みベクタの設定や、割り込みコントローラへの設定は不要です。この関数では、最高で16個の割 り込み処理を登録できます。次にPciKillInterrupt関数で、登録した割り込みの解除ができます。こ の時も割り込みベクタや割り込みコントローラへの設定は不要です。 また、実際に割り込みが発生した場合に、EOIを発行したり、自インタフェースモジュールへの割 り込みでない時に、別のデバイスの処理にチェインすることも代行しますので、その処理を別途 作成する必要はありません。 Interface Corporation - 66 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■割り込みライブラリ関数一覧 No. 1 2 3 関数名 PciSetInterrupt PciKillInterrupt 機 能 割り込み処理関数を登録します。 割り込み処理関数を削除します。 ユーザ割り込み PciSetInterrupt関数にて登録するお客様が定義する割り込み処理関数で 処理関数 す。本ユーザ割り込み処理関数は、インタフェースモジュールから該 当IRQの割り込みが発生した時にライブラリ側から呼び出されます。 ■割り込みライブラリ関数個別説明 1. PciSetInterrupt 【機能】 割り込み処理関数を登録します。 【書式】 #include "IFCM.h" int IFCDECL far PciSetInterrupt ( unsigned char Irq, int far (far *Func)(int, short, long), short user1, long user2 ); 【パラメータ】 Irq IRQ番号を設定してください。 (far *Func) (int, short, long) 呼び出されるユーザ割り込み処理関数へのfarポインタを指定します。 ユーザ割り込み処理関数へは、ハンドル, ユーザ変数(short型とlong型)が 渡されます。ユーザ割り込み処理関数を参照してください。 user1 ユーザ割り込み処理関数に渡される、ユーザで自由に設定できるshort型 の変数です。 user2 ユーザ割り込み処理関数に渡される、 ユーザで自由に設定できるlong型の 変数です。 【戻り値】 処理が正常に終了すると、ハンドルを返します。 このハンドルは、ユーザ割り込み処理関数を一意に認識するための0∼15の範囲の値です。 正常に処理が行えなかった場合、-1を返します。 Intel(R) Atom(TM) プロセッサ搭載 ない場合、-9を返します。 DOS System(日本語環境モデル)で実行してい - 67 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 2. PciKillInterrupt 【機能】 割り込み処理関数を削除します。 【書式】 #include "IFCM.h" int IFCDECL far PciKillInterrupt ( short handle ); 【パラメータ】 handle PciSetInterrupt関数で取得したハンドルを指定してください。 【戻り値】 処理が正常に終了すると、0の値を返します。 正常に処理が行えなかった場合、-1の値を返します。 Intel(R) Atom(TM) プロセッサ搭載 ない場合、-9を返します。 Interface Corporation DOS System(日本語環境モデル)で実行してい - 68 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. ユーザ割り込み処理関数 【機能】 PciSetInterrupt関数にて登録するお客様が定義する割り込み処理関数です。 本ユーザ割り込み処理関数は、インタフェースモジュールから該当IRQの割り込みが発生し た時にライブラリ側から呼び出されます。 【書式】 #include "IFCM.h" int IFCDECL far user_func ( int handle, short user1, long user2 ); 【パラメータ】 handle ユーザ割り込み処理関数を一意に識別するハンドルです。PciSetInterrupt 関数にて返されるハンドルと同一値です。このハンドルの値をチェックす ることにより、1つのユーザ割り込み処理関数を複数のIRQにて共有する時 にどのIRQから発生した割り込みであるかを判定することができます。 user1 PciSetInterrupt関数のUser1パラメータに指定された値です。 user2 PciSetInterrupt関数のUser2パラメータに指定された値です。 【戻り値】 ユーザ割り込み処理関数にて、割り込み処理を実行した場合には1を返すようにしてください。 該当インタフェースモジュール以外の他デバイスからの割り込みであった場合には0を返す ようにしてください。 【記述例】 int far user_func(int handle, short user1, long user2){ unsigned char stat; unsigned short port; port = user1; stat = inp(port + 0x02); if (stat & 0x10) { timer++; return 1; } return 0; /*割り込みステータスの確認 */ /*該当インタフェースモジュールからの割り込み確認*/ /*割り込み処理の正常終了1をリターン */ /*他のデバイスのため、0をリターン */ } 【備考】 ・Microsoft系コンパイラの場合には、/Gs(スタックチェック禁止)オプションを付加してコンパ イルしてください。 ・ユーザ割り込み処理関数内では、必ずインタフェースモジュールの割り込みステータスの確 認を行い、該当インタフェースモジュールからの割り込みであるか否かのチェックを行うよ うにしてください。その結果、該当インタフェースモジュールからの割り込みであれば、必 要な割り込み処理を実行後、1を返すようにします。 - 69 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.4.4 割り込み処理関数使用例 割り込み処理関数を使用したサンプルプログラムで使用例の説明をします。 【プログラム例(PCI-6103)】 01 /* PCI-6103で割り込み処理を行う例です。 */ 02 #include <stdio.h> 03 #include <stdlib.h> 04 #include <conio.h> 05 #include <dos.h> 06 #include "IFCM.h" /* 総合ライブラリヘッダファイル */ 07 unsigned short timer; 08 /* ユーザ割り込み処理関数 */ 09 int far user_func(int handle, short user1, long user2) 10 { 11 unsigned char stat; 12 unsigned short port; 13 port = user1; 14 15 stat = inp(port + 0x02); if (stat & 0x10) { 16 timer++; 17 18 return 1; /* 割り込みステータスの確認 */ /* 割り込み処理の正常終了 */ /* 他のデバイスによる割り込み */ } 19 return 0; 20 } 21 void main(void) 22{ 23 unsigned long bar[6]; 24 unsigned char irq; 25 unsigned short handle, port; 26 int 27 r = PciGetConfigReg(1, 0x1147, 6103, bar, &irq); r; → 次ページへ続きます。 Interface Corporation - 70 - /* リソースの取得 */ Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 28 if (!r) { 29 port = bar[0] & 0xfffc; 30 printf("BAR0 = %04XH ¥n", port); 31 printf("IRQ 32 33 /* 割り込み処理の登録 */ handle = PciSetInterrupt(irq, user_func, port, 0L); 34 if (handle != 0xffff) { = %d ¥n", irq); /* インターバルタイマの設定 */ 35 36 outp(port + 0x04, 0x00); outp(port + 0x05, 0x00); 37 outp(port + 0x06, 0x01); 38 outp(port + 0x03, 0x10); /* 割り込みマスクのオープン */ 39 outp(port + 0x07, 0x02); /* インターバルタイマの開始 */ 40 while (1) { 41 printf("TIMER = %04XH¥n", timer); 42 if (kbhit()) { 43 getch(); 44 printf("¥n"); 45 break; 46 } 47 } 48 outp(port + 0x07, 0x00); /* インターバルタイマの停止*/ 49 outp(port + 0x03, 0x00); /* 割り込みマスクのクローズ*/ 50 PciKillInterrupt(handle); /* 割り込み処理の削除 51 52 */ } } 53 } - 71 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 割り込み処理の登録の例 最初にリソース取得用のPciGetConfigReg関数を使用し、ハードウェアリソース情報(I/Oポートア ドレスと割り込み番号)を取得します。 次に割り込み処理の登録を行います。パラメータには、取得した割り込み番号, 割り込み処理へ のポインタ, I/Oポートアドレスを指定しています。 最後の2つのパラメータは、デジタルの引数で、割り込み処理に渡したい値を書きます。この例で は、I/Oポートアドレスを引き渡しています。 次の処理ではインタフェースモジュールの割り込みマスクをオープンしています。 インタフェースモジュールには、いくつかの割り込み要因があり、どの要因を有効にするかを設 定するマスクレジスタがあります。この操作はインタフェースモジュールによって違いますので、 I/O公開資料でご確認ください。 ここまでの処理で割り込みの設定は完了です。割り込みが発生すれば、指定した割り込み処理が 実行されます。 プログラムの最後で行う割り込み解除の処理です。インタフェースモジュールの割り込みマスク をクローズして、割り込み処理の解除をします。 割り込み発生時の処理の例 user_funcという関数名は、割り込み処理登録関数(PciSetInterrupt関数)で指定した名前です。 第1パラメータは、ユーザ割り込み処理関数を一意に識別するハンドルです。PciSetInterrupt関数に て返されるハンドルと同一値です。このハンドルの値をチェックすることにより、1つのユーザ割 り込み処理関数を複数のIRQにて共有する時に、どのIRQから発生した割り込みであるかを判定す ることができます。 第2パラメータは、I/Oポートアドレスが引き渡されてきます。 stat = inp(adr + 0x02)という処理で、インタフェースモジュールに対し割り込みが発生しているか確 認をしています。この操作はインタフェースモジュールによって違いますので、I/O公開資料でご 確認ください。 この処理は、割り込みが共有されている場合、他のデバイスからの割り込みである可能性がある ため、自インタフェースモジュールからの割り込みを判断するために行います。インタフェース モジュールには、割り込みを発生したかどうかを示すステータスがあります。このステータスを 必ず確認してください。 自インタフェースモジュールへの割り込みであれば、割り込み発生時の処理を行い、最後に “return 1”で処理を終わります。 こうすることで、総合ライブラリは、割り込み処理が完了したことを認識し、EOIを発行します。 自インタフェースモジュールへの割り込みでなかった場合は、“return 0”で処理を終わります。 この場合、総合ライブラリは、割り込みが完了していないことを認識し、別のデバイスの割り込 み処理にチェインします。 Interface Corporation - 72 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.4.5 割り込み信号の伝播遅延 光Express拡張機能でバス拡張した場合等、割り込み信号の伝播に遅延が発生する場合があります。 割り込み信号伝播遅延対策サポートドライバを常駐させることで、割り込み信号の伝播に遅延が 発生する環境であっても、遅延を意識することなく、ソフトウェアを動作させることができます。 製品名 割り込み信号伝播遅延対策サポートドライバ 実行ファイル名 ISRFIX.EXE 収録ディレクトリ ¥IFCM¥DRIVERS ■概要 DOSに不正な割り込みとしてマスクされた割り込み番号をアンマスクする常駐ドライバです。 ■使用方法 割り込み信号伝播遅延対策サポートドライバを使用する場合は、CONFIG.SYSから組み込んでく ださい(出荷時状態で組み込まれていません)。 CONFIG.SYS設定例: DEVICE=C:¥IFCM¥DRIVERS¥ISRFIX.EXE - 73 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.5 PCI BIOSドライバ お知らせ 本ドライバは、Intel(R) Atom(TM) プロセッサ N450搭載 長期安心FAコントローラと 車載Classembly Devices(R) Atom D525搭載モデルにのみ同梱されています。 Intel(R) Atom(TM) プロセッサ N450およびIntel(R) Atom(TM) プロセッサ D525でPCIデバイスへ アクセスを行うと、応答速度が著しく低下します。PCI BIOSドライバを常駐させることで、応答 速度を意識することなく、ソフトウェアを動作させることができます。 製品名 PCI BIOSドライバ 実行ファイル名 IFPCIBDR.SYS 収録ディレクトリ ¥IFCM¥DRIVERS ■概要 Intel(R) Atom(TM) プロセッサ N450搭載 長期安心FAコントローラと車載Classembly Devices(R) Atom D525搭載モデルでDOSを使用する際に、PCIデバイスへ高速にアクセスできるようにするド ライバです。 ■使用方法 PCI BIOSドライバを使用する場合は、CONFIG.SYSから組み込んでください。(出荷時状態で組み 込まれています。) CONFIG.SYS設定例: DEVICE=C:¥IFCM¥DRIVERS¥IFPCIBDR.SYS ! 注意 DEVICEHIGHコマンドで組み込んでご使用頂くことはできません。必ずDEVICEコマンドで組 み込んでご使用ください。 Interface Corporation - 74 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.6 インタフェースモジュール使用例 インタフェースモジュールを直接制御するために以下の処理について個別に説明します。 1) ハードウェアのリソース(I/Oポートまたはメモリ, 割り込み番号)取得 2) I/Oポートまたはメモリへのアクセス 3) 割り込みの制御 本項では弊社製インタフェースモジュールを例に、一連の処理をご紹介します。 使用インタフェースモジュール型式 CTP-3170 CPZ-360112 サンプルプログラムの制御内容 総合ライブラリ I/Oポート入出力 メモリアクセス IFCMxx.LIB 割り込み 4.6.1 I/Oポート入出力制御 アナログ入力インタフェースモジュールCTP-3170を使用した、I/OマップドI/OのI/Oポート入出力 制御の例です。 サンプルプログラムの内容 CTP-3170のハードウェアリソース情報を取得し、I/Oポートアクセスを行います。 CTP-3170のレジスタにアクセスし、任意の値をライトし、同じレジスタをリードして、値が書き 込めているかどうか、リードした結果を表示して確認します。 - 75 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド サンプルプログラムソース 01 #include <stdio.h> 02 #include <conio.h> /* 総合ライブラリヘッダファイル */ 03 #include "IFCM.h" 04 void main (void) 05 { 06 unsigned long bar[6]; /* ベースアドレスを格納する配列 07 unsigned short adr; /* I/Oポートアドレスを格納する変数 */ 08 int dat; /* リードした値を格納する変数 09 char irq; /* 割り込み番号を格納する変数*/ 10 PciGetConfigReg(1, 0x1147, 3170, bar, &irq); /* リソース取得 11 adr = (unsigned short) bar[0] & 0xfffc; /* I/Oポートアドレス抽出 */ 12 outp(adr + 0x16 , 0x55); /* adr + 0x0cに0x55をライトする */ 13 dat = inp(adr + 0x16); /* adr + 0x0cの値をリードする 14 /* 取得したデータの表示 */ 15 printf("I/O PORT ADDRESS : %04xh¥n", adr); /* I/Oポートアドレスの表示 16 printf("INTERRUPT NUMBER : %xh¥n", irq); /* 割り込み番号の表示 */ 17 printf("WRITE + adr 16h : 55h¥n"); /* ライトした値の表示 */ 18 printf("READ + adr 16h : %xh¥n", dat); /* リードした値の表示 */ 19 return; 20 } Interface Corporation - 76 - */ */ */ */ */ Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.6.2 メモリアクセス制御 アナログ入出力インタフェースモジュールCPZ-360112を使用した、メモリマップドI/OのI/Oポー ト入出力制御の例です。 CPZ-360112はメモリマップドI/O方式なので、I/Oアクセスにはメモリアクセス関数を使用します。 サンプルプログラムの内容 CPZ-360112のハードウェアリソース情報を取得し、I/Oポートアクセスを行います。 CPZ-360112のレジスタにアクセスし、任意の値をライトし、同じレジスタをリードして、値が書 き込めているかどうか、リードした結果を表示して確認します。 アクセスは、バイトアクセス, ワードアクセス, ダブルワードアクセスを行います。 サンプルプログラムソース 01 #include <stdio.h> 02 #include <stdio.h> 03 #include <stdlib.h> /* 総合ライブラリヘッダファイル */ 04 #include "IFCM.h" 05 void main (void) 06 { 07 unsigned long bar[6]; /* ベースアドレスを格納する配列 */ 08 unsigned long adr; /* I/Oポートアドレスを格納する変数 */ 09 char irq; /* 割り込み番号を格納する変数 */ 10 unsigned char bReadData; /* バイトアクセスメモリリード用変数 */ 11 unsigned int wReadData; /* ワードアクセスメモリリード用変数 */ 12 unsigned long dwReadData; /* ダブルワードアクセスメモリリード用変数*/ 13 int ret = 0; 14 ret = PciGetConfigReg(1, 0x1147, 3601, bar, &irq); 15 adr = bar[0] & 0xfffffff0L; /* I/Oポートアドレス抽出 16 printf("I/O PORT ADDRESS: %08lxh¥n", adr); /* I/Oポートアドレスの表示 */ 17 system("fbimem4g.com"); /* 関数の戻り値を格納する変数 */ /*リソース取得 */ */ /* 4GBメモリアクセスユーティリティ */ → 次ページへ続きます。 - 77 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 18 if(ret == 0){ /* バイトアクセス */ 19 20 UioPokeByte(adr + 0x0b , 0x01); /* バイト出力 */ 21 bReadData = UioPeekByte(adr + 0x0b); /* バイト入力 */ /* ワードアクセス */ 22 23 UioPokeWord(adr + 0x08 , 0x0101); /* ワード出力 */ 24 wReadData = UioPeekWord(adr + 0x08); /* ワード入力 */ /* ダブルワードアクセス */ 25 26 UioPokeDword(adr + 0x34 , 0x01010101L); /* ダブルワード出力 */ 27 dwReadData = UioPeekDword(adr + 0x34); /* ダブルワード入力 */ /* リードデータの表示 */ 28 29 printf("BYTE DATA : %02Xh ¥n", bReadData); /* バイト入力データ表示 */ 30 printf("WORD DATA : %04Xh ¥n", wReadData); /* ワード入力データ表示 */ 31 32 printf("DWORD DATA: %08lXh ¥n", dwReadData);/* ダブルワード入力データ表示 */ }else{ 33 34 printf("GET RESOURCE ERROR Error_No:%d", ret); } 35 return; 36 } Interface Corporation - 78 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.6.3 割り込み制御 アナログ入出力インタフェースモジュールCPZ-360112を使用した、割り込み制御の例です。 CPZ-360112はメモリマップドI/O方式なので、I/Oアクセスにはメモリアクセス関数を使用します。 サンプルプログラムの内容 CPZ-360112のハードウェアリソース情報を取得し、I/Oポートアクセスを行います。 CPZ-360112のレジスタにアクセスし、任意の値をライトし、同じレジスタをリードして、値が書 き込めているかどうか、リードした結果を表示して確認します。 アクセスは、バイトアクセス, ワードアクセス, ダブルワードアクセスを行います。 サンプルプログラムソース 01 #include <conio.h> 02 #include "IFCM.h" /* 総合ライブラリヘッダファイル */ 03 int IRQ_Count; /* 割り込み回数カウント用変数 */ 04 int far user_func(int handle, short user1, long user2)/* 割り込み処理関数 */ 05 { 06 unsigned char stat; /* 割り込みステータスを格納する変数 */ 07 unsigned short adr; /* I/Oポートアドレスを格納する変数 */ 08 adr = user1; /* I/Oポートアドレスを代入 */ 09 stat = inp(adr + 0x02); /* 割り込み要因の確認 */ 10 11 if(stat == 0x10) { /* 割り込みステータスの確認 */ 12 IRQ_Count++; /* 割り込み処理 */ 13 14 return 1; /* 割り込み処理の終了 */ } 15 return 0; 16 } → 次ページへ続きます。 - 79 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 17 void main (void) 18 { 19 unsigned long bar[6]; /* ベースアドレスを格納する配列 20 unsigned short handle; /* 割り込みハンドル番号を格納する変数 */ 21 char irq; /* 割り込み番号を格納する変数 */ 22 PciGetConfigReg(1, 0x1147, 3601, bar, &irq); /* リソース取得 23 adr = bar[0] & 0xfffffff0L; /* I/Oポートアドレス抽出 */ 24 printf("I/O PORT ADDRESS: %08lxh¥n", adr); /* I/Oポートアドレスの表示*/ 25 26 IRQ_Count = 0; /* カウント値の初期化 */ handle = PciSetInterrupt(irq, user_func, adr, 0L); 27 if(handle != 0xffff){ */ /* タイマ設定 */ 28 29 outp(adr + 0x04, 0x00); outp(adr + 0x05, 0x00); 30 outp(adr + 0x06, 0x01); 31 outp(adr + 0x03, 0x10); /* 割り込みマスクオープン */ 32 outp(adr + 0x07, 0x02); /* タイマ開始 */ 33 while(1){ 34 printf("COUNTER = %04Xh¥n", IRQ_Count); 35 if(kbhit()){ 36 getch(); 37 break; } 38 } 39 outp(adr + 0x07, 0x00); /* タイマ停止 */ 40 41 outp(adr + 0x03, 0x00); PciKillInterrupt(handle); /* 割り込みマスククローズ */ 42 } 43 } Interface Corporation - 80 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.7 コンパイル方法 4.7.1 総合ライブラリを使用したコンパイル方法 下記は、SAMPLE.Cをラージモデルでコンパイルした場合の記述例です。 アンダーラインが付いた部分で、メモリモデルを指定してください。 ※ IFCMが配置されているフォルダは、お客様の使用される環境によって異なります。 ●Borland C++ Ver.5.0/Borland C++ Ver.5.2の場合 bcc -ml C:¥IFCM¥INCLUDE SAMPLE.C C:¥IFCM¥LIB¥IFCMBL.lib メモリモデル指定 ・「s」:スモールモデル ・「l」:ラージモデル ・「h」:ヒュージモデル ●Microsoft C Ver.6.0/Microsoft C/C++ Ver.7.0/Microsoft C/C++ Ver.8.0の場合 cl /AL /Gs /Od /Zp /IC:¥IFCM¥INCLUDE SAMPLE.C C:¥IFCM¥LIB¥IFCMML.lib メモリモデル指定 ・「S」:スモールモデル ・「L」:ラージモデル ・「H」:ヒュージモデル ●Turbo C Ver.2.0 (英語版)/Turbo C++ Ver.4.0の場合 tcc -ml -IC:¥IFCM¥INCLUDE SAMPLE.C C:¥IFCM¥LIB¥IFCMBL.lib メモリモデル指定 ・「s」:スモールモデル ・「l」:ラージモデル ・「h」:ヒュージモデル ●Open Watcom C/C++ Ver.1.5/Open Watcom C/C++ Ver.1.6の場合 wcl -ml -bt=dos -s -od -zp=1 -zu -iC:¥IFCM¥INCLUDE SAMPLE.C -l=dos C:¥IFCM¥LIB¥IFCMWL.LIB メモリモデル指定 ・「s」:スモールモデル ・「l」:ラージモデル ・「h」:ヒュージモデル - 81 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.8 カード型モジュール使用方法 4.8.1 ハードウェアリソース設定 PCIデバイスの場合、コントローラ起動時にBIOSがハードウェアリソースを割り当てます。 一方DOSでカード型モジュールを使用する場合には、CardBusに対応したカードサービスが必要に なります。しかし、使用するコントローラに対応したDOS用のCardBus対応カードサービスは提供 されていない場合が多く、入手が困難な場合があります。 DOS System開発らくらくパッケージ for ATOMには、DOS用のCardBus対応カード サービスがない環境でも、弊社各種CardBus製品を使用することができるように、サービスソフト ウェア(SETCARD.EXE)を提供しています。 ! 注意 同梱されているSETCARD.EXEはI/O Classembly Devices(R)専用です。 カード型モジュールはI/O Classembly Devices(R)のみに搭載されています。 Interface Corporation - 82 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.8.2 CardBus設定方法(CardBusイネーブラ使用方法) カード型モジュールをDOS上で使用するためのサービスソフトウェア(SETCARD.EXE:CardBus イネーブラ)の使用方法を説明します。 製品名 CardBusイネーブラ 実行ファイル名 SETCARD.EXE 収録ディレクトリ ¥IFCM¥DRIVERS ■概要 CardBusイネーブラ(SETCARD.EXE)は、DOS上でカード型モジュールを使用するためのサービス ソフトウェアです。 ■使用方法 CardBusイネーブラを使用するには、ドライバをCONFIG.SYSから組み込みます。 ドライバをCONFIG.SYSから組み込むことにより、カード型モジュールがコントローラに認識され、 ハードウェアリソースが確保されます。 (Intel(R) Atom(TM) プロセッサ N450塔載 長期安心FAコントローラでは、出荷時状態で組み込まれ ていません。) CONFIG.SYS設定例: DEVICE=C:¥IFCM¥DRIVERS¥SETCARD.EXE ! 注意 CardBusイネーブラは、CardBusのホットプラグには対応しておりません。 SETCARD.EXEは、EMM386を組み込んだ環境では使用できません。 - 83 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4.8.3 CardBus ID確認・設定方法 カード型モジュールを弊社DOS専用ライブラリ(GPDシリーズ)で使用する際は、CardBus IDを確認 する必要があります。CardBus IDはカード型モジュールに任意の値が設定されています。 DOS上で認識されているカード型モジュールのCardBus IDを確認し、設定するユーティリティを 起動メディアに収録しています。本ユーティリティを使用することで、DOS上から簡単にCardBus IDを確認、設定することができます。 製品名 CardBus ID設定ユーティリティ 実行ファイル名 IFCARDID.EXE 収録ディレクトリ ¥IFCM¥TOOLS DOS上で上記実行ファイルを実行すると、下記のような画面に、認識されているカード型 モジュールの一覧が表示されます。 *********************************************************** CardBus Setup Utility Version: 1.00-01 Copyright 2009 Interface Corporation. All Right Reserved. *********************************************************** =========================================================== SlotNo | Bus | Dev | Func | Model | CardBusID ----------------------------------------------------------1 | 6 | 0 | 0 | CSI/CBI-466120 | 0 2 | 8 | 0 | 0 | CSI/CBI-466120 | 1 =========================================================== 項目 SlotNo Bus Dev Func Model CardBusID 内容 カード型モジュールが挿入されているカードスロット番号です。 カード型モジュールが挿入されているバス番号を示します。 カード型モジュールが挿入されているデバイス番号を示します。 カード型モジュールが挿入されているファンクション番号を示します。 カード型モジュールの型式を示します。 設定されているCardBus ID番号を示します。 ※ 数値は10進数表示です。 CardBus ID番号を変更したい場合はメニューから「y」を選択し、変更を行いたいカード型 モジュールのカードスロット番号を入力します。 「n」を選択するとユーティリティが終了します。 Change the CardBusID(Y/N)? y 次にCardBus ID番号を入力しリターンキーを押します。CardBus ID番号の値を入力してください。 Enter Card Slot No: 1 Enter the CardBusID (0-15). If you want to cancel this operation, enter -1. : 1 「n」を選択することでユーティリティを終了します。 Interface Corporation - 84 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第5章 デジタル入出力機能 車載 Classembly Devices(R) Atom D525搭載モデル CAN+DIOモデルには、デジタル入出力共用端 子4点が搭載されています。 DOS System開発らくらくパッケージには、その機能を簡 単に制御できる機能が収録されています。 総合ライブラリのAPI関数をプログラム上から使用する場合は「include」ディレクトリ内の 「IFCM.H」を使用し、「lib」ディレクトリ内からご使用のコンパイラ, メモリモデルに合った総 合ライブラリをリンクして使用してください。 ! 注意 本関数は、車載 Classembly Devices(R) Atom D525搭載モデル CAN+DIOモデルでのみ使 用できます。 - 85 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 5.1 関数一覧 No. 1 2 3 4 5 6 7 8 関数名 CmInputUP CmOutputUP CmSetEvent CmKillEvent CmSetEventMask CmGetEventMask CmGetEventFactor CmCallBackProc 機 能 デジタル入力接点を読み込みます。 デジタル出力接点を制御します。 割り込みコールバック関数を登録します。 登録している割り込みコールバックを解除します。 各コールバックの有効, 無効を設定します。 現在の割り込みコールバックマスク値を取得します。 割り込みコールバックの発生要因を取得します。 CmSetEventMaskで設定した要因検出時に呼び出されるコールバック関数 です。 5.2 個別説明 1. CmInputUP 【機能】 デジタル入力接点を読み込みます。 【書式】 int CmInputUP( unsigned long* ); 【パラメータ】 pData pData デジタル入力接点情報の格納先です。各ビットが下記の端子状態を示し ます。 bit31∼bit4 bit3 bit2 bit1 bit0 予約(値は無視してください) DIN4 DIN3 DIN2 DIN1 0:スイッチ OFF(High), 1:スイッチ ON(Low) 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 0 CM_ERROR_SUCCESS 5h CM_ERROR_NULL_POINTER 8h CM_ERROR_NOT_SUPPORT 内容 正常終了 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』 を参照してください。 Interface Corporation - 86 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 【記述例】 デジタル入力接点を読み込みます。 int Ret; unsigned int Data Ret = CmInputUP(&Data); 2. CmOutputUP 【機能】 デジタル出力接点を制御します。 【書式】 int CmOutputUP( unsigned long ); 【パラメータ】 Data Data デジタル出力接点データを指定します。各ビットが下記の制御端子に対 応します。 bit31∼bit4 bit3 bit2 bit1 bit0 予約(0を指定してください) DOUT4 DOUT3 DOUT2 DOUT1 0:リレーOFF, 1:リレーON 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 値 0 CM_ERROR_SUCCESS 8h CM_ERROR_NOT_SUPPORT 内容 正常終了 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』を 参照してください。 【記述例】 DOUT1をリレーONに設定します。 int Ret; Ret = CmOutputUP(0x00000001); - 87 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 3. CmSetEvent 【機能】 割り込みコールバック関数を登録します。 【書式】 int CmSetEvent( void (IfCdecl far *CmCallBackProc)(unsigned long), unsigned long User ); 【パラメータ】 CmCallBackProc User ユーザ・コールバック関数のアドレスを指定します。 デフォルト:NULL コールバック関数へ引き渡すユーザ・データを指定します。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_ALREADY CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 3h 5h 8h 内容 正常終了 既にコールバック登録済み NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ を参照してください。 【使用例】 コールバック関数を登録します。 void IfCdecl far lpCmCallBackProc(unsigned long User) { } void main(void) { int Ret; Ret = CmSetEvent(lpCmCallBackProc, 1); Interface Corporation - 88 - 3.9 戻り値一覧 』 Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 4. CmKillEvent 【機能】 登録している割り込みコールバックを解除します。 【書式】 int CmKillEvent(void); 【パラメータ】 なし 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_NOT_YET CM_ERROR_NOT_SUPPORT 値 0 4h 8h 内容 正常終了 まだコールバック登録していない 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ を参照してください。 3.9 戻り値一覧 』 【使用例】 登録している割り込みコールバックを解除します。 int Ret; Ret = CmKillEvent(); - 89 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 5. CmSetEventMask 【機能】 各コールバックの有効, 無効を設定します。 【書式】 int CmSetEventMask( unsigned long Mask ); 【パラメータ】 Mask 有効にするコールバックを下記の値で指定します。 0を指定すると、全てのコールバックが無効になります。デフォルト は0です。複数の値をORで指定することができます。 (CM_EVENT_FALL_SIGxとCM_EVENT_RISE_SIGxはORで設定でき ません。) 識別子 CM_EVENT_FALL_SIG1 CM_EVENT_RISE_SIG1 CM_EVENT_FALL_SIG2 CM_EVENT_RISE_SIG2 CM_EVENT_FALL_SIG3 CM_EVENT_RISE_SIG3 CM_EVENT_FALL_SIG4 CM_EVENT_RISE_SIG4 値 00100000h 00110000h 00200000h 00220000h 00400000h 00440000h 00800000h 00880000h 内容 DIN1 High→Low 検出を有効にします。 DIN1 Low→High 検出を有効にします。 DIN2 High→Low 検出を有効にします。 DIN2 Low→High 検出を有効にします。 DIN3 High→Low 検出を有効にします。 DIN3 Low→High 検出を有効にします。 DIN4 High→Low 検出を有効にします。 DIN4 Low→High 検出を有効にします。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_INVALID_PARAMETER CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 2h 5h 8h 内容 正常終了 入力パラメータ不正 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』 を参照してください。 【使用例】 DIN1 High→Low 検出を有効に設定します。 int Ret; Ret = CmSetEventMask(CM_EVENT_FALL_SIG1); Interface Corporation - 90 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 6. CmGetEventMask 【機能】 現在の割り込みコールバックマスク値を取得します。 【書式】 int CmGetEventMask( unsigned long* pMask ); 【パラメータ】 pMask コールバックマスク格納先です。 CmSetEventMaskで設定した値が取得できます。 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 5h 8h 内容 正常終了 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ を参照してください。 3.9 戻り値一覧 』 【使用例】 現在の割り込みイベントマスク値を取得します。 int Ret; unsigned long Mask; Ret = CmGetEventMask(&Mask); - 91 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7. CmGetEventFactor 【機能】 割り込みコールバックの発生要因を取得します。 【書式】 int CmGetEventFactor( unsigned long* Factor ); 【パラメータ】 Factor イベント要因格納先です。 下記の値が取得できます。複数の要因が検出されることもあります。 識別子 CM_EVENT_FALL_SIG1 CM_EVENT_RISE_SIG1 CM_EVENT_FALL_SIG2 CM_EVENT_RISE_SIG2 CM_EVENT_FALL_SIG3 CM_EVENT_RISE_SIG3 CM_EVENT_FALL_SIG4 CM_EVENT_RISE_SIG4 値 00100000h 00110000h 00200000h 00220000h 00400000h 00440000h 00800000h 00880000h 意味 DIN1 High→Low 検出 DIN1 Low→High 検出 DIN2 High→Low 検出 DIN2 Low→High 検出 DIN3 High→Low 検出 DIN3 Low→High 検出 DIN4 High→Low 検出 DIN4 Low→High 検出 【戻り値】 本関数実行時には下記の戻り値が返ります。 識別子 CM_ERROR_SUCCESS CM_ERROR_NULL_POINTER CM_ERROR_NOT_SUPPORT 値 0 5h 8h 内容 正常終了 NULLポインタ検出 未サポート CM_ERROR_SUCCESS以外の値が返された場合については、『38ページ 3.9 戻り値一覧』 を参照してください。 【備考】 ・割り込み要因を取得すると、要因はクリアされます。 (本関数を呼び出して要因を取得した後、何も要因が満たされていない状態で再度本関数を呼 び出すと、2回目は要因として0が返されます。) ・割り込み要因を取得する前に、複数回要因が満たされた場合は、1回にまとめられます。 【使用例】 割り込みコールバックの発生要因を取得します。 int Ret; unsigned long Factor; Ret = CmGetEventFactor(&Factor); Interface Corporation - 92 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 8. CmCallBackProc 【機能】 CmSetEventMaskで設定した要因検出時に呼び出されるコールバック関数です。 CmSetEvent関数のパラメータのCmCallBackProcにCmCallBackProc関数へのポインタを設定する ことにより、CmSetEventMaskで設定した要因検出時にCmCallBackProc関数を呼び出すことがで きます。発生した要因については、CmGetEventFactor関数で取得することができます。 【書式】 void CmCallBackProc ( unsigned long User ); 【パラメータ】 User CmSetEvent関数で指定したユーザ・データを取得できます。 【戻り値】 CmCallBackProc関数は値を返しません。 - 93 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第6章 CAN機能 ! 注意 GPDxxxフォルダは、拡張I/Oが搭載されている製品にのみ収録されています。 本機能は拡張I/Oが搭載されている製品でのみ使用できます。 6.1 CAN機能 車載 Classembly Devices(R) Atom D525搭載モデル CAN+DIOモデルには、CANインタフェースが 搭載されています。DOS起動メディア(¥IFCAN)に制御用ドライバが搭載されています。 関数のリファレンスは弊社Web site(www.interface.co.jp)のGPD-4851のhelpを参照してください。 ! 注意 CANインタフェースは、PCI-485110として制御できます。 Interface Corporation - 94 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第7章 BIOS割り込み一覧 7.1 INT 10h VGA BIOS 7.1.1 INT 10h ビデオサービス ■AH=00h 画面モード設定 エントリ: AL モード(0-7): 0 = 40×25 白黒 1 = 40×25 カラー 2 = 80×25 白黒 3 = 80×25 カラー 4 = 320×200 カラー 5 = 320×200 白黒 6 = 640×200 白黒 7 =モノクロ専用 ALのビット7が1にセットされている時にはビデオメモリの内容は書き換えられません。 0の場合はビデオメモリの内容はクリアされます。 ■AH=01h カーソルサイズ設定 エントリ: CH L Cl ビット4-0:カーソルの上辺のライン番号 ビット4-0:カーソルの下辺のライン番号 ■AH=02h カーソル位置設定 エントリ: BH DL DH ページ番号 列位置 行位置 ■AH=03h カーソル位置取得 エントリ: BH ページ番号 DL DH Cl CH 行番号 列番号 カーソルの上辺のライン番号 カーソルの下辺のライン番号 リターン: ■AH=05h 表次ページ設定 エントリ: AL 表示するページおよび行番号 ■AH=06h 矩形領域のスクロールアップ エントリ: Cl CH DL DH BH AL 上方スクロールへの左上の行位置 上方スクロールへの左上の列位置 上方スクロールへの右下の行位置 上方スクロールへの右下の列位置 スクロールされた部分に設定する属性 上方スクロールするライン数 0= ブランクスクリーン - 95 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=07h 矩形領域のスクロールダウン エントリ: Cl CH DL DH BH AL 下方スクロールへの左上の行位置 下方スクロールへの左上の列位置 下方スクロールへの右下の行位置 下方スクロールへの右下の列位置 スクロールされた部分に設定する属性 下方スクロールするライン数 0= ブランクスクリーン ■AH=08h カーソル位置のキャラクタコードと属性の取得 エントリ: BH ページ番号 AL AH キャラクタコード キャラクタ属性コード リターン: ■AH=09h カーソル位置のキャラクタコードと属性の設定 エントリ: AL BL BH CX 書き込むキャラクタコード キャラクタ属性(テキストモード時) キャラクタカラー(グラフィックモード時) ページ番号 書き込む回数 ■AH=0Ah カーソル位置へ文字を設定 エントリ: BH AL CX ページ番号 キャラクタコード 書き込む回数 ■AH=0Bh カラーパレット設定 エントリ: BH = 00 BL = 0-31 BH = 01 BL = 00 BL = 01 セット・カラー モードが4か5の場合:BL=背景色 モードが0-3の場合:BL=枠線色 モードが6か11の場合:BL=文字表示色 カラー0-15の濃いバージョン モード4, 5用のパレット設定 パレット=グリーン(1), 赤(2), イエロー(3) パレット=シアン(1), マゼンタ(2), 白(3) ■AH=0Ch ピクセルの描画 エントリ: AL CX DX 描画指定 (XORed、ビット7= 1) ピクセルを書くX座標 ピクセルを書くY座標 ■AH=0Dh ピクセルの読み出し エントリ: CX DX ピクセルを読むX座標 ピクセルを読むY座標 AL ピクセル読取り値 リターン: Interface Corporation - 96 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=0Eh テレタイプキャラクタ書き込み エントリ: AL BL キャラクタコード 文字表示色(グラフィックモード専用) カーソル位置に文字を表示し、カーソル位置を一文字進めます。 ■AH=0Fh ビデオモード取得 リターン: AL AH BH 現在のビデオ・モード 文字表示列数 アクティブページ ■AH=13h 文字列の書き込み エントリ: ES: BP CX DH DL BL AL 文字列へのポインタ 表示する文字列の長さ 表示する行位置 表示する列位置 表示属性 書込み文字列モード 0 =文字列のみ。カーソルは更新しない。 1 =文字列のみ。カーソルは更新する。 2 =文字と属性。カーソルは更新しない。 3 =文字と属性。カーソルは更新する。 7.2 INT 11h システム情報割り込み 7.2.1 INT 11h システム情報取得 リターン: AX ビット 0 1 2 3 4, 5 6, 7 8 9-11 12 13 14, 15 機器情報: 定義 未使用 数値演算コプロセッサがインストールされている PS/2マウスがインストールされている 未使用 ビデオ・モード: 00 = EGA/VGA 01 = 40×25 CGA 10 = 80×25CGA 11 =モノクロ フロッピーディスクドライブの数: 00 = 1個のドライブ 01 = 2個のドライブ 10 = 3個のドライブ 11 = 4個のドライブ 未使用 シリアルポートの数 ゲームポートがインストールされている 未使用 パラレルポートの数 - 97 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7.3 INT 12h メモリサイズの取得 7.3.1 INT 12h メモリ量の取得 リターン: AX KB単位のメモリブロックの数 7.4 INT 13h ディスケットサービス 以下のテーブルはAHエラーコードをリストアップします。 7.4.1 INT 13h ステータスコード AH AH 00h =エラー無し キャリー = 1であれば: 01h =パラメータエラー 02h =バッドアドレスマーク 03h =ライト・プロテクトされている 04h =セクタが見つからない 06h =メディアが交換されている 08h = DMAに失敗 09h = 64KB以上のDMAを行おうとした 0Ch =メディアが見つからない 10h = CRCに失敗した 20h = NECに失敗した 30h =ドライブがサポートしていないメディア 31h =メディアがドライブに入っていない 32h =ドライブがサポートしていないメディアタイプ 40h =シークに失敗した 80h =タイムアウト 7.4.2 INT 13h ディスケットサービス ■AH=00h ディスケット・システムをリセット ■AH=01h ディスケット・ステータス取得 リターン: AH 01h =パラメータエラー 02h =バッドアドレスマーク 03h =ライト・プロテクトされている 04h =セクタが見つからない 06h =メディアが交換されている 08h = DMAに失敗 09h = 64KB以上のDMAを行おうとした 0Ch =メディアが見つからない 10h = CRCに失敗した 20h = NECに失敗した 40h =シークに失敗した 80h =タイムアウト Interface Corporation - 98 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=02h ディスケット・セクタ読み出し エントリ: ES: BX Bufferアドレス DL ドライブ番号(0-1) DH ヘッド番号(0-1) CH トラック番号(0-79) Cl セクタ番号(8-36) AL セクタ(1-15)の数 リターン: AL 読み出したセクタ数 ■AH=03h ディスケット・セクタ書き込み エントリ: ES: BX バッファアドレス DL ドライブ番号(0-1) DH ヘッド番号(0-1) CH トラック番号(0-79) Cl セクタ番号(8-36) AL セクタ(1-15)の数 リターン: AL 書き込んだセクタ数 ■AH=04h ディスケット・セクタベリファイ エントリ: DL ドライブ番号(0-1) DH ヘッド番号(0-1) CH トラック番号(0-79) Cl セクタ番号(8-36) AL セクタ(1-15)の数 リターン: AL 検証済みのセクタ数 ■AH=05h ディスケット・トラックフォーマット エントリ: ES: BX バッファアドレス DL ドライブ番号(0-1) DH ヘッド番号(0-1) CH トラック番号(0-79) AL セクタ(1-15)の数 リターン: AL フォーマットされたセクタの数 - 99 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=08h ドライブ・パラメータ読み出し エントリ: DL ドライブ番号 リターン: ES:DI パラメータテーブルへのポインタ DH 最大のヘッド番号 DL ドライブ数 CH 最大のトラック番号 CL ドライブ容量: ビット0-5 Maximumセクタ番号 ビット6-7 Maximumトラック番号 BL ドライブタイプ: ビット0-3: 00 = 01 = 360KB 02 = 1.2MB 03 = 720KB 04 = 1.44MB 06 = 2.88MB ビット4-7: 0 ■AH=15h ドライブ・タイプ読み出し エントリ: DL ドライブ番号数 リターン: AH 00 =ドライブがない 01 =メディア交換を検出できないフロッピードライブ 02 =メディア交換を検出できるフロッピードライブ 03 =固定ディスク ■AH=16h メディア交換検出 エントリ: DL ドライブ番号(0-1) リターン: Carry = 0の場合: AH 00 =ディスクは交換されていない 01 =無効のドライブ番号 06 =ディスク変化ライン能動態と等しいまたは変化ラインはサポー トしなかった 80h =タイムアウト ■AH=17h ディスケット・タイプ取得 エントリ: AL フォーマット: 00 =無効の要求 01 = 360KBドライブで360KBフロッピー 02 = 1.2MBのドライブで360KBフロッピー 03 = 1.2MBのドライブで1.2MBのフロッピー 04 = 720KB(1.44MBはサポートしていない)のドライブで720KBフロッピー DL ドライブ番号(0-1) Interface Corporation - 100 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=18h フォーマットのパラメータ設定 エントリ: CH 最大のトラック番号 CL Disketteパラメータ: ビット0-5:最大のセクタ番号 ビット6-7:最大のトラック番号 DL ドライブ番号(0-1) リターン: ES:DI パラメータテーブルへのポインタ ■AH=20h メディアタイプ取得 エントリ: DL ドライブ番号(0-1) リターン: AL インストールされているメディアのタイプ: 00h = 720KBディスケット 01h = 1.44MBのディスケット 02h = 2.88MBのディスケット 03h = 1MBのディスケット 04h = 2MBのディスケット 06h = 4MBのディスケット - 101 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7.5 INT 14h シリアルサービス 7.5.1 モデムステータス AL ビット ビット ビット ビット ビット ビット ビット ビット 0 1 2 3 4 5 6 7 定義 1 = Delta clear to send 1 = Delta data set ready 1 = Trailing edge ring indicator 1 = Delta data carrier detect 1 = Clear to send 1 = Data set ready 1 = Ring indicator 1 = Received line signal detect 7.5.2 ラインステータス AH ビット ビット ビット ビット ビット ビット ビット ビット 0 1 2 3 4 5 6 7 定義 1 = Data ready 1 = Overrun error 1 = Parity error 1 = Framing error 1 = Break detect 1 = Trans holding register empty 1 = Trans shift register empty 1 = Time out error PhoenixBIOS4.0のシリアル通信サービスについて説明します。 7.5.3 INT 14h シリアルサービス ■AH=00h シリアルアダプタの初期化 エントリ: AL DX リターン: AL AH Interface Corporation Initパラメータ: ビット1, 0 10 = 7データビット 11 = 8データビット ビット2 0 = 1ストップビット ビット2 1 = 2ストップビット ビット4, 3 00 =パリティ無し 10 =パリティ無し 01 =奇数パリティ 11 =偶数パリティ 000 = 110 Baud- 417 divisor ビット7-5 001 = 150 Baud-300 divisor 010 = 300 Baud-180 divisor 011 = 600 Baud-0C0 divisor 100 = 1200 Baud-060 divisor 101 = 2400 Baud-030 divisor 110 = 4800 Baud-018 divisor 111 = 9600 Baud-00C divisor シリアルポート(0-3) モデムステータス ラインステータス - 102 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=01h キャラクタ送信 エントリ: AL DX 転送する文字 シリアルポート(0-3) リターン: AH ラインステータス ■AH=02h キャラクタ受信 エントリ: DX シリアルポート(0-3) リターン: AL AH キャラクタは受信された ラインステータス ■AH=03h シリアルポート・ステータス取得 エントリ: DX シリアルポート(0-3) リターン: AH AL ラインステータス モデムステータス ■AH=04h イニシャライズ(PS/2) エントリ: DX AL BH BL CH CL リターン: AL AH 0-3 = 通信アダプタ 00 = break 01 = No break パリティ: 00 = None 01 = Odd 02 = Even 03 = Stick parity odd 04 = Stick parity even ストップビット: 00 = 1つ 01 = 2, 6, 7、または8ビットワード長 1, 1.5, 5ビットワード長 ワード長: 00 = 5ビット 01 = 6ビット 02 = 7ビット 03 = 8ビット ビットレート: 00 = 110 baud 01 = 150 baud 02 = 300 baud 03 = 600 baud 04 = 1200 baud 05 = 2400 baud 06 = 6000 baud 07 = 9600 baud 08 = 19200 baud モデムステータス ラインステータス - 103 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=05h 拡張通信ポート制御(PS/2) AL 00 = モデムコントロールレジスタの読み込み エントリ: DX シリアルポート(0-3) リターン: BL モデムコントロールレジスタ 01 = モデムコントロールレジスタへ書き込み エントリ: DX シリアルポート(0-3) BL モデムコントロールレジスタ リターン: AL モデムステータス AH ラインステータス AL 7.5.4 INT 15h システムサービス ■AH=00-03h カセット・サービス エントリ: サポートしない リターン: Carry 1 = サポート無し ■AH=80h デバイスオープン エントリ: BX CX デバイス識別子 プロセス識別子 ■AH=81h デバイスクローズ エントリ: BX デバイス識別子 CX プロセス識別子 ■AH=82h プログラムの終了 エントリ: BX デバイス識別子 ■AH=83h イベント・ウェイト AL00 = インターバルを設定する エントリ: ES:BX バイトフラグのアドレス CX μs(Highバイト) DX μs(Lowバイト) リターン: AH 83h AL CMOSレジスタBに書かれた値 00h =ファンクションビジー AL01 = セットしたインターバルを取り消す リターン: AH 83 AL 00 Interface Corporation - 104 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=84h ジョイスティックサポート エントリ: DL 00 = 読み取りスイッチ設定 リターン: AL スイッチ設定 DL 01 座標を返す リターン: AX Inputビット0(ジョイスティックA、X座標) BX Inputビット1(ジョイスティックA、Y座標) CX Inputビット2(ジョイスティックB、X座標) DX Inputビット3(ジョイスティックB、Y座標) ■AH=85h システムリクエストキーフック エントリ: AL AL 00 システム要求キーが押された 01 システム要求キーが離された ■AH=86h ウェイト エントリ: CX DX μs(Highバイト) μs(Lowバイト) ■AH=87h 拡張メモリのコピー エントリ: CX ES:SI コピーするワード数 グローバルテーブル Byte 0-1 ビット0-15 セグメントリミット Byte 2-3 ビット0-15 ベースアドレス Byte 4 ビット16-23 ベースアドレス Byte 5 アクセス権 Byte 6 ビット7-4 アクセス権 ビット3-0 セグメントリミット Byte 7 ビット24-31 ベースアドレス (Intel・プログラマリファレンスを参照) ■AH=88h 拡張メモリ量の取得 リターン: AX 1KB単位での拡張メモリ量 ■AH=89h プロテクトモードへの移行 エントリ: ES:SI BH BL プロテクトモードのGlobal Descriptor 割り込み要求00-07のIDTオフセット 割り込み要求08-0FのIDTオフセット - 105 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=90h デバイス・ビジー エントリ: AL ES:BX リターン: Carry タイプコード: 00h =固定ディスク 01h =ディスケット 02h =キーボード 03h =ポインティングデバイス 80h =ネットワーク FCh =固定ディスク・リセット FDh =ディスケット駆動機構モータースタート FEh =プリンタ AL = 80h-FFhの場合リクエストブロックへのポイント 0 =ウェイトは実行されていない (ドライバは自己のウェイト待ちを実行しなければならない) 1 =ウェイトは(入出力完了かタイムアウト)を実行した ■AH=91h 割り込み完了 エントリ: AL タイプコード:サービス90hを参照 ■AH=C0h システムパラメータの取得 リターン: ES:BX システムコンフィギュレーションへのポインタ Byte 1-2 コンフィギュレーションテーブルの長さ Byte 3 モデル番号 Byte 4 サブモデル番号 Byte 5 BIOSリビジョン Byte 6 Feature Information ビット0 0 =予約 ビット1 0 = ISAタイプI/Oチャネル ビット2 0 = EDBAが割り当てなかった ビット3 0 =外的イベント待ちをサポート ビット4 1 =キーボード割り込みにINT 15h(4Fh)を呼び出す ビット5 1 =リアルタイムクロックを使用 ビット6 1 =セカンドPICを使用(スレーブ8259) ビット7 0 = DMAチャネル3をハードディスクで使用する Byte 7 予約 Byte 8 予約 ■AH=C1h 拡張BIOSデータ領域アドレスを取得 リターン: ES 拡張BIOSデータ領域セグメントアドレス Carryが1の場合 AH 86 =無効なBIOSルーチンをコールした(EBDAがない) Interface Corporation - 106 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7.6 INT 15h ビッグメモリサービス ■AH=8Ah ビッグメモリサイズ、Phoenix definition エントリ: AX DX 下位16ビットの値 上位16ビットの値 = 1KBブロックの64MBより高いメモリ ■AH=E8h ビッグメモリサイズ AL = 01h ビッグメモリサイズ16ビット リターン: Carry AX BX CX DX 0 = E801 サポート 1KBブロックの1MBから16MBのメモリ 64KBブロックの16MB以上のメモリ 1KBブロックの1MBから16MBの配置されたメモリ 64KBブロックの16MB以上の配置されたメモリ AL=20h システム・メモリ・マップ エントリ: EBX ES:DI ECX EDX コンフィギュレーション値 アドレスレンジディスクリプタのアドレス アドレスレンジディスクリプタの長さ(=> 20バイト) “SMAP”シグネチャ リターン Carry 0 = E820 サポート EAX “SMAP”シグネチャ ES:DI エントリと同じ値 ECX バイトで表現される実際の報告された情報の長さ EBX コンフィギュレーション値 アドレスレジスタディスクリプタの構造: Byte 0-3 ベースアドレスの下位32ビット Byte 4-7 ベースアドレスの上位32ビット Byte 8-11 バイト表現される下位32ビットの長さ Byte12-15 バイト表現される上位32ビットの長さ Byte16-20 アドレスレンジのタイプ: 1 = OSに利用できるAddressRangeMemory 2 = AddressRangeReserved、利用できない 3 = OSに利用できるAddressRangeACPI 4 = AddressRangeNVS、OSへの利用できない Other = 未定義もしくは使用できない AL=81h ビッグメモリサイズ、32ビットのプロテクトモード リターン: Carry 0 = E881サポート EAX 1KBブロックの1MBから16MBのメモリ EBX 64KBブロックの16MB以上のメモリ ECX 1KBブロックの1MBから16MBの配置されたメモリ EBX 64KBブロックの16MB以上の配置されたメモリ - 107 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7.7 INT 15h PS/2マウスサービス 7.7.1 PS/2マウスステータスコード取得 AH 00h =エラー無し 01h =無効な関数呼出し 02h =無効な入力値 03h =インタフェース・エラー 04h = 8042からリクエストを受け取り再送する 05h =ドライバがインストールされていない 7.7.2 INT 15h PS/2マウスサービス ■AH=C2h PS/2マウス・サポート AL 00 = PS/2マウスを有効にするか、または無効にする エントリ: BH AL リターン: BH AL 解像度: 00h = 1カウントで1mm単位(25dpi) 01h = 2カウントで1mm単位(50dpi) 02h = 4カウントで1mm単位(100dpi) 03h = 8カウントで1mm単位(200dpi) 04h =デバイスタイプの取得 リターン: BH AL サンプリングレート: 00h =毎秒に10回 01h =毎秒に20回 02h =毎秒に40回 03h =毎秒に60回 04h =毎秒に80回 05h =毎秒に100回 06h =毎秒に200回 03h =解像度の設定 エントリ: BH AL デバイスID 02 = サンプリング周波数の設定 エントリ: BH AL 00h =無効 01h =有効 01 = PS/2マウス リセット デバイスID 05h = PS/2マウスの再初期化 エントリ: BH Interface Corporation データパッケージ・サイズ(01-08hバイト) - 108 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド AL 06h =状態の取得/設定 エントリ: BH 0 =ステータスを返す(以下のExit Statusを参照) 01 =スケール1:1設定 02 =スケール2:1設定 リターン: エントリがBH=00の場合: BH ステータスバイト1: ビット0 1 =マウス右ボタンが押された ビット1 0 =予約 ビット2 1 =マウス左ボタンが押された ビット3 0 =予約 ビット4 0 = 1:1のスケーリング 1 = 2:1のスケーリング ビット5 0 =無効 1 =許容 ビット6 0 =ストリーム・モード 1 =リモート・モード ビット7 0 =予約 Cl ステータスバイト2: 00h = 1カウント1mm単位 01h = 2カウント1mm単位 02h = 4カウント1mm単位 03h = 8カウント1mm単位 DL ステータスバイト3: 0Ah =毎秒に10回 14h =毎秒に20回 28h =毎秒に40回 3Ch =毎秒に60回 50h =毎秒に80回 64h =毎秒に100回 C8h =毎秒に200回 AL 07 = PS/2マウス・ドライバアドレス設定 エントリ: ES:BX マウス・ドライバへのポインタ - 109 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 7.8 INT 16h キーボードサービス INT16ソフトウェア割り込みはキーボード入出力サービスを扱います。ここではPhoenixBIOS4.0の キーボード・サービスについて説明します。 ■AH=00h キーボード入力読み取り リターン: AL AH ASCIIコード キーのスキャンコード ■AH=01h キーボード・ステータス取得 リターン: AL AH ZF ASCIIコード キーのスキャンコード 0 =バッファにデータがある 1 =バッファにデータがない ■AH=02h シフト・フラグ・ステータス取得 リターン: AL 現在のシフト・ステータス ■AH=03h オートリピート設定 エントリ: AL BL BH 05(サブ機能番号) 00Hから1FH、typematicレート (30chars/sec から2chars/sec) ディレイレート: 00h = 250ms 01h = 500ms 02h = 750ms 03h = 1000ms 04h to 07h =予約 ■AH=05h キーボードバッファへの追加 エントリ: CL CH ASCIIコード スキャンコード リターン: carry = 1の場合: AL キーボード・バッファフル ■AH=10h 拡張キーボード読み出し リターン: AL AH ASCIIコード キーのスキャンコード ■AH=11h 拡張キーボード読み出し リターン: AL AH ZF Interface Corporation ASCIIコード キーのスキャンコード 0 =バッファにデータがある 1 =バッファにデータがない - 110 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=12h 拡張シフトステータス取得 リターン: AL AH Shiftステータス: ビット7 1 = Sys Reqが押された ビット6 1 = Caps Lockがアクティブ ビット5 1 = NUM Lockがアクティブ ビット4 1 = Scroll Lockがアクティブ ビット3 1 = Right Altがアクティブ ビット2 1 = Right Ctrlがアクティブ ビット1 1 = Left Altがアクティブ ビット0 1 = Left Ctrlがアクティブ 拡張シフト・ステータス: ビット7 1 =インサートがアクティブ ビット6 1 = Caps Lockがアクティブ ビット5 1 = Num Lockがアクティブ ビット4 1 = Scroll Lockがアクティブ ビット3 1 = Altが押された ビット2 1 = Ctrlが押された ビット1 1 = Left Shiftが押された ビット0 1 = Right Shiftが押された 7.9 INT 1Ah タイマサービス ■AH=00h 現時刻の取得 リターン: CX DX AL チックカウントの上位ワード チックカウントの下位ワード 00h =ロールオーバーが起こっていない (最後に電源を入れたか、リセットした時点からタイマ・カウントは 24時間未満) ■AH=01h 現時刻の設定(ロールオーバービットのクリア) エントリ: CX DX チックカウントの上位ワード チックカウントの下位ワード ■AH=02h リアルタイムクロック取得 リターン: CH CL DH DL BCD時間 BCD分 BCD秒 00 =標準時 01h =サマータイムフラグ ■AH=03h リアルタイムクロック事項設定 エントリ: CH CL DH DL BCD時間 BCD分 BCD秒 01h =サマータイムフラグ 00h =その他 - 111 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ■AH=04h リアルタイムクロック日付取得 リターン: CH CL DH DL BCD世紀 BCD年 BCD月 BCD日 ■AH=05h リアルタイムクロック日付設定 エントリ: CH CL DH DL BCD世紀 BCD年 BCD月 BCD日 ■AH=06h リアルタイムクロック・アラーム設定 エントリ: CH CL DH リターン: C アラームを出すBCD時間 アラームを出すBCD分 アラームを出すBCD秒 0 =成功 1 =エラー(アラームは既に設定済み) ■AH=07h リアルタイムクロック・アラーム解除 リターン: AL CMOSRAMレジスタ0Bhに書かれた値 7.10 INT 1Ah PCIサービス 7.10.1 PCIサービスステータスコード AH 00h = 成功 Carry = 1の場合: AH 81h =機能をサポートしていない 83h =ベンダIDが異常 86h =デバイスが見つからない 87h =レジスタ番号が異常 88h =設定失敗 89h =バッファが小さすぎる 7.10.2 INT 1Ah 一般PCIサービス ■AH=B1h PCIサービス AL 01h = PCI BIOS present リターン: EDX Interface Corporation 「PCI」の「P」をDL、「C」をDH等 - 112 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド AL BH BL Cl ハードウェアメカニズム: ビット 定義 5 仕様。サイクル・コンフィグMechanism#2サポート 4 仕様。サイクル・コンフィグMechanism#1サポート 1 コンフィグMechanism#2サポート 0 コンフィグMechanism#1サポート インターフェースレベルのメジャーバージョン インターフェースレベルのマイナーバージョン 最後のPCIバス番号 AL 02h = PCIデバイスの検索 エントリ: CX デバイスID(0-65535) DX ベンダID(0-65534) SI インデックス(0-n) リターン: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 AL 03h = PCIクラスコードの検索 エントリ: ECX クラスコードの下位3バイト SI インデックス(0-n) リターン: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 AL 06h =スペシャルサイクルの発生 エントリ: BH バス番号(0-255) EDX スペシャルサイクル・データ AL 08h =コンフィギュレーション空間データのバイト読み込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0-255) リターン: CL バイトリード値 AL 09h =コンフィギュレーション空間データのワード読み込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0, 2, 4…254) リターン: CX ワードリード値 - 113 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド AL 0Ah =コンフィギュレーション空間データのダブルワード読み込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0, 4, 8…252) リターン: ECX ダブルワードリード値 AL 0Bh =コンフィギュレーション空間へバイトデータ書き込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0-255) Cl ライトバイト値 AL 0Ch =コンフィギュレーション空間へワードデータ書き込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0, 2, 4…254) CX ライトワード値 AL 0Dh =コンフィギュレーション空間へダブルワードデータ書き込み エントリ: BH バス番号(0-255) BL ビット7-3 デバイス番号 ビット2-0 ファンクション番号 DI レジスタ番号(0, 4, 8…252) ECX ライトダブルワード値 AL 0Eh = PCI割り込み要求ルーティング・オプションの取得 エントリ: DS BIOSデータのセグメントかセクレタ ES ルートバッファパラメータのセグメントかセレクタ DI ルートバッファパラメータの16ビットのオフセット EDI ルートバッファパラメータの32ビットのオフセット リターン: BX 排他的なPCI割り込み要求データマップ: ビット0 1はIRQ0 PCI専用 ビット1 1はIRQ1 PCI専用 ... ビット151 = IRQ15 PCI専用 AL 0Fh =セット・PCIハードウェア割り込み エントリ: BH BL CL CH DS Interface Corporation バス番号(0-255) ビット7-3 デバイス番号 ビット2-0 ファンクション番号 PCI割り込みピン(0Ah...0Dh) IRQ番号(0-15) BIOSデータのセグメントかセレクタ - 114 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第8章 BIOSデータ領域 8.1 BIOSデータ領域定義 オフセット 00 02 04 06 08 0A 0C 0E 10 サイズ 2 2 2 2 2 2 2 2 2 ビット 0 1 2 3 4, 5 6, 7 12 13 15 16 8 9-11 12 13 14, 15 1 2 1 1 定義 COM1アドレス COM2アドレス COM3アドレス COM4アドレス LPT1アドレス LPT2アドレス LPT3アドレス LPT4/EBDAアドレス インストールされた機器: 定義 ブート(情報処理言語ビット)に利用できるフロッピーディスク 数値演算プロセッサがインストールされている PS/2マウスはインストールした 使用されない ビデオ・モードに頭文字をつける: 00 = EGA/VGA 01 = 40×25 CGA 10 = 80×25CGA 11 =モノクロ ディスケットドライブ 00 = 1 ドライブ 01 = 2 ドライブ 10 = 3 ドライブ 11 = 4 ドライブ 未使用 シリアルポート数 ゲームポートがインストールされている 未定義 パラレルアダプタポート数 割り込みフラグ(POST) メモリ量(KB) 予約 制御フラグ - 115 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド キーボードデータ領域 オフセット サイズ 17 1 18 1 19 1A 1C 1E 1 2 2 20 ディスケット・データ領域 オフセット サイズ 3E 1 3F 1 40 1 41 1 1 1 1 1 1 42 Interface Corporation 7 定義 キーボード・フラグ0: ビット 定義 0 右シフトキーが押された 1 左シフトキーが押された 2 コントロールキーが押された 3 Altキーが押された 4 Scroll Lockが押された 5 Caps Lockが押された 6 Num Lockが押された 7 Insertモードが押された キーボード・フラグ1: ビット 定義 3 フリーズ状態 4 Scroll Lockが押された 5 Caps Lockが押された 6 Num Lockが押された 7 Insertモードが押された キーパッド入力バイト キーバッファ・ヘッド キーバッファ・テール キーバッファ 定義 Seek/recalibrateステータス ドライブモータステータス モータオンタイム ディスケット・ステータス: ビット 定義 7 1 =ドライブが準備できていない 6 1 =シークエラーが発生 5 1 =ディスケットコントローラ失敗 4-0 エラーコード: 01h =不当なファンクション要求 02h =アドレスマークが見つからない 03h =書込み保護エラー 04h =セクタが見つからない 06h =ディスケット変更ライン・アクティブ 08h =操作中にDMAオーバランした 09h =データバウンダリーエラー(64k) 0Ch =メディアタイプが見つからない 10h =回復できないECCかCRCエラー 20h =ジェネラルコントローラ停止 40h =シーク操作の失敗 80h =デバイス応答なし 制御装置ステータス - 116 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド ビデオデータ領域 オフセット サイズ 49 1 4A 2 4C 2 4E 2 50 10 60 2 62 1 63 2 65 1 66 1 定義 ビデオ・モード ビデオ・カラム ビデオの長さ ビデオスタート カーソル位置 カーソル・サイズ アクティブページ 6845のアドレス モードレジスタ値 ビデオ・パレット 拡張作業領域 オフセット 67 6B 定義 ROMチェック・アドレス CPUレート制御 サイズ 4 1 タイマ・データ領域 オフセット サイズ 6C 2 6E 2 70 1 定義 タイマカウント(Low Word) タイマカウント(High Word) タイマ・オーバフローバイト システムデータ領域 オフセット サイズ 71 1 72 2 定義 押されたフラグをブレイクする ソフトリセット・フラグ 固定ディスク・データ領域 オフセット サイズ 74 1 75 1 76 1 77 1 定義 Fdiskステータス 固定ディスクの数 固定ディスク制御 予約 シリアル、パラレル タイムアウト・カウンタ オフセット サイズ 定義 78 4 Lpt1-4タイムアウト値 7C 4 Com1-4タイムアウト値 拡張キーボード・データ領域 オフセット サイズ 定義 80 2 キーバッファスタート 82 2 キーバッファエンド EGA/VGAデータ領域 オフセット サイズ 84 1 85 2 87 1 88 1 89 1 8A 1 定義 ビデオ列の数 1文字あたりのバイト数 EGAステータスA EGAステータスB VGAステータスA ディスプレイCombination Codeインデックス - 117 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 拡張ディスケット領域 オフセット サイズ 8B 1 定義 最後のディスケット・データレート 拡張固定ディスク領域 オフセット サイズ 8C 1 8D 1 8E 1 定義 Fdiskステータス Fdiskエラー値 Fdisk割り込みフラグ 追加拡張ディスケット領域 オフセット サイズ 定義 8F 1 フロッピー・インフォメーション・ニブル 90 4 フロッピーステータス情報 94 2 フロッピー・シリンダ番号 追加拡張キーボード・データ領域 オフセット サイズ 定義 96 1 キーボード制御 97 1 キーボード・フラグ2: ビット 定義 0 スクロールLED点灯 1 NumLED点灯 2 CapsLED点灯 4 Ackコードを受信 5 受信後再送 6 アップデートされるLED 7 キーボード・エラー リアルタイムクロック部 オフセット サイズ 98 4 9C 2 9E 2 A0 1 定義 RTCユーザ・フラグ RTCの時間(Low Word) RTCの時間の(High Word) RTCウェイトフラグ ネットワーク・データ領域 オフセット サイズ 定義 A1 7 ネットワーク作業領域 拡張EGA/VGAデータ領域 オフセット サイズ 定義 A8 4 EGA/VGA環境ポインタ その他 AC-FF 100 Interface Corporation 1 予約 プリントスクリーン・フラグ - 118 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 8.2 拡張BIOSデータ領域 オフセット 00h 01h 21h 25h サイズ 1 33 4 1 26h 1 27h 2 定義 KB単位のEBDAのサイズ 予約 デバイス・ルーチンへのポインタ ポインタ情報の最初のバイト: ビット 定義 4 ポインタ・エラー 5 ポインタ認識 6 要求を再送 7 進行中のコマンド ポインタ情報の2番目のバイト ビット 定義 6 許容ポインタ・デバイス 7 ポインタ外部装置 ポインタデータ・パッケージ - 119 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第9章 割り込みベクタ 9.1 割り込みベクタ 以下のテーブルはATシステム割り込みベクタについて説明します。ステータスは、BIOSが割り込 みをサポートするかどうかを示します。 INT 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 40 41 46 70 71 72 73 74 75 76 77 Description Divide by zero Single step Non-Maskable interrupt Breakpoint Overflow Print Screen Interrupt 286 LoadAll Handler Reserved IRQ0 - System Timer Interrupt IRQ1 - Keyboard Interrupt IRQ2 – Reserved IRQ3 - COM2: Interrupt IRQ4 - COM1: Interrupt IRQ5 - LPT2: Interrupt IRQ6 - Floppy Disk Interrupt IRQ7 - LPT1: Interrupt BIOS Video Interface BIOS Equipment Check BIOS Memory Request BIOS Fixed Disk/Diskette Interface BIOS Serial Interface BIOS System Functions Interface BIOS Keyboard Interface BIOS Parallel Printer Interface BIOS Secondary Boot Request BIOS Primary Boot Request BIOS System Timer Interface BIOS Control Break Interrupt BIOS User System Timer Interrupt BIOS Video Init Parameters BIOS Diskette Parameters BIOS Video Graphic Characters BIOS Diskette (when fixed disk present) BIOS Fixed disk 0 parameters BIOS Fixed disk 1 parameters IRQ8 - Real time clock interrupt IRQ9 - IRQ2 redirection IRQ10 - Reserved Not IRQ11 - Reserved Not IRQ12 - Available/PS/2 Mouse IRQ13 - Math coprocessor IRQ14 - Primary IDE HDD IRQ15 - Available/Secondary IDE HDD Interface Corporation - 120 - Status Not Supported Not Supported Supported Not Supported Not Supported Supported Supported Not Supported Supported Supported Not Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Supported Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 第10章 情報サービス 10.1 情報の入手方法 弊社Web siteでは様々なサービスを提供しております。 日本: www.interface.co.jp 海外: www.interface-world.com ダウンロードするためには、ユーザID登録が必要になります。 製品情報 サポート 購入方法 ダウンロード 新製品情報, 製品の個別仕様, セレクションガイド オンラインQA, 製品修理, 貸出サービス, FAQ, 用語集 販売店一覧, 通信販売 マニュアル, ソフトウェア, チュートリアル(入門書) ※ Web siteの内容については、随時更新していますので、上記と異なる場合があります。 10.2 製品使用登録 弊社Web siteより製品使用登録を行うことで、保証期間が最大2年延長になります。 製品到着後1年以内に登録してください。 http://www.interface.co.jp/usr_register/prdc_regist.asp 製品の保証期間は、Web siteの製品保証照会システムにて確認できます。 http://www.interface.co.jp/support/warranty/warranty_info.asp 10.3 FAQ(よく寄せられる質問) 弊社Web site上に製品のFAQを掲載しています。 製品に関する質問等がございましたら、FAQを参照してください。 10.4 組み込み済みOSの情報 Intel(R) Atom(TM) プロセッサ搭載 DOS System(日本語環境モデル)は、IBM PC DOS 2000 Preload Packageを組み込んでいます。 - 121 - Interface Corporation Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド お知らせ ■USBポートの使用について USB機器を接続すると、USB機器から優先度の高い割り込みが発生し、インタフェースモジュー ルのリアルタイム性が低下する場合があります。メンテナンス時を除き、BIOSの「Legacy USB Support」を無効に設定することを推奨します。 Interface Corporation - 122 - Intel(R) Atom(TM) プロセッサ搭載 Interface DOS System(日本語環境モデル) システム構築ガイド 改訂履歴 Ver. 1.0 年 月 2014年2月 改 訂 内 容 新規作成 このマニュアルは、製品の改良その他により将来予告なく改訂しますので、予めご了承ください。 - 123 - Interface Corporation 補償について ●本製品(ハードウェア, ソフトウェア)のシステム組み込み, 使用、ならびに本製品から得られる結果に関する一切のリス クについては、本製品の使用者に帰属するものとします。 ●本製品に含まれるバグ、あるいは本製品の供給(納期遅延), 性能、もしくは使用に起因する付帯的損害もしくは間接的損 害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する改良(正常に動作する)、代品交換までとし、 金銭面での賠償の責任は一切負わないものとしますので、予めご了承ください。 ●本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊社は一切責任を負いかね ます。また、弊社は本製品に関し、海外での保守サービスおよび技術サポート等は行っておりません。 保証について ●弊社の保証規定によります。 ソフトウェア, 消耗品(バッテリ等)は除きます。 注)保証期間は弊社Web siteでシリアル番号を入力することにより、ご確認できます。 インターネットに接続できない方は、カスタマーサポートセンタまでご連絡ください。 ●保証期間内は、原則として無償修理とします。(送料はお客様のご負担を条件とさせて頂きます。) ただし、保証期間内であっても下記の場合は有償修理となります。 ①お客様による輸送, 移動時の落下, 衝突等、お客様のお取扱いが適正でないために生じた故障, 損傷の場合および消耗品 の交換 ②火災, 地震, 水害等の天災および異常電圧による故障, 損傷の場合 ③弊社製品に接続している弊社指定機器以外の機器の故障に起因する故障の場合 ④弊社以外で修理, 改造した場合 ⑤弊社製品の説明書に記載された使用方法および注意事項に反するお取扱いによって生じた故障の場合 ●保証は、本製品が日本国内で使用される場合に限り有効です。 ●保証期間を過ぎた場合には、全て有償修理扱いとなります。 再修理の保証は、修理完了後6ヶ月以内で同一部品が故障した場合のみです。(ただし、修理が可能な箇所であることと します。)その場合は、前回の修理報告書を必ず添付してください。添付されていない場合は新規修理の扱いとなります。 輸出する際の注意事項 本製品は、外国為替および外国貿易法の規定により、戦略物資等輸出規制品に該当します。 従って、日本国外に持ち出す際には、日本国政府の輸出許可申請等必要な手続きをお取りください。 ■サポート体制 本製品についてのお問い合わせは、カスタマーサポートセンタセンタで承ります。弊社Web siteのオンラインQA(「サポー ト」→「カスタマーサポートセンタ」をクリック)、E-mailまたはフリーダイヤルをご利用ください。 ■修理・メンテナンス体制 故障した場合は弊社Web siteのオンライン修理依頼、もしくは修理依頼書を弊社Web siteからダウンロードし必要事項を記 入の上、故障品と一緒に下記までお送りください。※ 送料はお客様にてご負担願います。 ■お問い合わせ先 カスタマーサポート センタ 故障品お問い合わせ 故障品の送付 0120-447213 FAX 0120-458257 TEL (祝日および弊社休業日を除く月∼金 AM9:00∼PM5:00迄) E-mail [email protected] カスタマーサポートセンタ TEL(082)262-1630 FAX(082)262-1552 (祝日および弊社休業日を除く月∼金 AM9:00∼PM5:00迄) 〒873-0231 大分県国東市安岐町下原1428 株式会社インタフェース 大分事業所 修理受付係 MDH-J0006 Ver. 1.0 Vol. 1/1