临界段就是一段在执行的时候不能被中断的代码段,在RT-Thread里,临界段最常出现的就是对全局变量的操作(类似Linux下的锁)。RT-Thread对临界段的保护是直接把中断全部关了,NMI FAULT和硬FAULT除外。下图是3个关于中断屏蔽的寄存器,这里我们使用到的是PRIMASK寄存器。
下面是关于临界段屏蔽的例子 ,分别在开中断和关中断函数里添加MRS r0, PRIMASK和MSR PRIMASK, r0的作用是使这套开关中断的函数能够用于临界段嵌套的情况下。
最后声明一下,我这里只是对学习的知识点进行总结,本文章的大多数知识来自于野火公司出版的《RT-Thread 内核实现与应用开发实战—基于STM32》,这本书非常不错,有志学习RT-Thread物联网操作系统的人可以考虑一下。