iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

今日的行程:
辦公室:10:00 - 19:30
讀書室:21:30 - 22:30

正片開始

GIC-V2

  • SGI (Software Generated Interrupts): IPI
  • PPI (Private Peripheral Interrupts): local timer
  • SPI (Shared Peripheral Interrupts)

中斷流程

  1. GIC 偵測到中斷發生,會將該中斷標記為 pending
  2. GIC 中的 dispatche 略r 會選一個 priority 最高的 pending
  3. interrupt 到 target CPU 的 CPU interface (也是由 dispatcher 決定)
  4. CPU interface 會決定這個 interrupt 是否可以送給 CPU (CPU 需要處在特定狀態),可以的話,送一個 interrupt 給 target CPU
  5. target CPU 進入 interrupt handling 過程,讀取 GICC_IAR (Interrupt Acknowledge Register) 來 claim 這個 interrupt 並且得到 interrupt ID (或是 CPU ID,如果是 SGI 的話)
    • 當 GIC 偵測到 GICC_IAR 被讀取後,如果 interrupt 是 pending 的話,會變成 active
  6. 處理完 interrupt 後,會回傳 EOI (End Of Interrupt) 給 GIC
    GIC 有支援 preemptive interrupt,不過由於 linux kernel 在執行 interrupt handling 過程中是 interrupt disable 的狀態,所以不會馬上收到。
    書中有附上訊號的時序圖~

GIC-V2 register

-- 略 --

結論


上一篇
[鐵人賽] Day 25 ARM 第 13 章節 GIC-V2
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言