(PIC)8259A
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* PIC 8259Aのページ [#u6487e56]
-PICは「Programmable Interrupt Controller」の略
-つまり割り込みコントローラ。IRQ周りの大事なところ。
-AT互換機、TOWNS、PC-9801とも、2個ずつ入っている(98には...
-たいていこれらの機種にはIRQ0~IRQ15の16種(厳密には15種...
-基本的にPICは、8つの割り込み信号を監視して1つの信号線に...
CPU ---1本--- PIC(マスタ:IRQ0-7)
+------ IRQ
+------ IRQ
+------ IRQ
+------------ PIC(スレーブ:IRQ8-15)
+------ IRQ
+------ IRQ
+------ IRQ
+------ IRQ
(註)図の簡略化のため、PICからは4本のIRQ線しか書いて...
-このような仕組みのため、マスタに直接つながっている割り込...
* 関係するI/Oポートなど [#y73bdf76]
*** AT互換機 [#l114d49d]
|アドレス(hex)|wide|R/W|デバイス|説明|備考|
|0020|byte|R|PIC-0|IRR/ISR||
|0020|byte|W|PIC-0|OCW2/OCW3/ICW1||
|0021|byte|R|PIC-0|IMR||
|0021|byte|W|PIC-0|OCW1/ICW2/ICW3/ICW4||
|00A0|byte|R|PIC-1|IRR/ISR||
|00A0|byte|W|PIC-1|OCW2/OCW3/ICW1||
|00A1|byte|R|PIC-1|IMR||
|00A1|byte|W|PIC-1|OCW1/ICW2/ICW3/ICW4||
-PIC-0がマスタ(IRQ0-7)、PIC-1がスレーブ(IRQ8-15)
-基本的にエッジトリガモードで使用するように設計されている...
-割り込み番号表
|IRQ0|タイマ|
|IRQ1|キーボード|
|IRQ2|スレーブとのカスケード接続に使用|
|IRQ3|シリアルポート(COM2)|
|IRQ4|シリアルポート(COM1)|
|IRQ5|主にISA/PCI拡張デバイス用|
|IRQ6|FDC|
|IRQ7|パラレルポート|
|IRQ8|RTC|
|IRQ9|主にISA/PCI拡張デバイス用|
|IRQ10|主にISA/PCI拡張デバイス用|
|IRQ12|マウス|
|IRQ13|FPU(?)|
|IRQ14|ATA-0|
|IRQ15|ATA-1|
--DOS/BIOSでは、IRQ0~7は INT 0x08~0x0f に割り当て。
--DOS/BIOSでは、IRQ8~15は INT 0x70~0x77 に割り当て。
--(まだ未完成)
*** TOWNS [#d69d78a2]
|アドレス(hex)|wide|R/W|デバイス|説明|備考|
|0000|byte|R|PIC-0|IRR/ISR||
|0000|byte|W|PIC-0|OCW2/OCW3/ICW1||
|0002|byte|R|PIC-0|IMR||
|0002|byte|W|PIC-0|OCW1/ICW2/ICW3/ICW4||
|0010|byte|R|PIC-1|IRR/ISR||
|0010|byte|W|PIC-1|OCW2/OCW3/ICW1||
|0012|byte|R|PIC-1|IMR||
|0012|byte|W|PIC-1|OCW1/ICW2/ICW3/ICW4||
-PIC-0がマスタ(IRQ0-7)、PIC-1がスレーブ(IRQ8-15)
-基本的にレベルトリガモードで使用するように設計されている...
-割り込み番号表
|IRQ0|タイマ|
|IRQ1|キーボード|
|IRQ2|RS-232C|
|IRQ3|拡張RS-232C|
|IRQ4|拡張ボード用|
|IRQ5|拡張ボード用|
|IRQ6|FDC|
|IRQ7|スレーブとのカスケード接続に使用|
|IRQ8|SCSI|
|IRQ9|内蔵CD-ROMドライブコントローラ|
|IRQ10|拡張ボード用|
|IRQ11|VSYNC|
|IRQ12|プリンタ|
|IRQ13|FM音源&PCM音源(註:レベルトリガなので割り込みが...
|IRQ14|拡張ボード用|
|IRQ15|リザーブ|
* 概要 [#nb4cfb4a]
-IRR:インタラプトリクエストレジスタ
--IRQピンの状態を表す。ポートを読んだときに、IRRになるかI...
--1になっているビットは、現在要求が来ている(もしくは処理...
-ISR:インサービスレジスタ
--現在処理中の割り込みがどれであるかを示す。ポートを読ん...
--1になっているビットは、現在処理中の割り込み。処理中とい...
-IMR:インタラプトマスクレジスタ
--これが1になっている割り込みは、IRRが1になっていても、反...
---スペシャルマスクモード(OCW3参照)になっているときは、...
-OCW1:動作コマンドワード1
--書き込んだ8ビットがそのままIMRに転送される。
-OCW2:動作コマンドワード2
--''主に、割り込み処理終了をPICに伝える。これをしないと次...
---たぶんアセンブラ初心者は、なんて不便な仕様なんだ、CPU...
---割り込み終了をPICに送るのが面倒だという人は自動EOIモー...
--bit0-2:(終了させたい)割り込み番号
--bit3-4:常に00:むしろここが00だからOCW2であるとPICは判...
--bit5-7:コマンド
---000:自動EOIモードにおいて、割り込み優先順位の回転モー...
---001:通常モードにおいて、現在処理中の最優先度の割り込...
---010:何もしない
---011:通常モードにおいて、指定された割り込みを終了させ...
---100:自動EOIモードにおいて、割り込み優先順位の回転モー...
---101:通常モードにおいて、現在処理中の最優先度の割り込...
---110:もし割り込み優先順位の回転モードがオフになってい...
---111:通常モードにおいて、指定された割り込みを終了させ...
--割り込みの優先順位について
---2つの割り込みが同時に来たとき(これはありえないと思う...
---優先順位には、どの割り込みがどの割り込みに対して優先す...
---非回転モードの場合、割り込み番号が小さいほど優先順位は...
う。
---一方、もし高優先度の割り込みが集中してしまうと、順位の...
--割り込み終了を受け付けると、対応する割り込みのISRとIRR...
---割り込み終了コマンドでISRがクリアされるのは間違いない...
-OCW3:動作コマンドワード2
--その他の簡単な設定を行う。
--bit0-1:IRR/ISR読み出しポートの設定
---00:設定は変更しない
---01:設定は変更しない
---10:IRRに設定
---11:ISRに設定
--bit2:PICの動作モード(0:通常、1:ポールコマンドモード)
---ポールコマンドモードとは、PICがINT命令を一切発行しない...
--bit3-4:常に01:むしろここが01だからOCW3であるとPICは判...
--bit5-6:スペシャルマスクモードに関する設定
---00:設定は変更しない
---01:設定は変更しない
---10:通常モード(IMRはIRRに対するマスクとして働く)
---11:スペシャルマスクモード(IMRはISRに対するマスクとし...
---スペシャルマスクモードになっているときは、IMRの設定はI...
---スペシャルマスクモードでは、IMRは割り込み優先順位解決...
---おそらく、スペシャルマスクモードでIMRを0xffにすると、...
--bit7:常に0。
-ICW1:初期化コマンドワード1
--PICを初期化して、設定をやり直す。このコマンドを発行する...
--このコマンドを書いた時点で、IRRとISRはゼロクリアされ、...
--(まだ書いてない)
-ICW2:初期化コマンドワード2
--(まだ書いてない)
-ICW3:初期化コマンドワード3
--(まだ書いてない)
-ICW4:初期化コマンドワード4
--(まだ書いてない)
* ものぐさなあなたのために [#b09f8344]
-毎度の、超簡潔な説明です。要するに、どうすればいいのよ、...
-とにかく割り込み処理が終わったとPICに通知したい。
--IRQ0-7の場合:
AL = 割り込み番号 + 0x60; OUT(0x20, AL);
--IRQ8-15の場合:
AL = (割り込み番号 - 8) + 0x60; OUT(0xa0, AL); AL = 0x62...
---ただしこの方法を使う場合、IRQ8-15の割り込み処理中に他...
---他の割り込みを受け付けているかもしれないときにも対応し...
* こめんと欄 [#z8dea157]
-PICはなんとかつかえそうなのですが、APICの使い方が謎・・ ...
-それは僕もまだわかりませんねえ。それはAPICを活用している...
-IRQ0をポート0x60に設定し、キーボード割り込みを0x61で受け...
-OS勉強中さんへ。このサイト内の(AT)keyboardに書いてありま...
-<br> -- [[名無しさん]] SIZE(10){2005-12-22 (木) 17:01:54}
-キーボード割り込みでは、mov al,0x61;out 0x20,alだけでな...
-キーボードバッファからデータを取り出すのはin al,0x60でし...
-キーコードを受け取らないうちに入力がきても、割り込みは起...
-ICW1が実行したら絶対に ICW2 -> ICW3 -> ICW4 っと実行しな...
#comment
終了行:
* PIC 8259Aのページ [#u6487e56]
-PICは「Programmable Interrupt Controller」の略
-つまり割り込みコントローラ。IRQ周りの大事なところ。
-AT互換機、TOWNS、PC-9801とも、2個ずつ入っている(98には...
-たいていこれらの機種にはIRQ0~IRQ15の16種(厳密には15種...
-基本的にPICは、8つの割り込み信号を監視して1つの信号線に...
CPU ---1本--- PIC(マスタ:IRQ0-7)
+------ IRQ
+------ IRQ
+------ IRQ
+------------ PIC(スレーブ:IRQ8-15)
+------ IRQ
+------ IRQ
+------ IRQ
+------ IRQ
(註)図の簡略化のため、PICからは4本のIRQ線しか書いて...
-このような仕組みのため、マスタに直接つながっている割り込...
* 関係するI/Oポートなど [#y73bdf76]
*** AT互換機 [#l114d49d]
|アドレス(hex)|wide|R/W|デバイス|説明|備考|
|0020|byte|R|PIC-0|IRR/ISR||
|0020|byte|W|PIC-0|OCW2/OCW3/ICW1||
|0021|byte|R|PIC-0|IMR||
|0021|byte|W|PIC-0|OCW1/ICW2/ICW3/ICW4||
|00A0|byte|R|PIC-1|IRR/ISR||
|00A0|byte|W|PIC-1|OCW2/OCW3/ICW1||
|00A1|byte|R|PIC-1|IMR||
|00A1|byte|W|PIC-1|OCW1/ICW2/ICW3/ICW4||
-PIC-0がマスタ(IRQ0-7)、PIC-1がスレーブ(IRQ8-15)
-基本的にエッジトリガモードで使用するように設計されている...
-割り込み番号表
|IRQ0|タイマ|
|IRQ1|キーボード|
|IRQ2|スレーブとのカスケード接続に使用|
|IRQ3|シリアルポート(COM2)|
|IRQ4|シリアルポート(COM1)|
|IRQ5|主にISA/PCI拡張デバイス用|
|IRQ6|FDC|
|IRQ7|パラレルポート|
|IRQ8|RTC|
|IRQ9|主にISA/PCI拡張デバイス用|
|IRQ10|主にISA/PCI拡張デバイス用|
|IRQ12|マウス|
|IRQ13|FPU(?)|
|IRQ14|ATA-0|
|IRQ15|ATA-1|
--DOS/BIOSでは、IRQ0~7は INT 0x08~0x0f に割り当て。
--DOS/BIOSでは、IRQ8~15は INT 0x70~0x77 に割り当て。
--(まだ未完成)
*** TOWNS [#d69d78a2]
|アドレス(hex)|wide|R/W|デバイス|説明|備考|
|0000|byte|R|PIC-0|IRR/ISR||
|0000|byte|W|PIC-0|OCW2/OCW3/ICW1||
|0002|byte|R|PIC-0|IMR||
|0002|byte|W|PIC-0|OCW1/ICW2/ICW3/ICW4||
|0010|byte|R|PIC-1|IRR/ISR||
|0010|byte|W|PIC-1|OCW2/OCW3/ICW1||
|0012|byte|R|PIC-1|IMR||
|0012|byte|W|PIC-1|OCW1/ICW2/ICW3/ICW4||
-PIC-0がマスタ(IRQ0-7)、PIC-1がスレーブ(IRQ8-15)
-基本的にレベルトリガモードで使用するように設計されている...
-割り込み番号表
|IRQ0|タイマ|
|IRQ1|キーボード|
|IRQ2|RS-232C|
|IRQ3|拡張RS-232C|
|IRQ4|拡張ボード用|
|IRQ5|拡張ボード用|
|IRQ6|FDC|
|IRQ7|スレーブとのカスケード接続に使用|
|IRQ8|SCSI|
|IRQ9|内蔵CD-ROMドライブコントローラ|
|IRQ10|拡張ボード用|
|IRQ11|VSYNC|
|IRQ12|プリンタ|
|IRQ13|FM音源&PCM音源(註:レベルトリガなので割り込みが...
|IRQ14|拡張ボード用|
|IRQ15|リザーブ|
* 概要 [#nb4cfb4a]
-IRR:インタラプトリクエストレジスタ
--IRQピンの状態を表す。ポートを読んだときに、IRRになるかI...
--1になっているビットは、現在要求が来ている(もしくは処理...
-ISR:インサービスレジスタ
--現在処理中の割り込みがどれであるかを示す。ポートを読ん...
--1になっているビットは、現在処理中の割り込み。処理中とい...
-IMR:インタラプトマスクレジスタ
--これが1になっている割り込みは、IRRが1になっていても、反...
---スペシャルマスクモード(OCW3参照)になっているときは、...
-OCW1:動作コマンドワード1
--書き込んだ8ビットがそのままIMRに転送される。
-OCW2:動作コマンドワード2
--''主に、割り込み処理終了をPICに伝える。これをしないと次...
---たぶんアセンブラ初心者は、なんて不便な仕様なんだ、CPU...
---割り込み終了をPICに送るのが面倒だという人は自動EOIモー...
--bit0-2:(終了させたい)割り込み番号
--bit3-4:常に00:むしろここが00だからOCW2であるとPICは判...
--bit5-7:コマンド
---000:自動EOIモードにおいて、割り込み優先順位の回転モー...
---001:通常モードにおいて、現在処理中の最優先度の割り込...
---010:何もしない
---011:通常モードにおいて、指定された割り込みを終了させ...
---100:自動EOIモードにおいて、割り込み優先順位の回転モー...
---101:通常モードにおいて、現在処理中の最優先度の割り込...
---110:もし割り込み優先順位の回転モードがオフになってい...
---111:通常モードにおいて、指定された割り込みを終了させ...
--割り込みの優先順位について
---2つの割り込みが同時に来たとき(これはありえないと思う...
---優先順位には、どの割り込みがどの割り込みに対して優先す...
---非回転モードの場合、割り込み番号が小さいほど優先順位は...
う。
---一方、もし高優先度の割り込みが集中してしまうと、順位の...
--割り込み終了を受け付けると、対応する割り込みのISRとIRR...
---割り込み終了コマンドでISRがクリアされるのは間違いない...
-OCW3:動作コマンドワード2
--その他の簡単な設定を行う。
--bit0-1:IRR/ISR読み出しポートの設定
---00:設定は変更しない
---01:設定は変更しない
---10:IRRに設定
---11:ISRに設定
--bit2:PICの動作モード(0:通常、1:ポールコマンドモード)
---ポールコマンドモードとは、PICがINT命令を一切発行しない...
--bit3-4:常に01:むしろここが01だからOCW3であるとPICは判...
--bit5-6:スペシャルマスクモードに関する設定
---00:設定は変更しない
---01:設定は変更しない
---10:通常モード(IMRはIRRに対するマスクとして働く)
---11:スペシャルマスクモード(IMRはISRに対するマスクとし...
---スペシャルマスクモードになっているときは、IMRの設定はI...
---スペシャルマスクモードでは、IMRは割り込み優先順位解決...
---おそらく、スペシャルマスクモードでIMRを0xffにすると、...
--bit7:常に0。
-ICW1:初期化コマンドワード1
--PICを初期化して、設定をやり直す。このコマンドを発行する...
--このコマンドを書いた時点で、IRRとISRはゼロクリアされ、...
--(まだ書いてない)
-ICW2:初期化コマンドワード2
--(まだ書いてない)
-ICW3:初期化コマンドワード3
--(まだ書いてない)
-ICW4:初期化コマンドワード4
--(まだ書いてない)
* ものぐさなあなたのために [#b09f8344]
-毎度の、超簡潔な説明です。要するに、どうすればいいのよ、...
-とにかく割り込み処理が終わったとPICに通知したい。
--IRQ0-7の場合:
AL = 割り込み番号 + 0x60; OUT(0x20, AL);
--IRQ8-15の場合:
AL = (割り込み番号 - 8) + 0x60; OUT(0xa0, AL); AL = 0x62...
---ただしこの方法を使う場合、IRQ8-15の割り込み処理中に他...
---他の割り込みを受け付けているかもしれないときにも対応し...
* こめんと欄 [#z8dea157]
-PICはなんとかつかえそうなのですが、APICの使い方が謎・・ ...
-それは僕もまだわかりませんねえ。それはAPICを活用している...
-IRQ0をポート0x60に設定し、キーボード割り込みを0x61で受け...
-OS勉強中さんへ。このサイト内の(AT)keyboardに書いてありま...
-<br> -- [[名無しさん]] SIZE(10){2005-12-22 (木) 17:01:54}
-キーボード割り込みでは、mov al,0x61;out 0x20,alだけでな...
-キーボードバッファからデータを取り出すのはin al,0x60でし...
-キーコードを受け取らないうちに入力がきても、割り込みは起...
-ICW1が実行したら絶対に ICW2 -> ICW3 -> ICW4 っと実行しな...
#comment
ページ名: