RM新时代网站-首页

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

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

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

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

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

不可屏蔽中斷

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

Handler Addresses

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

RNMI CSRs

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

圖片

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

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

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

圖片

mnstatus CSR 包含一個(gè)兩位字段,在進(jìn)入陷阱處理程序時(shí),它包含以與 mstatus.mpp 相同的方式編碼的中斷上下文的特權(quán)模式

MNRET Instruction

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

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

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

RNMI Operation

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

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40276
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    462

    瀏覽量

    83708
  • sifive
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    9458
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    Arm A-profile架構(gòu)對(duì)不可屏蔽中斷 (NMI) 的支持

    ,則不會(huì)向 CPU 傳遞任何中斷。術(shù)語(yǔ)不可屏蔽中斷實(shí)際上涵蓋了一類中斷,即使“正?!?b class='flag-5'>中斷被
    發(fā)表于 06-02 18:05

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

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

    怎么設(shè)置中斷屏蔽

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

    深入了解ARMv9對(duì)不可屏蔽中斷的支持

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

    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>控制器介紹

    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>處理例子

    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)情況下,所有中斷都在M模式下處理。對(duì)于支持S模式的 hart,可以有選擇地將
    的頭像 發(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>介紹

    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í)行環(huán)境,包括專用的堆棧區(qū)域。此外,每種特權(quán)模式都包含用于陷阱處理的單獨(dú)控制和狀態(tài)寄存器(CSR)。在用戶模式下操作時(shí),需要上下文切換來(lái)處理主管模式下的事件。軟件為上下文切換設(shè)置系統(tǒng),然后執(zhí)行 ECALL 指令,將控制同步切換到Environment call-from-Use
    的頭像 發(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模式,中斷處理模式在 mtvec 寄存器的 MODE 字段中定義。mtvec 寄存器在表 86
    的頭像 發(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)核特權(quán)模式中斷介紹

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