您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
reset什么意思(reset是什么意思翻译成中文)
指令,模式,特权reset什么意思(reset是什么意思翻译成中文)
发布时间:2020-12-06加入收藏来源:互联网点击:
很多朋友想了解关于中断服务程序的一些资料信息,下面是小编整理的与中断服务程序相关的内容分享给大家,一起来看看吧。很多朋友想了解关于reset的一些资料信息,下面是小编整理的与reset相关的内容分享给大家,一起来看看吧。
本期内容如下:
在阅读本文时,我们应该注意机器模式特权指令复位非屏蔽中断。当我们理解它的时候,我们应该把它作为一个设计需求来阅读,因为直接翻译的相关文档是按照如何实现一个特定的RISC-V处理器的标准来描述的。
第一,机器模式特权指令
1.1环境调用和断点ECALL/EBREAK
图1 ecall和ebreak指令的格式
ECLL用于向当前执行环境发出调用请求。当在U-模式、S-模式或m-模式下执行时,它分别生成环境从U-模式调用异常、管理员从S-模式调用异常或机器模式异常。
调试器使用EBREAK指令将控制转移回调试环境。它生成一个断点异常,不做任何其他事情。
ECALL和EBREAK将导致特权程序计数器(epc)被设置为ECALL和EBREAK指令本身所在的地址。由于ECALL和EBREAK会引起同步异常,所以不会被认为是重复执行,所以吟游诗人值不会增加。
1.2陷阱返回指令MRET/SRET
图2 mret、sret指令格式
为了从陷阱函数返回,每个特权模式都有自己的陷阱返回指令,即MRET和SRET。
始终支持MRET,只有当处理器支持管理模式时,才支持SRET。否则将导致指令异常。当mstatus中的TSR=1时,SRET也应该抛出一个非法指令异常。xRET指令可以在特权模式x或更高模式下执行,其中当执行具有低特权的xRET指令时,将弹出相关的低特权中断使能和特权模式堆栈。此外,除了与特权模式堆栈相关的操作之外,程序计数器(pc)的值也将被设置为xepc的值。
如果支持A扩展,则允许xRET指令清除任何未完成的LR保留地址,但这不是必需的。如果有必要,陷阱处理程序应该在执行xRET之前显式清除保留的地址(例如,通过使用虚拟SC)。
1.3中断等待(WFI)
等待中断指令(WFI)为实施提供了一个提示,即当前hart可以暂停,直到需要中断服务。WFI指令的执行也可用于通知硬件平台,要实现该功能,应首先将适当的中断发送到该hart。WFI可用于所有特权模式以及U模式。当mstatus中TW=1时,此指令可能会抛出非法指令异常。
Hart表示硬件线程在RISC-V中。
图3 WFI指令格式
如果一个使能的中断发生或在hart停止后发生,中断异常将按照下面的指令执行,即在陷阱处理程序中继续执行,mepc=pc 4。
2em; text-align: left;">WFI指令的目的是为实现提供提示,因此合法的实现只是将WFI作为NOP实现。当中断禁用时, WFI也应当是可以执行的,WFI操作必须不被mstatu中的全局中断位(MIE和SIE)和托管寄存器影响。WFI也可以用来唤醒本地中断已经被使能且挂起的任意进程。
二、Reset
RISC-V处理器在被Reset后,应当满足如下条件。
1.处理器在reset时,hart的特权模式被设置为机器模式(M模式)。
2.mstatus字段MIE和MPRV应被设置为0。
3.如果支持小端内存访问,则mstatus/mstatush字段MBE应重置为0。reset misa寄存器应启用最大的支持扩展集和最大MXLEN位宽。
4.pc应被设置为一个实现定义的reset向量。
5.mcause寄存器应被设置为指示reset原因的值。可写PMP寄存器“A”和“L”字段设置为0,除非平台要求某些PMP寄存器“A”和“L”字段设置不同的重置值。
6.所有其他硬件状态未指明。
Reset后的mcause值具有特定于实现的解释,但是在不区分不同的重置条件的实现上应该返回值0。区分不同重置条件的实现应该只使用0来表示最完整的重置(例如,硬重置)。
一些设计可能有多种原因导致复位(例如开机复位,外部硬复位,检测到断电,看门狗定时器流逝,睡眠模式唤醒),这可能是机器模式软件和调试器想要区分的。
mcause重置值的名称可能会和在同步异常mcause值的名称不同。在这个重叠应该没有分歧,因为在重置时pc设定值和其它Trap中的PC是不一样的。
三、不可屏蔽中断
不可屏蔽中断(NMIs)仅用于硬件错误的情况下,不用关心hart的中断启用位的状态,NMI异常会导致立即跳转到实现定义的NMI向量地址运行同时切换处理器模式为机器模式(M模式)。NMI执行时要执行的下一条指令的地址将被写入mepc寄存器,mcause被设置为一个指示NMI源的值。因此,NMI可以覆盖当前所处的机器模式中断处理程序中的状态。
在NMI上写入mcause的值是由实现定义的。mcause的高中断位应该被设置来表示这是一个中断。异常代码0是保留的,意思是“未知原因”,实现不区分来源的NMIs, 在异常代码中,mcause寄存器应该被设置为0。
与Reset不同,NMIs不重置处理器状态,开启诊断、报告,NMI可能包含硬件错误。
本文到此结束,希望对大家有所帮助呢。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |