[OS만들기] day8: PIC - 설명(1)

PIC(Programmable Interrupt Controller)의 초기화 - 설명(1)

오늘의 결과물

설명

// PICM => master, PICS => slave
outportb(0x20, 0x11); /* write ICW1 to PICM, we are gonna write commands to PICM */
outportb(0xA0, 0x11); /* write ICW1 to PICS, we are gonna write commands to PICS */

outportb(0x21, 0x20); /* remap PICM to 0x20 (32 decimal) */
outportb(0xA1, 0x28); /* remap PICS to 0x28 (40 decimal) */

outportb(0x21, 0x04); /* IRQ2 -> connection to slave */ 
outportb(0xA1, 0x02);

outportb(0x21, 0x01); /* write ICW4 to PICM, we are gonna write commands to PICM */
outportb(0xA1, 0x01); /* write ICW4 to PICS, we are gonna write commands to PICS */

outportb(0x21, 0x0); /* enable all IRQs on PICM */
outportb(0xA1, 0x0); /* enable all IRQs on PICS */
  • PIC 하드웨어
  • 하드웨어 인터럽트는 8259A라는 칩을 통해서 이뤄집니다. 이 8259A를 보통 PIC라고 부릅니다.
  • 이 PIC도 하나의 컨트롤러의 개념을 가지고 있어서 조그마한 프로그램을 넣어 조작할 수 있습니다. 이 프로그램에는 초기화, 여러 개의 PIC 연결 방법, 인터럽트를 받아들이는 방법, 받아들인 인터럽트에 대해 CPU에게 알려주는 방법 등이 기재되어 있어야 합니다.
  • 하나의 PIC는 8개의 IRQ 핀을 가지고 있습니다.
  • PIC 두 개가 마스터, 슬레이브로 연결되어 있고, 마스터의 INT 핀이 CPU의 INT핀으로 연결되어 있습니다. 슬레이브의 INT 핀은 마스터의 3번째 IRQ 핀인 2번 핀에 연결되어 있습니다. 그리고 두 PIC 모두 /INTA 핀이 CPU의 /INTA 핀에 연결되어 있습니다.

새롭게 알게된 어셈블리 명령어

  • out <source i/o port> <data source>: 데이터를 i/o PORT로 카피합니다.

https://c9x.me/x86/html/file_module_x86_id_222.html

오늘 한 것

P. 127 까지 학습

댓글

Designed by JB FACTORY