吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

U54內核特權模式中斷介紹

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

特權模式中斷

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

該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式中斷和異常可以通過stvec、sip、sie 和 scause 管理。

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

Delegation Registers (mideleg and medeleg)

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

圖片

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

Supervisor Status Register (sstatus)

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

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

Supervisor Interrupt Enable Register (sie)

通過在 sie 寄存器中設置適當的位來啟用管理員中斷。

圖片

Supervisor Interrupt Pending (sip)

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

圖片

Supervisor Cause Register (scause)

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

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

圖片圖片

Supervisor Trap Vector (stvec)

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

當 stvec 寄存器的 MODE 字段設置為 1 時,向量中斷被啟用。

圖片

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

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

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

Delegated Interrupt Handling

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

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

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

中斷前的特權模式編碼在 sstatus.SPP 中

此時,控制權移交給中斷處理程序中的軟件,中斷被禁用。可以通過顯式設置 sstatus.SIE 或執行 SRET 指令退出處理程序來重新啟用中斷。執行SRET 指令時,會發生以下情況:

特權模式設置為 sstatus.SPP 中編碼的值

status.SPIE 的值被復制到 status.SIE

pc 設置為 sepc 的值

此時,控制權交給了軟件

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121165
  • 內核
    +關注

    關注

    3

    文章

    1382

    瀏覽量

    40423
  • RISC
    +關注

    關注

    6

    文章

    465

    瀏覽量

    83873
  • 模式
    +關注

    關注

    0

    文章

    65

    瀏覽量

    13431
  • sifive
    +關注

    關注

    0

    文章

    36

    瀏覽量

    9473
收藏 人收藏

    評論

    相關推薦

    cortex-m3的操作模式特權級別

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

    【安富萊】【RTX操作系統教程】第9章 任務運行在特權級或非特權模式

    特權級或者非特權模式,這兩種模式是M3或者M4內核本身所具有的特性。 在特權
    發表于 01-23 17:11

    第9章 任務運行在特權級或非特權模式

    ,這兩種模式是M3或者M4內核本身所具有的特性。 在特權模式下,用戶可以訪問和配置系統控制寄存器,比如NVIC中斷控制器。然而,如果是在非
    發表于 10-04 17:43

    ARM內核中斷技術

    以 ARM7TDMI處理器為例,詳細介紹 ARM內核的三種中斷:常規中斷、快中斷和軟件中斷;結合
    發表于 04-09 10:01 ?18次下載

    PLIC平臺級中斷控制器介紹

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

    LIC內核中斷掛起位和中斷使能

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

    U54內核PLIC中斷處理例子

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

    CLINT中斷控制器優先級和搶占

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

    U54內核上CLINT的內存映射

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

    RISC-V SiFive U54內核中斷介紹

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

    U54內核中斷進入和退出

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

    U54內核中斷控制和狀態寄存器

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

    U54內核不可屏蔽中斷信號

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

    如何在特權模式下用arm匯編指令使能和禁止irq中斷

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

    ARMv7-A處理器模式特權等級

    對于現代操作系統,通常情況下用戶的應用程序運行在用戶態,操作系統內核運行在內核態。用戶態的應用對于系統硬件資源的訪問是受限的,內核態則能夠訪問所有的系統硬件資源。操作系統的用戶態和內核
    的頭像 發表于 10-21 16:19 ?1163次閱讀
    ARMv7-A處理器<b class='flag-5'>模式</b>與<b class='flag-5'>特權</b>等級
    网上百家乐网站导航| 澳门百家乐博| 蓝盾百家乐赌场| 百家乐最保险的方法| 诚信百家乐在线平台| 百家乐必知技巧| 百家乐赢输| 百家乐网上漏洞| 百家乐不锈钢| 大发888官方授权网| 足球博彩论坛| 大发888迅雷下载免费| 棋牌室标语| 焦作市| 百家乐官网博彩通| 太阳城百家乐官网怎样开户| 百家乐官网现金游戏注册送彩金| 百家乐官网赌场导航| 七匹狼百家乐官网的玩法技巧和规则| 24山向| 百家乐网站建设| 太阳百家乐管理网| 现金网系统出租| 留坝县| 信誉博彩网| 百家乐官网gamble| 做生意住房买什么朝向| 澳门百家乐网上娱乐场开户注册| 大发888娱乐场登陆| 壶关县| 百家乐官网赌博合作| 百家乐投注平台| 百家乐专业赌| 澳门永利娱乐| 百家乐官网筹码免运费| 迪威百家乐娱乐| 威尼斯人娱乐场开户| 锦江国际娱乐| 百家乐官网7scs| 三公百家乐在线哪里可以| 大发888客户端软件|