インテルのソフトウェア開発者マニュアルでは、割り込みベクトル 32 ~ 255 は通常、外部 IO デバイス用にユーザー定義されていると書かれています。私のシステム プログラミング クラスでは、単純なデバイス ドライバーを開発する必要があります。私の質問は、特定のデバイスに使用する特定の割り込みベクトルを定義するにはどうすればよいですか? これはBIOSで行われますか?
注: 私たちは単純なオペレーティング システムを開発しているので、私の状況は非常に特殊ですが、最終的には x86 システムでこれがどのように行われるかを理解する必要があります。現在、私たちのシステムは、32 を超えるいくつかの割り込みベクトルがシリアル ポートやキーボードなどのデバイスに割り当てられるように設定されています。Intel 82801EB ICH5 IO コントローラのデータシート、特に 8259 PIC に関するセクションを読むと、IRQ15 がセカンダリ IDE チャネルであると書かれています。それは最終的にどのようにして割り込みベクトルとしてスタックに置かれるのでしょうか?
この質問が意味をなさないほど混乱しているかもしれませんので、事前にお詫び申し上げます。
編集: したがって、システム プログラミング クラスには非常に単純な OS があり、ベクトル番号が指定された特定の割り込みを処理するために ISR をインストールするためのカーネル ルーチンがあります。前四半期のクラスで、教授は、キーボードをベクトル番号 0x2c などとして定義するヘッダー ファイルを提供してくれました。カーネル ルーチンを使用して、プライマリまたはセカンダリ IDE チャネル割り込みをさまざまな ISR にマップする方法を見つけようとしています。今のところ、未使用のすべての割り込みベクトルには、割り込みが発生した場合にメッセージを出力するデフォルトのハンドラーがあるため、現時点では IDE 割り込みはオンになっていませんが、それは別の問題です。