iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
tags: 鐵人賽

0. 前言

昨日介紹 APLIC 基本功能與 interrupt source 範圍,今日我們繼續囉~

1. Hart index numbers

在給定的 interrupt domain 中,該 domain 的每個 hart 都有唯一的 index,範圍為 0 到 2^14 - 1 (= 16,383)。
對於相同一組的 hart,兩個不同的 interrupt domain 使用完全不同的 index。但是,如果 APLIC 的 interrupt domain 可以通過 MSI 轉發 interrupt,那麼 APLIC 的所有 M level domain 都可共享 index mapping 到 harts。

2. Overview of interrupt control for a single domain

APLIC 實現的每個 interrupt domain 都有自己獨立控制介面,該介面在機器的地址空間中進行 memory mapped,允許透過 PMP(physical memory protection,實體記憶體保護)和頁面的地址轉換, access 每個 domain。
在大多數方面,每個 domain 對 software 來說,都好像是一個 root domain,在結構中看不到它上一層的 domain。
interrupt domain 對於 APLIC 的每個 interrupt source 具有以下組件:

  • source 在 domain 當中是否為 active,如果是 active,則輸入 wired interrupt 應該為 level-trigger 或是 edge trigger;如果是 inactive 則 source configuration 控制任何指派給 child domain。
  • 如果是 inactive,則 pending bit and enable bit 皆 read only 0,反之如果是 active 則此兩個 bit 應該都被舉起。
  • 對於 active source,選擇確定的接收 interrupt 的 hart 以及 interrupt 的優先級或新的 interrupt ID。

3. Memory-mapped control region for an interrupt domain

對於 APLIC 支持的每個 interrupt domain,都有一個專用的 memory mappped 控制區域用於管理該 domain 中的 interrupt 。
此控制區域的大小是 4 KB 的倍數,並與 4 KB 地址邊界對齊。最小的有效控制區域為 16 KB,下圖為前16 KB 所包含的暫存器。


從偏移量 0x4000 開始,interrupt domain 的控制區域可以選擇具有interrupt delivery control (IDC) 結構,IDC 結構只有在直接向 harts 傳遞 interrupt 時使用,而不是由 MSI 轉發時使用。
每個 IDC 結構為 32 字節,並具有以下定義的暫存器:

IDC 結構是連續打包的,每個結構 32 字節,因此從 interrupt domain 控制區域的開頭到其第二個 IDC 結構(hart index=1)的偏移量為 0x4020;第三個 IDC 結構(hart index=2)的偏移量為 0x4040 以此類推。

除了前16 KB中的暫存器和上面列出的用於 IDC 結構的暫存器外,interrupt domain 控制區域中的其他 byte 都被保留的,並且為 read only 0,

後記

今日繼續介紹了 APLIC 的 interrupt domain,由於 memory mapped control region 內容較長,因此今天先行介紹一些,明天再介紹完畢,明日繼續加油!!
沒想到已經完成了快一半了,天氣也慢慢從熱轉涼了,時間過得真快呀( ˘▾˘)~


上一篇
DAY13: RISC-V: APLIC(一)
下一篇
DAY15: RISC-V: APLIC(三)
系列文
RISC-V: 深入淺出從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言