XOS 详解1: os_s_xxxx.s

这篇博客详细介绍了XOS中关于中断管理的汇编实现,包括OSIntDisable和OSIntRestore两个系统函数的定义和实现,以及MRS和MSR指令的使用。内容涉及到中断状态的备份与恢复,以及ARM处理器中状态寄存器的控制位操作,如PRIMASK的设置。同时,还提到了中断使能、挂起、清除挂起的C和汇编代码示例,以及中断优先级的配置。此外,还讨论了Cortex-M0的中断等待、系统异常控制寄存器和系统控制寄存器的相关内容。
摘要由CSDN通过智能技术生成

XOS中关中断、恢复中断的汇编实现:

1.系统函数输入输出中定义

;**
;* @brief    EXPORT & IMPORT
;*
; 实现的系统函数
        EXPORT    OSIntDisable                    ; 备份中断状态并关中断
        EXPORT    OSIntRestore                    ; 恢复上次备份的中断状态


2.汇编代码段实现

;**
;* @brief    代码段
;*
        AREA    Routines, CODE

        ENTRY

; 关中断并返回初始中断状态,中断屏蔽寄存器PRIMASK仅有一位宽度,置位后,不可屏蔽中断NMI和HardFault不被屏蔽外,屏蔽所有其他中断。
OSIntDisable
        MRS        R0,    PRIMASK                     ;
        CPSID    I                               ; PRIMASK=1
        BX        LR

; 恢复中断状态
OSIntRestore
        MSR        PRIMASK, R0
        BX        LR


3.汇编指令参考以下两个链接:

https://blog.csdn.net/weibo1230123/article/details/84036225

                    ARM汇编:MRS和MSR指令

ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。

一:下面先来说说状态寄存器

针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图:


分成了4部分:

1,条件标志位

N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。

2,Q标志位

ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位。主要用于指示增强的DSP指令是否发生了溢出。

3,控制位

I, F, T以及M[4:0]统称为控制位。当异常中断发生时,这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。

下表示控制位M[4:0]的含义:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值