ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
8259 Programmable Interrupt Controller

PIC 를 초기화 한다. 더 자세히 ...

+ 8259 Programmable Interrupt Controller에 대한 협력 다이어그램:

함수

void pic_init (void)
 PIC 초기화 더 자세히 ...
 
void timer_init (unsigned long frequency)
 타이머 초기화 더 자세히 ...
 

상세한 설명

PIC 를 초기화 한다.

날짜
2011-7-22
작성자
Sung-jae Park nices.nosp@m.j@ni.nosp@m.cesj..nosp@m.com

8259 Programmable Interrupt Controller 는 Timer, Keyboard 등과 같은 기본 외부 장치 들의 인터럽트를 제어하는 장치다. 이 장치 제어를 통해 CPU 로 전 달되는 Interrupt 의 방식을 변경하고 CPU 가 알맞은 Interrupt handler 를 IDT 에서 찾을 수 있게 한다.

아래 그림 처럼 두개의 PIC 가 Cascading 되어서 Interrupt 를 처리한다.

8259.png
Programmable Interrupt Controller (Block Diagram)
pic_interrupts.png
PIC Interrupts

PIC 를 통해 전달되는 Interrupt 들은 IRQ Remapping 을 통해 IDT 의 0x20 이 후 부터 하나씩 Mapping 시킨다.

x86 의 인터럽트 콘트롤러를 초기화 한다. x86 의 클럭은 초당 1193180 튄다. 1193180 / 100을 한 값을 divisor 값으로 설정해주면, 1 초에 100번 timer 인터럽트가 발생하게 된다. 즉 10 밀리초에 한번씩 인터럽트 핸들러를 실행 시킬 수 있게 된다.

함수 문서화

void pic_init ( void  )

PIC 초기화

Master 8259 PIC, Edge trigger, Cascade mode (ICW4)

Start at interrupt vector 0x20

#IR2 pin has a slave

Not SP, Non-buffered mode, normal EOI for x86

Slave 8259 PIC, Edge trigger, cascade mode (ICW4)

Start at interrupt vector 0x28

Slave 8259 has been linked to master's #IR2 pin

Not SP, Non-buffered mode, normal EOI for x86

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

void timer_init ( unsigned long  frequency)

타이머 초기화

매개변수
[in]frequency초당 인터럽트 발생 횟수

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.: