0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

U54內(nèi)核特權(quán)模式中斷介紹

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 09:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

特權(quán)模式中斷

U54內(nèi)核支持有選擇地將中斷和異常定向到S模式。

該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式中斷和異??梢酝ㄟ^stvec、sip、sie 和 scause 管理。

在M模式下,軟件還可以直接寫入SIP寄存器,從而有效地向S模式發(fā)送中斷。這對于定時器和軟件中斷特別有用,因為可能需要在M模式和S模式下處理這些中斷。

Delegation Registers (mideleg and medeleg)

默認(rèn)情況下,所有的trap都在M模式下處理。M模式下軟件可以通過CSR 有選擇地將中斷和異常委托給S模式。具體的映射如表 92 和表 93 。

圖片

圖片注意,本地中斷可以委托給M模式。

Supervisor Status Register (sstatus)

與M模式類似,S模式有一個寄存器,專門用于跟蹤 hart 的當(dāng)前狀態(tài),稱為 sstatus。sstatus 實際上是 mstatus的受限視圖,因為對 sstatus 所做的更改反映在 mstatus 中。

通過在 sstatus 中設(shè)置 SIE 位并在 sie 寄存器中啟用所需的單個中斷來啟用中斷。

Supervisor Interrupt Enable Register (sie)

通過在 sie 寄存器中設(shè)置適當(dāng)?shù)奈粊韱⒂霉芾韱T中斷。

圖片

Supervisor Interrupt Pending (sip)

S模式中斷掛起 (sip) 寄存器指示當(dāng)前哪些中斷掛起。

圖片

Supervisor Cause Register (scause)

當(dāng)S模式下捕獲陷阱時,將導(dǎo)致陷阱的事件的代碼寫入 cause。當(dāng)導(dǎo)致陷阱的事件是中斷時,最高有效位 scause 設(shè)置為1,最低有效位表示中斷號,使用與 sip 中的位置相同的編碼。例如,S模式定時器中斷導(dǎo)致 cause 被設(shè)置為0x8000_0000_0000_0005。

scause 也用于指示同步異常的原因,在這種情況下,scause 的最高有效位設(shè)置為 0。有關(guān)同步異常代碼的列表,請參見表 98。

圖片圖片

Supervisor Trap Vector (stvec)

默認(rèn)情況下,所有中斷都會捕獲到 stvec 寄存器中定義的單個地址。由中斷處理程序讀取原因并做出相應(yīng)的反應(yīng)。RISC?V 和 U54內(nèi)核還支持選擇性地啟用中斷向量的能力。當(dāng)啟用向量時,在 sie 中定義的每個中斷都會陷入到它自己特定中斷處理程序中。

當(dāng) stvec 寄存器的 MODE 字段設(shè)置為 1 時,向量中斷被啟用。

圖片

如果向量中斷被禁用 (stvec.MODE=0),所有中斷都會陷入 stvec.BASE 地址。如果啟用矢量中斷 (stvec.MODE=1),中斷pc 設(shè)置為 stvec.BASE + 4 × 異常代碼 (scause.EXCCODE)。例如,如果發(fā)生管理定時器中斷,則 pc 設(shè)置為 stvec.BASE+ 0x14。通常,陷阱向量表中填充有跳轉(zhuǎn)指令,以將控制轉(zhuǎn)移到特定于中斷的陷阱處理程序。

在向量中斷模式下,BASE 必須是 128 字節(jié)對齊的。

所有主管外部中斷(全局中斷)都映射到異常代碼 9。因此,當(dāng)啟用中斷向量時,pc 被設(shè)置為任何全局中斷的地址 stvec.BASE +0x24。

Delegated Interrupt Handling

接受委派陷阱后,會發(fā)生以下情況:

sstatus.SIE 的值被復(fù)制到 sstatus.SPIE,然后 sstatus.SIE 被清除,有效地禁用中斷。

當(dāng)前pc被復(fù)制到sepc寄存器中,然后pc被設(shè)置為stvec的值。在啟用矢量中斷的情況下,pc 設(shè)置為 stvec.BASE + 4 × 異常代碼(scause.EXCCODE)。

中斷前的特權(quán)模式編碼在 sstatus.SPP 中

此時,控制權(quán)移交給中斷處理程序中的軟件,中斷被禁用??梢酝ㄟ^顯式設(shè)置 sstatus.SIE 或執(zhí)行 SRET 指令退出處理程序來重新啟用中斷。執(zhí)行SRET 指令時,會發(fā)生以下情況:

特權(quán)模式設(shè)置為 sstatus.SPP 中編碼的值

status.SPIE 的值被復(fù)制到 status.SIE

pc 設(shè)置為 sepc 的值

此時,控制權(quán)交給了軟件

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5430

    瀏覽量

    123923
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1415

    瀏覽量

    41245
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    480

    瀏覽量

    84836
  • 模式
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

    13603
  • sifive
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    9582
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    cortex-m3的操作模式特權(quán)級別

    STM32是cortex-m3內(nèi)核芯片,擁有cortex-m3的特性,以下介紹了cortex-m3的特權(quán)級別。
    的頭像 發(fā)表于 03-01 11:00 ?6912次閱讀
    cortex-m3的操作<b class='flag-5'>模式</b>及<b class='flag-5'>特權(quán)</b>級別

    【安富萊】【RTX操作系統(tǒng)教程】第9章 任務(wù)運行在特權(quán)級或非特權(quán)模式

    特權(quán)級或者非特權(quán)模式,這兩種模式是M3或者M(jìn)4內(nèi)核本身所具有的特性。 在特權(quán)
    發(fā)表于 01-23 17:11

    第9章 任務(wù)運行在特權(quán)級或非特權(quán)模式

    ,這兩種模式是M3或者M(jìn)4內(nèi)核本身所具有的特性。 在特權(quán)模式下,用戶可以訪問和配置系統(tǒng)控制寄存器,比如NVIC中斷控制器。然而,如果是在非
    發(fā)表于 10-04 17:43

    ARM內(nèi)核中斷技術(shù)

    以 ARM7TDMI處理器為例,詳細(xì)介紹 ARM內(nèi)核的三種中斷:常規(guī)中斷、快中斷和軟件中斷;結(jié)合
    發(fā)表于 04-09 10:01 ?18次下載

    PLIC平臺級中斷控制器介紹

    的。 U54內(nèi)核的平臺級中斷控制器 (PLIC) 最多可支持 132 個具有 7 個優(yōu)先級的外部中斷源。 Memory Map U54
    的頭像 發(fā)表于 10-07 17:53 ?1668次閱讀
    PLIC平臺級<b class='flag-5'>中斷</b>控制器<b class='flag-5'>介紹</b>

    LIC內(nèi)核中斷掛起位和中斷使能

    中斷掛起位 PLIC 內(nèi)核中斷源掛起位的當(dāng)前狀態(tài)可以從掛起數(shù)組中讀取,組織為 32 位的 5 個字。中斷 ID 的掛起位存儲在字的位中。 因此,U
    的頭像 發(fā)表于 10-07 17:57 ?1164次閱讀
    LIC<b class='flag-5'>內(nèi)核</b><b class='flag-5'>中斷</b>掛起位和<b class='flag-5'>中斷</b>使能

    U54內(nèi)核PLIC中斷處理例子

    Interrupt Claim Process U54 內(nèi)核 hart 可以通過讀取 claim_complete 寄存器(表 115)執(zhí)行中斷請求,該寄存器返回最高優(yōu)先級掛起中斷
    的頭像 發(fā)表于 10-07 18:01 ?1328次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>PLIC<b class='flag-5'>中斷</b>處理例子

    CLINT中斷控制器優(yōu)先級和搶占

    提供軟件、定時器和外部中斷。CLINT 塊還保存與軟件和定時器中斷相關(guān)的內(nèi)存映射控制和狀態(tài)寄存器。 CLINT 優(yōu)先級和搶占 CLINT 具有固定的優(yōu)先級方案,但不支持給定特權(quán)級別內(nèi)的嵌套
    的頭像 發(fā)表于 10-08 09:30 ?1051次閱讀
    CLINT<b class='flag-5'>中斷</b>控制器優(yōu)先級和搶占

    U54內(nèi)核上CLINT的內(nèi)存映射

    ) {// handler code} 此屬性將保存和恢復(fù)處理程序中使用的寄存器,并在處理程序的末尾插入一條 mret 指令。 CLINT內(nèi)存映射 下圖是U54 內(nèi)核上 CLINT 的內(nèi)存映射: 注意
    的頭像 發(fā)表于 10-08 09:34 ?738次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>上CLINT的內(nèi)存映射

    RISC-V SiFive U54內(nèi)核中斷介紹

    中斷 U54內(nèi)核支持M模式和S模式中斷。默認(rèn)情況下,所有中斷
    的頭像 發(fā)表于 10-08 09:39 ?902次閱讀
    RISC-V SiFive <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>中斷</b><b class='flag-5'>介紹</b>

    U54內(nèi)核中斷進(jìn)入和退出

    陷阱trap 術(shù)語陷阱描述了軟件應(yīng)用程序中的控制轉(zhuǎn)移,其中陷阱處理通常在更特權(quán)的環(huán)境中執(zhí)行。例如,一個特定的 hart包含三種權(quán)限模式:機器、管理員和用戶。每種特權(quán)模式都有自己的軟件執(zhí)
    的頭像 發(fā)表于 10-08 09:47 ?851次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>中斷</b>進(jìn)入和退出

    U54內(nèi)核中斷控制和狀態(tài)寄存器

    向量的基地址,以及設(shè)置 U54內(nèi)核處理中斷模式。對于 Direct 和 Vectored模式,中斷
    的頭像 發(fā)表于 10-08 09:54 ?1470次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>中斷</b>控制和狀態(tài)寄存器

    U54內(nèi)核不可屏蔽中斷信號

    不可屏蔽中斷 rnmi(可恢復(fù)不可屏蔽中斷中斷信號是 hart 的電平敏感輸入。不可屏蔽中斷比 hart上的任何其他中斷或異常具有更高的優(yōu)
    的頭像 發(fā)表于 10-08 10:05 ?1180次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>不可屏蔽<b class='flag-5'>中斷</b>信號

    如何在特權(quán)模式下用arm匯編指令使能和禁止irq中斷?

    如何在特權(quán)模式下用arm匯編指令使能和禁止irq中斷? 在 ARM 系統(tǒng)中,中斷是非常常見的一種事件。在特權(quán)
    的頭像 發(fā)表于 10-19 16:42 ?1818次閱讀

    ARMv7-A處理器模式特權(quán)等級

    對于現(xiàn)代操作系統(tǒng),通常情況下用戶的應(yīng)用程序運行在用戶態(tài),操作系統(tǒng)內(nèi)核運行在內(nèi)核態(tài)。用戶態(tài)的應(yīng)用對于系統(tǒng)硬件資源的訪問是受限的,內(nèi)核態(tài)則能夠訪問所有的系統(tǒng)硬件資源。操作系統(tǒng)的用戶態(tài)和內(nèi)核
    的頭像 發(fā)表于 10-21 16:19 ?1580次閱讀
    ARMv7-A處理器<b class='flag-5'>模式</b>與<b class='flag-5'>特權(quán)</b>等級

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品