0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

U54内核不可屏蔽中断信号

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-10-08 10:05 次阅读

不可屏蔽中断

rnmi(可恢复不可屏蔽中断)中断信号是 hart 的电平敏感输入。不可屏蔽中断比 hart上的任何其他中断或异常具有更高的优先级,并且不能被软件禁用。具体来说,它们不会通过清除mstatus.mie 寄存器来禁用。

Handler Addresses

NMI 有一个关联的异常陷阱处理程序地址。该地址由外部输入信号设置。

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 中的值分别返回中断上下文的程序计数器和特权模式。该指令还设置内部 rnmie状态位。

编码与 MRET 相同,除了第 30 位设置(即 funct7=0111000)。例如:

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

RNMI Operation

检测到RNMI中断时,将中断的PC写入mnepc CSR,RNMI的类型写入mncause CSR,中断上下文的特权模式写入mnstatusCSR。内部微体系结构状态位 rnmie 被清除以指示处理器处于 RNMI 处理程序中并且不能接受新的 RNMI 中断。清除时,内部 rnmie位还会禁用所有其他中断。

这些中断被称为不可屏蔽的,因为软件无法屏蔽中断。但是,为了正确操作,必须推迟同一中断的其他实例,直到处理程序完成,因此内部状态位

RNMI 处理程序可以使用 MNRET 指令(在第 7.11.3 节中描述)恢复原始执行,该指令从 mnepc 恢复 PC,从 mnstatus恢复特权模式,并设置内部 rnmie 状态位,重新启用其他中断。

如果hart在rnmie位清零时遇到异常,则将异常状态写入mepc和mcause,mstatus.mpp设置为M-mode,hart跳转到RNMI异常处理程序地址。

RNMI 处理程序中的陷阱只有在处理程序正在服务发生在机器模式之外的中断时发生时才能恢复。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1362

    浏览量

    40226
  • RISC
    +关注

    关注

    6

    文章

    461

    浏览量

    83653
  • sifive
    +关注

    关注

    0

    文章

    35

    浏览量

    9452
收藏 人收藏

    评论

    相关推荐

    Linux内核中断屏蔽的实现

    中断屏蔽,正如其名,屏蔽掉CPU的中断响应功能,解决并发引起的竞态问题。
    发表于 07-04 11:15 542次阅读

    stm32上的中断挂起和屏蔽与ARM内核中的挂起屏蔽是相同的吗?

    请问前辈,stm32上的中断挂起和屏蔽 与 ARM内核中的挂起屏蔽是相同的吗,还是只是stm32自己预处理的一步。
    发表于 04-15 08:23

    转:IAR编译环境禁用NMI(不可屏蔽中断

    分享自己的小经验。问题起因: Kinetis芯片的不可屏蔽中断引脚NMI_b在电路设计时被作为GPIO与外部设备连接了。调试程序时才发现:哪怕通过引脚复选功能切换位(Pin Mux Control)将该
    发表于 06-06 12:04

    Arm A-profile架构对不可屏蔽中断 (NMI) 的支持

    ,则不会向 CPU 传递任何中断。术语不可屏蔽中断实际上涵盖了一类中断,即使“正常”中断
    发表于 06-02 18:05

    ARM7内核中断屏蔽方法

    本文介绍一种ARM7内核中断屏蔽方法,并给出基于该方法的C语言源代码和汇编语言源代码。该段代码已经在笔者参与研制的火灾报警控制器中得到成功应用,可以完全替代x86体系下DO
    发表于 06-27 09:22 7874次阅读
    ARM7<b class='flag-5'>内核</b>的<b class='flag-5'>中断</b><b class='flag-5'>屏蔽</b>方法

    怎么设置中断屏蔽

    对应每一个中断请求触发器就有一个屏蔽触发器,将所有的屏蔽触发器组合在一起,就成了一个屏蔽寄存器,屏蔽寄存器中的内容称为
    发表于 11-17 14:53 2.6w次阅读
    怎么设置<b class='flag-5'>中断</b><b class='flag-5'>屏蔽</b>字

    深入了解ARMv9对不可屏蔽中断的支持

    Arm A-profile 架构的有一个长期缺陷就是不支持不可屏蔽中断 (NMI) 。
    发表于 08-08 11:40 873次阅读
    深入了解ARMv9对<b class='flag-5'>不可</b><b class='flag-5'>屏蔽</b><b class='flag-5'>中断</b>的支持

    PLIC平台级中断控制器介绍

    的。 U54内核的平台级中断控制器 (PLIC) 最多可支持 132 个具有 7 个优先级的外部中断源。 Memory Map U54
    的头像 发表于 10-07 17:53 1135次阅读
    PLIC平台级<b class='flag-5'>中断</b>控制器介绍

    LIC内核中断挂起位和中断使能

    中断挂起位 PLIC 内核中断源挂起位的当前状态可以从挂起数组中读取,组织为 32 位的 5 个字。中断 ID 的挂起位存储在字的位中。 因此,U
    的头像 发表于 10-07 17:57 748次阅读
    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 926次阅读
    <b class='flag-5'>U54</b><b class='flag-5'>内核</b>PLIC<b class='flag-5'>中断</b>处理例子

    U54内核上CLINT的内存映射

    ) {// handler code} 此属性将保存和恢复处理程序中使用的寄存器,并在处理程序的末尾插入一条 mret 指令。 CLINT内存映射 下图是U54 内核上 CLINT 的内存映射: 注意
    的头像 发表于 10-08 09:34 506次阅读
    <b class='flag-5'>U54</b><b class='flag-5'>内核</b>上CLINT的内存映射

    RISC-V SiFive U54内核中断介绍

    中断 U54内核支持M模式和S模式中断。默认情况下,所有中断都在M模式下处理。对于支持S模式的 hart,可以有选择地将
    的头像 发表于 10-08 09:39 567次阅读
    RISC-V SiFive <b class='flag-5'>U54</b><b class='flag-5'>内核</b>的<b class='flag-5'>中断</b>介绍

    U54内核中断进入和退出

    陷阱trap 术语陷阱描述了软件应用程序中的控制转移,其中陷阱处理通常在更特权的环境中执行。例如,一个特定的 hart包含三种权限模式:机器、管理员和用户。每种特权模式都有自己的软件执行环境,包括专用的堆栈区域。此外,每种特权模式都包含用于陷阱处理的单独控制和状态寄存器(CSR)。在用户模式下操作时,需要上下文切换来处理主管模式下的事件。软件为上下文切换设置系统,然后执行 ECALL 指令,将控制同步切换到Environment call-from-Use
    的头像 发表于 10-08 09:47 588次阅读
    <b class='flag-5'>U54</b><b class='flag-5'>内核</b><b class='flag-5'>中断</b>进入和退出

    U54内核中断控制和状态寄存器

    向量的基地址,以及设置 U54内核处理中断的模式。对于 Direct 和 Vectored模式,中断处理模式在 mtvec 寄存器的 MODE 字段中定义。mtvec 寄存器在表 86
    的头像 发表于 10-08 09:54 896次阅读
    <b class='flag-5'>U54</b><b class='flag-5'>内核</b><b class='flag-5'>中断</b>控制和状态寄存器

    U54内核特权模式中断介绍

    特权模式中断 U54内核支持有选择地将中断和异常定向到S模式。 该功能由中断和异常委托CSR处理:mideleg和medeleg。S模式
    的头像 发表于 10-08 09:59 874次阅读
    <b class='flag-5'>U54</b><b class='flag-5'>内核</b>特权模式<b class='flag-5'>中断</b>介绍