- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 uc/os-ii统计任务
uC/OS-II定义了两个系统任务,空闲任务与统计任务。空闲任务OSTaskIdle()是μC/OS-Ⅱ必不可少的系统函数,当没有其它任务进入就绪态时,该任务立即转入运行态。空闲任务的优先级永远设为最低,即OS_LOWEST_PRIO,永远不被挂起,也不能被删除。
2015-06-30 21:27:32 1673
原创 uc/os-ii任务调度的锁定与解锁
调度器上锁函数OSSchedlock()的功能是用于禁止任务调度,使任务保持对CPU的控制权。调度器开锁函数OSSchedUnlock()的功能是解除对任务调度的禁止。 调度器上锁和开锁的实现原理是:对全局变量锁定嵌套计数器OSLockNesting进行操作,OSLockNesting跟踪OS SchedLock() 函数被调用的次数,允许嵌套深度达255层。
2015-06-30 16:15:03 7697 1
原创 uc/os-ii任务调度(二)
任务调度关键是任务运行环境的切换。任务运行环境包括以下: 1. 程序的断点地址(PC) 2. 程序状态字寄存器(xPSR) 3. 通用寄存器内容 4. 任务堆栈指针(SP) 其中1、2、3保存在任务堆栈中,4保存在任务的任务控制块中。 程序切换的关键是把程序的私有堆栈指针赋予处理器的堆栈指针PSP。
2015-06-30 15:47:45 885
原创 uc/os-ii任务调度(一)
多任务操作系统的核心工作就是任务调度。所谓调度,就是通过一个算法在多个任务中确定该运行的任务,做这项工作的函数就叫做调度器。μC/OS-II进行任务调度的思想是 “近似地每时每刻总是让优先级最高的就绪任务处于运行状态” 。为了保证这一点,μC/OS-II在系统或用户任务调用系统函数及执行中断服务程序结束时总是调用调度器,来确定应该运行的任务并运行它 。
2015-06-29 22:35:18 1104
原创 uc/os-ii任务就绪表
就绪表就是用于存放任务准备就绪标志的列表,它是为了保证每次任务切换时间的可确定性、一致性和高速性而设置的,整个算法由两个变量、一个表格和三个程序组成。
2015-06-29 21:55:48 327
原创 uc/os-ii开关中断
ucos是利用禁止中断来保护临界段的。 ucos给我们提供了三种方法: 一:直接关中断和直接开中断。 二:先把原来的中断状态压入栈中,然后再关闭中断。恢复时直接从栈中返回原来存储的中断状态。 三:先保存原来的中断状态到一个变量中,然后再关闭中断。在STM32F103上移植uC/OSII采用第三种方法,代码如下:#if OS_CRITICAL_METHOD == 3#define OS_E
2015-06-29 15:40:57 992
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人