nu-lb-nuc140 RTX 流程 分析(六)

preempt : 抢占

在这里插入图片描述

在这里插入图片描述

每个任务都有4种状态:分别是:

  1. 运行态,
  2. 就绪态,
  3. 等待态,
  4. 不活动态

在这里插入图片描述
来自<RL-ARM 实时库用户指南.chm>

next_TCB->state = READY;
rt_put_prio (&os_rdy, next_TCB);

重点研究一下 ,其中的 优先级 链表 list

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

rt_init_context (&os_idle_TCB, 0, os_idle_demon);
在这里插入图片描述

os_idle_demon任务的优先级为0
init任务的优先级为1
phaseA任务的优先级为1

在这里插入图片描述

rt_free_box (mp_tcb, os_tsk.run);

struct OS_TSK os_tsk;
typedef struct OS_TSK {
P_TCB run; /* Current running task /
P_TCB new; /
Scheduled task to run */
} *P_TSK;

int rt_free_box (void *box_mem, void *box)

在这里插入图片描述
参考:nu-lb-nuc140 RTX 流程 分析(二)

os_evt_wait_and (0x0001, 0xffff);
#define os_evt_wait_and(wflags,tmo) _os_evt_wait((U32)rt_evt_wait,wflags,tmo,__TRUE)
extern OS_RESULT _os_evt_wait(U32 p, U16 wait_flags, U16 timeout,
BOOL and_wait) __SVC_0;

OS_RESULT rt_evt_wait (U16 wait_flags, U16 timeout, BOOL and_wait)

rt_evt_wait(0x0001, 0xffff,__TRUE)

在这里插入图片描述

在这里插入图片描述

rt_system.c

/--------------------------- rt_systick ------------------------------------/

void rt_systick (void) {
/* Check for system clock update, suspend running task. */
P_TCB next;

os_tsk.run->state = READY;
rt_put_rdy_first (os_tsk.run);

/* Check Round Robin timeout. */
rt_chk_robin ();

/* Update delays. */
os_time++;
rt_dec_dly ();

/* Check the user timers. */
rt_tmr_tick ();

/* Switch back to highest ready task */
next = rt_get_first (&os_rdy);
rt_switch_req (next);
}

os_dly 解析

struct OS_XCB os_dly;
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(稍后补充)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值