-
- 资源管理:
- 各种资源共享方法优劣:
- 创建临界区方法:
- 关中断:
- OS_CFG_ISR_POST_DEFERRED_EN为0时,系统以关中断保护临界区;
- 是CPU相关函数,而非系统函数,具体在cpu.h文件内;
- 具体步骤:
- 临界区前先调用CPU_SR_ALLOC()宏,以分配存储空间存储当前CPU中断状态,具体被存在任务栈内的局部变量CPU_SR内;
- CPU_CRITICAL_ENTER()将中断标志位存在之前分配空间内,屏蔽可屏蔽中断;
- 访问临界区的资源,此时的操作即被认为是“原子的”;
- CPU_CRITICAL_EXIT()恢复之前存储的中断标志位;
- 说明:
- 关中断和开中断两个宏必需成对使用,关中断会导致中断延迟时间,影响系统的实时响应;
- 此种方式是任务和中断服务程序共享变量和数据结构的唯一方法;
- 宏OS_CRITICAL_ENTER()内调用的是CPU_CRITICAL_ENTER()宏;OS_CRITICAL_EXIT()和OS_CRITICAL_EXIT_NO_SCHED()宏;而这些宏用户不应直接访问;
- 关中断:
- 禁止任务调度:
- OS_CFG_ISR_POST_DEFERRED_EN为1时,系统尽量以调度器上锁来保护;
- 具体步骤:
- 先调用OSSchedLock(&err)关闭任务调度;
- 访问临界区的代码;
- 再调用OSSchedUnlock(&err)打开任务调度;
- 资源管理:
5.资源管理
最新推荐文章于 2019-04-23 10:58:26 发布