2013-01-19 20 views
5

Có một bus truyền thông riêng biệt cho các ngắt không che chắn có thể bỏ qua bộ điều khiển ngắt có thể lập trình không?PIC có xử lý các ngắt không có khả năng che chắn không?

Hoặc PIC có quản lý tất cả các ngắt nhưng vượt qua tất cả các lệnh không thể che dấu cùng với quy ước không?

Điều này có phụ thuộc vào kiến ​​trúc hoặc có lý do cụ thể nào để thích cái khác hay không?

Trả lời

3

câu trả lời của tôi là từ một số kinh nghiệm phần cứng mà tôi đã đạt được trong khi thiết kế máy tính một thời gian dài trước đây trong một thiên hà xa xôi ... cách đây rất lâu, tôi nghĩ rằng tôi sẽ nhận được một chút giúp đỡ từ một tài liệu tham khảo. Tôi đã phát hiện ra một nơi để tải xuống Intel's ia32 64 bit system software development manual khi tôi đang đọc qua số SO here.

Câu trả lời cho câu hỏi đầu tiên của bạn là NMI là một chốt trên bộ xử lý được tách biệt khỏi các ngắt có thể che dấu được cấu hình với PIC.

Câu trả lời cho câu hỏi thứ hai của bạn là PIC không có liên quan gì đến NMI. Tuy nhiên nếu bạn có APIC hoặc Bộ điều khiển ngắt lập trình nâng cao, có thể tạo NMI như được nêu trong hướng dẫn:

Bộ xử lý nhận được thông báo trên bus hệ thống (Pentium 4, Intel Core Duo, Bộ xử lý Intel Core 2, Intel Atom và Intel Xeon) hoặc bus nối tiếp APIC (bộ xử lý Pentium và Pentium P6) với chế độ phân phối NMI.

Câu trả lời cho câu hỏi thứ ba của bạn có thể được nhìn thấy trong câu trả lời cho câu hỏi thứ hai của bạn. Đó là, nếu bạn có một APIC (không chỉ là một PIC) trong phần cứng của bạn. Nếu bạn muốn biết thêm chi tiết về cách APIC có thể gửi NMI, hãy xem liên kết SO mà tôi đã cung cấp. Tôi đã không đi vào các chi tiết ở đây bởi vì bạn đã hỏi về PIC "thấp", không phải là APIC. Nhưng chỉ trong trường hợp tôi hiểu lầm bạn, tôi nghĩ rằng bạn sẽ tìm thấy rất nhiều thông tin về liên kết SO, và nếu đó là không đủ, sau đó đi trước và tải về hướng dẫn sử dụng Intel.

Tôi hy vọng rằng sẽ xóa một số thứ. CHÀO!

2

PIC (bộ điều khiển ngắt có thể lập trình) không quản lý NMI (ngắt không có mặt nạ) trong x86. NMI đi trực tiếp đến bộ xử lý hoặc thông qua bộ điều khiển khác, ví dụ: ISP. Xem OSDev: Non Maskable Interrupt.

Tuy nhiên, theo link, bạn có thể vô hiệu hóa NMIs theo cách này:

/* enable the NMI */ 
void NMI_enable(void) 
{ 
    outb(0x70, inb(0x70)&0x7F); 
} 

/* disable the NMI */ 
void NMI_disable(void) 
{ 
    outb(0x70, inb(0x70)|=0x80); 
} 
Các vấn đề liên quan