PIC初期設定について
PIC初期化にはICWコマンド0~4
OCWコマンド0~2(?)
これらを使用し初期化を進めると思いますが
このポートではICW1コマンドを使っているのか?
このポートではOCW2コマンドを使っているのか?
という区別はどのようにされているのですか?
例えば・・・
割込み要求レジスタ・・・割り込み中か判断するレジスタ
割込みマスクレジスタ・・・割り込み許可するか判断するレジスタ
それぞれOCW1コマンド、EOIコマンドで初期化するそうですが
ポートは同じですよね?
ICW1コマンドが来たら次はICW2コマンドが来るはずだという細かいルールがあると書かれていますがそのルールを具体的に知りたいです。
30日で作るOSでは
マスタPIC ICW1
マスタPIC ICW2
マスタPIC ICW3
マスタPIC ICW4
スレーブPIC ICW1
スレーブPIC ICW2
スレーブPIC ICW3
スレーブPIC ICW4
マスタPIC OCW1
スレーブPIC OCW1
0から作るOSでは
マスタPIC ICW1
スレーブPIC ICW1
マスタPIC ICW2
スレーブPIC ICW2
マスタPIC ICW3
スレーブPIC ICW3
マスタPIC ICW4
スレーブPIC ICW4
マスタPIC OCW1
スレーブPIC OCW1
といった手順で初期化されていました。
ここの詳しいルールを知りたいです。
参考サイト・資料などでもいいのでお願いします。
C
1void pic_init(void) 2{ 3 /* マスタPICの初期化 */ 4 io_write(MPIC_ICW1_ADDR, 0x11); 5 io_write(MPIC_ICW2_ADDR, INTR_NO_BASE_MASTER); 6 io_write(MPIC_ICW3_ADDR, 0x04); 7 io_write(MPIC_ICW4_ADDR, 0x01); 8 io_write(MPIC_OCW1_ADDR, 0xff); 9 10 /* スレーブPICの初期化 */ 11 io_write(SPIC_ICW1_ADDR, 0x11); 12 io_write(SPIC_ICW2_ADDR, INTR_NO_BASE_SLAVE); 13 io_write(SPIC_ICW3_ADDR, 0x02); 14 io_write(SPIC_ICW4_ADDR, 0x01); 15 io_write(SPIC_OCW1_ADDR, 0xff); 16}
こっちではまた順番が違います。
回答2件
あなたの回答
tips
プレビュー