質問

にインテル®ソフトウェア開発マニュアルという割り込みベクトル32-255は、通常、ユーザー定義のための外部IOデバイス私のシステムのprogrammingのclass Iを展開しなければならな簡単なデバイスドライバーです。私の質問は、どのように定義しま特定の割り込みベクターに使用する特定のデバイス?このBIOS?

注意:開発プ経営システムでの自分の状況はかなり特定し、最後にはいかこう、x86ます。現在のシステムを設けて数割り込みベクトル上記の32の割り当てるデバイスにシリアルポートをする必要があります。読書のデータシートのインテル82801EB ICH5IOコントローラー、特にその部に関する8259みというIRQ15の二次IDEます。どうすることができ、スタックとして割り込みベクトル?

私はだんにこの問題なので、会員の方はログインしてくだい。

編集:弊社のシステムのjavaのクラスはシンプルなOSは、カーネルのルーチン設置のためのGfpを扱う特定の障害のベクター。我々のクラスの最終四半期に教授したヘッダファイル定義のキーボードとしてのベクトル数0x2cか何かに似ています。ってどのように地図を一次、二次IDEチャネル割り込みの様々なGfpを用いてカーネルがありました。今は、すべての未使用の割り込みベクターのデフォルトのハンドラがメッセージの印刷の場合、割り込みが発生したのでIDE障害なものがある別の質問です。

役に立ちましたか?

解決 5

まあ、私は、私たちのサポートコード、特にPICの初期化ルーチンの中で答えを見つけたように見えます。次のコードIRQラインは、それぞれ、マスタとスレーブのPICのためのIDTのオフセット20Hおよび28Hにマッピングされている。

/* ICW2: master offset of 20 in the IDT, slave offset of 28 */

__outb( PIC_MASTER_IMR_PORT, 0x20 );
__outb( PIC_SLAVE_IMR_PORT, 0x28 );

このキーボードはベクタ番号2cにマッピングされた一次および二次チャネルは、それぞれ、図2Eおよび図2Fにマッピングされることを意味します。皆さんの中には、おそらくより良い答えが、私はより良い質問をしていた私を与えている可能性がありますが、私はとにかく助けに感謝!

82801EB ICH5のデータシートの表45は、8259のIRQラインを詳述し、私のOSにマスターは、単純にオフセット20Hでロードされ、スレーブは28Hである。

ありがとうございます。

他のヒント

あなたは、特定のデバイスのIRQのをマッピングするためにPICの(プログラマブル割り込みコントローラ)をプログラムすることができます。

x86では、デイジーチェーン接続IRQ0-IRQ17を与えている2 PICのがあります。シグナリングIRQ0-7が第8259.最初の信号CPUによって8259とIRQ8-15によって管理され、マスタが第二の(スレーブ)と、である第一

は、IDT(割り込み記述子テーブル)はISRのアドレス(割り込みサービスルーチン)に割り込みをマッピングします。割り込みは、直接INT命令(ソフトウェアトラップ)を上昇させることができる。

たとえば、0x80の割り込み高めるために、INT 0x80を実行します。

は0x80、mov [0x80*4], int_80_handlerを処理するには。 32ビットアーキテクチャを仮定し、int_80_handler関数のアドレスは、現在IDTにおける0x80'th場所に格納されます。


あなたはこれらの有用を見つけます http://en.wikipedia.org/wiki/Intel_8259
http://en.wikipedia.org/wiki/Interrupt_Handler
http://en.wikipedia.org/wiki/Interrupt
http://en.wikipedia.org/wiki/Interrupt_descriptor_tableする

私はPCの割り込みコントローラは15 IRQラインを持っていることを思い出し:これがずれることがありますので、私はこのようなものを扱ってきたので、

これは、しばらくしています。特定の隣接のx86へのこれらのマップは、ベクトルを中断します。ペリフェラルがIRQラインをトリガする際に、PICは、CPUを中断し、対応するINT命令が実行されたかのようにジャンプしたベクトルを伝えます。いくつかのIRQは、特定の周辺機器にハードコードされているが、私は、PCIデバイスはIRQをし、いくつかの他のリソースのためのOSと交渉することを信じている(レガシーISA PnPデバイスがそうであるように)。

私はあなたが何を意味理解していない「ことは、最終的に、割り込みベクトルとしてスタックに置かれるだろうか?」

が可能な方法装置を割り込み:

  1. 利用のプラグインと遊びまたはPci。場合はこの限りではありませんのBIOSを呼おperipherical装置をお願いする。その後、ドライバーできる列挙のプラグ-アンド-プレイデバイス、検索の対応デバイスのハードウェアからの割り込みの装置です。

  2. まだあまり知られていなかった行えるようになってい早期日:だけを使用していた.追加ディップスイッチ装置そのものを選択することができ間割り込みを行う.の資源配分の手のユーザーです。ユーザーまたは割り込み多数のドライバ負荷時のなかのどこかにあるのですね。

現在どのようにフックの割り込み:ることができるOSのモードのx86実行す。のための裸裸骨システムをクエリする事ができIDT(割り込み記述子のテーブルを介して特ました。またIDTできる保持するビズキーを全て取得し、pokeのアドレスの割り込みハンドラのスロットに実装されていません。リアルモードがわからないのでわなくなった。

ていれば少しリアルタイムOSやOSのように、これからありましたがカーネル機能のハードにおまかせください。

今思い出すと、

ベクタテーブルには、特定の割り込みが発生したときに呼び出すルーチンを指すメモリ空間の始まりでもあります。私はここであまりにも低レベル(旧x86アセンブリプログラマ)で打ってもよいが、基本レベルでは、あなたのベクトルは、あなたのルーチンが呼び出され、そのテーブルに設置され得ます。私はあなたに実際の呼び出しを与えることができないので、私と私の古い基準物質のいずれかを持っていませんでしたが、公定法は、BIOSの外で動作している場合、私は驚かれることと思います。

のGUIのこれらの日、私は割り込みの共有とすべてが良いものを可能にする他、より適切な方法は、そこにあると確信しています。

EDIT:それの多くを無視し、私はちょうどあなたが16割り込み、ハードウェア割り込みの外にあるその上で見ていることを見てきました。ハードウェアのいずれかの興味深いビットが(16日は、コントローラ間のカスケードである)ので、私は今までに最初の15件のIRQを扱っている空間にあった前に、私は離れて、プログラミングのそのレベルから移動しました。私はそれが他の誰にも関心があります念のためにそれを残している:)

INT 21H / AH = 25H - セット割り込みベクタ。 入力:AL =割り込み数。 DS:DX - >新しい割り込みハンドラ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top