PRIMASK用于除能在 NMI和硬 fault之外的所有异常,它有效地把当前优先级改为 0(可编程 优先级中的最高优先级)。该寄存器可以通过 MRS和MSR以下例方式访问:
1. 关中断
MOV R0,#1
MSR PRIMASK,R0
或者:
CPSID i;等价上面语句
2.开中断
MOV R0,#0
MSR PRIMASK,R0
或者:
CPSIE i;等价上面语句
与之类似,FAULTMASK的操作也有如下等价功能:
CPSIE f; / CPSID f;
MSR FAULTMASK,R0
FAULTMASK更绝,它把当前优先级改为-1。这么一来,连硬fault都被掩蔽了。使用方案与
PRIMASK的相似。但要注意的是,FAULTMASK会在异常退出时自动清零。
本文详细介绍了PRIMASK和FAULTMASK寄存器在异常处理过程中的功能,包括如何通过关中断和开中断操作来管理这些寄存器,以及它们在不同优先级和故障类型中的应用。同时解释了FAULTMASK与PRIMASK的区别,特别是后者如何将优先级设置为-1,从而屏蔽硬故障。
2228

被折叠的 条评论
为什么被折叠?



