RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

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

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 09:59 ? 次閱讀

特權(quán)模式中斷

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

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

在M模式下,軟件還可以直接寫(xiě)入SIP寄存器,從而有效地向S模式發(fā)送中斷。這對(duì)于定時(shí)器和軟件中斷特別有用,因?yàn)榭赡苄枰贛模式和S模式下處理這些中斷。

Delegation Registers (mideleg and medeleg)

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

圖片

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

Supervisor Status Register (sstatus)

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

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

Supervisor Interrupt Enable Register (sie)

通過(guò)在 sie 寄存器中設(shè)置適當(dāng)?shù)奈粊?lái)啟用管理員中斷。

圖片

Supervisor Interrupt Pending (sip)

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

圖片

Supervisor Cause Register (scause)

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

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

圖片圖片

Supervisor Trap Vector (stvec)

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

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

圖片

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

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

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

Delegated Interrupt Handling

接受委派陷阱后,會(huì)發(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 中

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

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

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

pc 設(shè)置為 sepc 的值

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

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

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

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40276
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    462

    瀏覽量

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

    關(guān)注

    0

    文章

    65

    瀏覽量

    13383
  • sifive
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    9458
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

    ,這兩種模式是M3或者M(jìn)4內(nèi)核本身所具有的特性。 在特權(quán)級(jí)模式下,用戶可以訪問(wè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平臺(tái)級(jí)中斷控制器介紹

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

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

    中斷掛起位 PLIC 內(nèi)核中斷源掛起位的當(dāng)前狀態(tài)可以從掛起數(shù)組中讀取,組織為 32 位的 5 個(gè)字。中斷 ID 的掛起位存儲(chǔ)在字的位中。 因此,U
    的頭像 發(fā)表于 10-07 17:57 ?793次閱讀
    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 可以通過(guò)讀取 claim_complete 寄存器(表 115)執(zhí)行中斷請(qǐng)求,該寄存器返回最高優(yōu)先級(jí)掛起中斷
    的頭像 發(fā)表于 10-07 18:01 ?972次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>PLIC<b class='flag-5'>中斷</b>處理例子

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

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

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

    ) {// handler code} 此屬性將保存和恢復(fù)處理程序中使用的寄存器,并在處理程序的末尾插入一條 mret 指令。 CLINT內(nèi)存映射 下圖是U54 內(nèi)核上 CLINT 的內(nèi)存映射: 注意
    的頭像 發(fā)表于 10-08 09:34 ?520次閱讀
    <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 ?595次閱讀
    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ǔ)陷阱描述了軟件應(yīng)用程序中的控制轉(zhuǎn)移,其中陷阱處理通常在更特權(quán)的環(huán)境中執(zhí)行。例如,一個(gè)特定的 hart包含三種權(quán)限模式:機(jī)器、管理員和用戶。每種特權(quán)模式都有自己的軟件執(zhí)
    的頭像 發(fā)表于 10-08 09:47 ?610次閱讀
    <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)核處理中斷模式。對(duì)于 Direct 和 Vectored模式,中斷
    的頭像 發(fā)表于 10-08 09:54 ?954次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>中斷</b>控制和狀態(tài)寄存器

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

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

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

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

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

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