本小结以下内容包括后面临界区的保护源码分析是扩展说明,懂与不懂不影响学会使用 RT-Thread 临界区保护,因为涉及的 RTOS的调度原理,PendSV异常等知识,需要一定的基础,这里建议想学习RTOS的小伙伴务必好好看看《Cortex-M3与Cortex-M4权威指南》这个文档。 理解上面示例关系到RTOS的调度原理,上面解释中用到的中断打断线...
本小结以下内容包括后面临界区的保护源码分析是扩展说明,懂与不懂不影响学会使用 RT-Thread 临界区保护,因为涉及的 RTOS的调度原理,PendSV异常等知识,需要一定的基础,这里建议想学习RTOS的小伙伴务必好好看看《Cortex-M3与Cortex-M4权威指南》这个文档。 理解上面示例关系到RTOS的调度原理,上面解释中用到的中断打断线...
本小结以下内容包括后面临界区的保护源码分析是扩展说明,懂与不懂不影响学会使用 RT-Thread 临界区保护,因为涉及的 RTOS的调度原理,PendSV异常等知识,需要一定的基础,这里建议想学习RTOS的小伙伴务必好好看看《Cortex-M3与Cortex-M4权威指南》这个文档。 理解上面示例关系到RTOS的调度原理,上面解释中用到的中断打断线...
读出切入线程的栈指针,准备切换: 正式开始切换: 把线程的R4~R11装载进对应寄存器组,并且调整PSP指针: 修改LR的值,并且退出,返回线程模式+用户级。 注意,由于指定了返回系统的状态(线程模式+用户级),退出来中断服务函数的时候系统所用栈指针是PSP,在中断返回的时候,会执行一次硬件出栈,而且是用PSP指针,刚好是把剩...
线程的状态 初始态(RT_THREAD_INIT):创建线程时的状态 就绪态(RT_THREAD_READY):线程已经准备执行,只等待CPU调用 运行态(RT_THREAD_RUNNING):线程正在执行,此时在独占CPU 挂起态/阻塞态(RT_THREAD_SUSPEND):正在等待某个时序或者
RT-Thread 线程切换可以使用中断中实现上下文切换或者在线程上下文中切换。 中断中实现上下文切换是通过触发中断,在中断处理函数中保护现场、恢复现场切换至新线程等工作。ARM Core-M 系列、FreeRTOS 适配的 RISC…
RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与FreeRTOS的比较) RT-Thread记录(四、RT-Thread时钟节拍和软件定时器) RT-Thread记录(五、RT-Thread 临界区保护) RT-Thread记录(六、IPC机制之信号量、互斥量和事件集) RT-Thread记录(七、IPC机制之邮箱、消息队列) ...
CM3中线程调度是利用PendSV悬起异常完成的,PendSV中断的优先级一般设为最低(不能让线程抢占中断获取CPU的使用权),因此关闭中断后,系统不再响应可触发线程调度的外部事件。因此,如果在中断锁保护的临界区内主动发起线程调度,需要等中断锁打开后才能执行。 注意:这里的关中断,只是屏蔽了全局中断请求,配置使能的中断在...
RT-Thread 之临界段保护 1、什么是临界段 临界段就是一段在执行的时候不能被中断的代码段。在RT-Thread里面这个临界段最常出现的就是对全局变量的操作。 那么什么情况下临界段会被打断? 一个是系统调度,另一个是外部中断。在RT-Thread里面,系统调度,最终也是产生PendSV中断,在PendSV Handler里面实现线程的切换...
5. 使用RT-Thread临界段保护时需要注意的事项 临界段应尽量短:临界段代码应尽量简短,以减少对其他线程的影响。 避免嵌套使用:尽量避免在临界段内嵌套使用其他临界段保护机制,以防止死锁等问题。 选择合适的保护机制:根据具体应用场景选择合适的临界段保护机制,如禁用中断、禁用任务调度或使用互斥量等。 注意实时性影响...