本小结以下内容包括后面临界区的保护源码分析是扩展说明,懂与不懂不影响学会使用 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机制之邮箱、消息队列) ...
RT-Thread 之临界段保护 1、什么是临界段 临界段就是一段在执行的时候不能被中断的代码段。在RT-Thread里面这个临界段最常出现的就是对全局变量的操作。 那么什么情况下临界段会被打断? 一个是系统调度,另一个是外部中断。在RT-Thread里面,系统调度,最终也是产生PendSV中断,在PendSV Handler里面实现线程的切换...
CM3中线程调度是利用PendSV悬起异常完成的,PendSV中断的优先级一般设为最低(不能让线程抢占中断获取CPU的使用权),因此关闭中断后,系统不再响应可触发线程调度的外部事件。因此,如果在中断锁保护的临界区内主动发起线程调度,需要等中断锁打开后才能执行。 注意:这里的关中断,只是屏蔽了全局中断请求,配置使能的中断在...
2.3 脱离线程 2.4 等待线程结束 2.5 退出线程 2.5.1 退出线程示例代码 3、互斥锁 3.1 互斥锁控制块 3.2 初始化互斥锁 3.3 销毁互斥锁 3.4 阻塞方式对互斥锁上锁 3.5 非阻塞方式对互斥锁上锁 3.6 解锁互斥锁 3.7 互斥锁示例代码 4、条件变量 4.1 条件变量控制块 4.2 初始化条件变量 4.3 销毁条件变...