我很難理解中斷如何工作。使用outb和inb進行低級I/O訪問
下面的代碼初始化可編程中斷控制器
#define PIC0_CTRL 0x20 /* Master PIC control register address. */
#define PIC0_DATA 0x21 /* Master PIC data register address. */
/* Mask all interrupts*/
outb (PIC0_DATA, 0xff);
/* Initialize master. */
outb (PIC0_CTRL, 0x11); /* ICW1: single mode, edge triggered, expect ICW4. */
outb (PIC0_DATA, 0x20); /* ICW2: line IR0...7 -> irq 0x20...0x27. */
outb (PIC0_DATA, 0x04); /* ICW3: slave PIC on line IR2. */
outb (PIC0_DATA, 0x01); /* ICW4: 8086 mode, normal EOI, non-buffered. */
/* Unmask all interrupts. */
outb (PIC0_DATA, 0x00);
能有人向我解釋它是如何工作:
OUTB的-the作用(我不明白Linux手冊)
- 地址及其含義
另一個無關的問題,我讀到outb和inb是用於端口映射的I/O,我們可以使用內存映射的I/O做輸入/輸出通信?
謝謝。
對於由內存映射IO控制的硬件(PIC是_not_),您當然可以執行內存映射IO。 – hirschhornsalz
8086繼承了其前身8080和8085的這些指令,其中單獨的I/O空間非常有用,以免浪費任何64k內存地址空間。 –