Kỹ thuật Tail Chaining trong NVIC

Một phần của tài liệu Kiến trúc cơ bản của STM32 ARM Cortex m3 (Trang 34 - 35)

Nếu một ngắt có mức ưu tiên cao ñang chạy và ñồng thời một ngắt có mức ưu tiên thấp hơn cũgn ñược kích hoạt, NVIC sử dụng một phương pháp gọi là Tail

Chaining ñể ñảm bảo thời gian trễ là tối thiểu giữa các lần phục vụ ngắt. Nếu hai ngắt ñược nâng lên, ngắt có mức ưu tiên cao nhất sẽñược phục trước và sẽ

bắt ñầu thực hiện chỉ sau 12 chu kỳ xung nhịp kể từ lúc xuất hiện ngắt. Tuy nhiên, khi ñến cuối trình phục vụ ngắt CPU Cortex không trở về chương trình

ứng dụng nền, vì vậy mà stack frame của ngắt này không ñược khôi phục, thay vào ñó chỉ có ñịa chỉ của hàm phục vụ ngắt có mức ưu tiên cao nhất kế tiếp

ñược lấy về.

Hình 2.14. Đáp ứng thời gian khi hai ngắt xảy ra ñồng thời của Cortex-M3

Điều này chỉ mất 6 chu kỳ xung nhịp và sau ñó trình phục vụ ngắt kế tiếp có thể bắt ñầu ñược thực thi. Vào cuối các ngắt ñang chờ, ngăn xếp ñược khôi phục và ñịa chỉ trở về ñược lấy, tiếp ñó chương trình ứng dụng nền có thể bắt

ñầu thực thi chỉ trong 12 chu kỳ xung nhịp. Nếu một ngắt có mức ưu tiên thấp xuất hiện trong khi một ngắt khác ñang thực thi chuẩn bị thoát khỏi trình phục vụ ngắt, thao tác POP (lấy dữ liệu từ ngăn xếp) sẽ bị bỏ qua và con trỏ stack sẽ ñược cuộn về giá trị ban ñầu ñể có thể tiếp tục lưu trữ stack frame của ngắt mới xuất hiện, sẽ có một ñộ trễ 6 chu kỳ xung nhịp cho tới khi ñịa chỉ của ISR mới

ñược lấy về. Điều này tạo ra một ñộ trễ từ 7-18 chu kỳ xung nhịp trước khi trình phục vụ ngắt mới có thể bắt ñầu ñược thực hiện.

Hình 2.15. Đáp ứng thời gian khi hai ngắt xảy ra lần lượt của Cortex-M3

Trong một hệ thống thời gian thực thường xuất hiện tình huống, trong khi một ngắt có mức ưu tiên thấp ñang ñược phục vụ, thì chỉ có một ngắt có mức ưu tiên cao hơn xuất hiện. Nếu tình huống này xảy ra trong quá trình PUSH dữ

liệu lên ngăn xếp, NVIC sẽ chuyển sang phục vụ ngắt ưu tiên cao hơn. Việc PUSH dữ liệu lên ngăn xếp ñược tiếp tục và sẽ có tối thiểu 6 chu kỳ xung nhịp tại thời ñiểm ngắt ưu tiên cao hơn xuất hiện, cho tới khi ñịa chỉ của ISR mới

ñược lấy về.

Hình 2.16. Đáp ứng thời gian khi ngắt ưu tiên cao ñến sau của Cortex-M3

Sau khi ngắt ưu tiên cao hơn thực hiện xong, ngắt ưu tiên thấp ban ñầu sẽñược nối ñuôi (tail chain) và bắt ñầu thực hiện sau 6 chu kỳ xung nhịp.

Một phần của tài liệu Kiến trúc cơ bản của STM32 ARM Cortex m3 (Trang 34 - 35)