...

Intel Atom搭載 Interface DOS System(日本語環境モデル)

by user

on
Category: Documents
51

views

Report

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
Fly UP