? ? ? ? 臨界段就是一段在執行的時候不能被中斷的代碼段,在RT-Thread里,臨界段最常出現的就是對全局變量的操作(類似Linux下的鎖)。RT-Thread對臨界段的保護是直接把中斷全部關了,NMI FAULT和硬FAULT除外。下圖是3個關于中斷屏蔽的寄存器,這里我們使用到的是PRIMASK寄存器。
? ? ? ?下面是關于臨界段屏蔽的例子 ,分別在開中斷和關中斷函數里添加MRS? r0, PRIMASK和MSR? PRIMASK, r0的作用是使這套開關中斷的函數能夠用于臨界段嵌套的情況下。
? ? ? ?最后聲明一下,我這里只是對學習的知識點進行總結,本文章的大多數知識來自于野火公司出版的《RT-Thread 內核實現與應用開發實戰—基于STM32》,這本書非常不錯,有志學習RT-Thread物聯網操作系統的人可以考慮一下。