Ch ươ ng trình:
5.3.6 Điều khiển ngắt
Có hai loại bộđiều khiển ngắt được sử dụng trong bộ vi xử lý ARM là bộđiều khiển ngắt chuẩn và bộđiều khiển ngắt vector VIC – vecter interrupt controller.
Bộđiều khiển chuẩn gửi một tín hiệu ngắt đến lõi vi xử lý khi một thiết bị ngoài yêu cầu phục vụ. Nó có thểđược lập trình để bỏ qua yêu cầu ngắt từ một hoặc nhiều thiết bị. Trình xử lý ngắt xác định thiết bị yêu cầu phục vụ bằng việc đọc một thanh ghi của thiết bị trong bộđiều khiển ngắt.
VIC mạnh hơn bộ điều khiển ngắt chuẩn bởi nó cho phép thiết lập các mức ưu tiên cho các ngắt và đơn giản quá trình xác định nguồn ngắt. Sau khi gắn một mức ưu tiên và địa chỉ trình xử lý ngắt với mỗi ngắt, VIC chỉ cần gửi một tín hiệu ngắt tới lõi nếu mức ưu tiên của ngắt mới cao hơn trình xử lý ngắt đang thực thi. Dựa vào tín hiệu ngắt này, VIC có thể gọi trình xử lý ngoại lệ ngắt chuẩn tại địa chỉ của trình phục vụ ngắt cho thiết bị từ VIC hoặc tạo một lệnh nhảy cho lõi đến trình xử lý ngắt trực tiếp. Cụ thể, mỗi khi có một ngắt xảy ra, VIC sẽ OR các yêu cầu ngắt, và tạo ra một tín hiệu ngắt đến một trong hai ngắt FIQ và IRQ tùy theo các thông số của các thanh ghi cấu hình cho VIC, và nó sẽ gửi địa chỉ của thường trình phục vụ ngắt vào thanh ghi VICVectAddr. Trình xử lý ngắt sẽ bắt đầu bằng việc đọc thanh ghi này và nhảy tới địa chỉđược cung cấp bởi thanh ghi này. Và khi kết thúc chương trình phục vụ ngắt, ngoài việc clear cờ ngắt của nguồn ngắt tương ứng, VICVectAddr phải được ghi vào một giá trị bất kì để update phần cứng mức ưu tiên của VIC.
CPU ARM có 2 đường phục vụ cho ngắt ngoài là FIQ cho ngắt nhanh và IRQ cho ngắt thông thường. Một hệ thống ARM7 chỉ nên có một nguồn ngắt tạo ra FIQ, các ngắt khác còn lại sẽđược kết nối tới IRQ.
Hình 5-16. Cấu trúc hệ thống xử lý ngắt trong LPC2378