精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

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

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

不可屏蔽中斷

rnmi(可恢復不可屏蔽中斷)中斷信號是 hart 的電平敏感輸入。不可屏蔽中斷比 hart上的任何其他中斷或異常具有更高的優(yōu)先級,并且不能被軟件禁用。具體來說,它們不會通過清除mstatus.mie 寄存器來禁用。

Handler Addresses

NMI 有一個關聯(lián)的異常陷阱處理程序地址。該地址由外部輸入信號設置。

RNMI CSRs

這些 M 模式 CSR 啟用可恢復非屏蔽中斷 (RNMI)。

圖片

mnscratch CSR 擁有一個 64 位讀寫寄存器,它使 NMI 陷阱處理程序能夠保存和恢復被中斷的上下文。

mnepc CSR 是一個 64 位讀寫寄存器,在進入 NMI 陷阱處理程序時,它保存接受中斷的指令的 PC。mnepc 的最低位硬連線為零。

mncause CSR 包含 NMI 的原因,第 63 位設置為 1,并且 NMI 原因編碼在最低有效位中,如果不支持 NMI原因,則為零。mncause 的低位,定義為 exception_code,如下:

圖片

mnstatus CSR 包含一個兩位字段,在進入陷阱處理程序時,它包含以與 mstatus.mpp 相同的方式編碼的中斷上下文的特權模式

MNRET Instruction

此僅 M 模式指令使用 mnepc 和 mnstatus 中的值分別返回中斷上下文的程序計數(shù)器和特權模式。該指令還設置內(nèi)部 rnmie狀態(tài)位。

編碼與 MRET 相同,除了第 30 位設置(即 funct7=0111000)。例如:

.word 0x70200073 // opcode for MNRET (return from RNMI)

RNMI Operation

檢測到RNMI中斷時,將中斷的PC寫入mnepc CSR,RNMI的類型寫入mncause CSR,中斷上下文的特權模式寫入mnstatusCSR。內(nèi)部微體系結構狀態(tài)位 rnmie 被清除以指示處理器處于 RNMI 處理程序中并且不能接受新的 RNMI 中斷。清除時,內(nèi)部 rnmie位還會禁用所有其他中斷。

這些中斷被稱為不可屏蔽的,因為軟件無法屏蔽中斷。但是,為了正確操作,必須推遲同一中斷的其他實例,直到處理程序完成,因此內(nèi)部狀態(tài)位

RNMI 處理程序可以使用 MNRET 指令(在第 7.11.3 節(jié)中描述)恢復原始執(zhí)行,該指令從 mnepc 恢復 PC,從 mnstatus恢復特權模式,并設置內(nèi)部 rnmie 狀態(tài)位,重新啟用其他中斷。

如果hart在rnmie位清零時遇到異常,則將異常狀態(tài)寫入mepc和mcause,mstatus.mpp設置為M-mode,hart跳轉到RNMI異常處理程序地址。

RNMI 處理程序中的陷阱只有在處理程序正在服務發(fā)生在機器模式之外的中斷時發(fā)生時才能恢復。

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

    關注

    3

    文章

    1363

    瀏覽量

    40228
  • RISC
    +關注

    關注

    6

    文章

    461

    瀏覽量

    83654
  • sifive
    +關注

    關注

    0

    文章

    35

    瀏覽量

    9452
收藏 人收藏

    評論

    相關推薦

    Linux內(nèi)核中斷屏蔽的實現(xiàn)

    中斷屏蔽,正如其名,屏蔽掉CPU的中斷響應功能,解決并發(fā)引起的競態(tài)問題。
    發(fā)表于 07-04 11:15 ?543次閱讀

    stm32上的中斷掛起和屏蔽與ARM內(nèi)核中的掛起屏蔽是相同的嗎?

    請問前輩,stm32上的中斷掛起和屏蔽 與 ARM內(nèi)核中的掛起屏蔽是相同的嗎,還是只是stm32自己預處理的一步。
    發(fā)表于 04-15 08:23

    轉:IAR編譯環(huán)境禁用NMI(不可屏蔽中斷

    分享自己的小經(jīng)驗。問題起因: Kinetis芯片的不可屏蔽中斷引腳NMI_b在電路設計時被作為GPIO與外部設備連接了。調(diào)試程序時才發(fā)現(xiàn):哪怕通過引腳復選功能切換位(Pin Mux Control)將該
    發(fā)表于 06-06 12:04

    Arm A-profile架構對不可屏蔽中斷 (NMI) 的支持

    ,則不會向 CPU 傳遞任何中斷。術語不可屏蔽中斷實際上涵蓋了一類中斷,即使“正常”中斷
    發(fā)表于 06-02 18:05

    ARM7內(nèi)核中斷屏蔽方法

    本文介紹一種ARM7內(nèi)核中斷屏蔽方法,并給出基于該方法的C語言源代碼和匯編語言源代碼。該段代碼已經(jīng)在筆者參與研制的火災報警控制器中得到成功應用,可以完全替代x86體系下DO
    發(fā)表于 06-27 09:22 ?7874次閱讀
    ARM7<b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>中斷</b><b class='flag-5'>屏蔽</b>方法

    怎么設置中斷屏蔽

    對應每一個中斷請求觸發(fā)器就有一個屏蔽觸發(fā)器,將所有的屏蔽觸發(fā)器組合在一起,就成了一個屏蔽寄存器,屏蔽寄存器中的內(nèi)容稱為
    發(fā)表于 11-17 14:53 ?2.6w次閱讀
    怎么設置<b class='flag-5'>中斷</b><b class='flag-5'>屏蔽</b>字

    深入了解ARMv9對不可屏蔽中斷的支持

    Arm A-profile 架構的有一個長期缺陷就是不支持不可屏蔽中斷 (NMI) 。
    發(fā)表于 08-08 11:40 ?874次閱讀
    深入了解ARMv9對<b class='flag-5'>不可</b><b class='flag-5'>屏蔽</b><b class='flag-5'>中斷</b>的支持

    PLIC平臺級中斷控制器介紹

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

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

    中斷掛起位 PLIC 內(nèi)核中斷源掛起位的當前狀態(tài)可以從掛起數(shù)組中讀取,組織為 32 位的 5 個字。中斷 ID 的掛起位存儲在字的位中。 因此,U
    的頭像 發(fā)表于 10-07 17:57 ?755次閱讀
    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 ?926次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>PLIC<b class='flag-5'>中斷</b>處理例子

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

    ) {// handler code} 此屬性將保存和恢復處理程序中使用的寄存器,并在處理程序的末尾插入一條 mret 指令。 CLINT內(nèi)存映射 下圖是U54 內(nèi)核上 CLINT 的內(nèi)存映射: 注意
    的頭像 發(fā)表于 10-08 09:34 ?506次閱讀
    <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模式中斷。默認情況下,所有中斷都在M模式下處理。對于支持S模式的 hart,可以有選擇地將
    的頭像 發(fā)表于 10-08 09:39 ?569次閱讀
    RISC-V SiFive <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>的<b class='flag-5'>中斷</b>介紹

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

    陷阱trap 術語陷阱描述了軟件應用程序中的控制轉移,其中陷阱處理通常在更特權的環(huán)境中執(zhí)行。例如,一個特定的 hart包含三種權限模式:機器、管理員和用戶。每種特權模式都有自己的軟件執(zhí)行環(huán)境,包括專用的堆棧區(qū)域。此外,每種特權模式都包含用于陷阱處理的單獨控制和狀態(tài)寄存器(CSR)。在用戶模式下操作時,需要上下文切換來處理主管模式下的事件。軟件為上下文切換設置系統(tǒng),然后執(zhí)行 ECALL 指令,將控制同步切換到Environment call-from-Use
    的頭像 發(fā)表于 10-08 09:47 ?589次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b><b class='flag-5'>中斷</b>進入和退出

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

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

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

    特權模式中斷 U54內(nèi)核支持有選擇地將中斷和異常定向到S模式。 該功能由中斷和異常委托CSR處理:mideleg和medeleg。S模式
    的頭像 發(fā)表于 10-08 09:59 ?875次閱讀
    <b class='flag-5'>U54</b><b class='flag-5'>內(nèi)核</b>特權模式<b class='flag-5'>中斷</b>介紹