RTX-51 有 2 个版本:Full 和 Tiny。类似的国人写的 Small RTOS51。
Full 需要的资源较多(8K ROM/450的XDATA),但支持抢占式任务调度和中断任务,以及任务间互发消息;Tiny 不支持抢占式调度,任务间也不能互发消息,但消耗资源少(7+3*任务数RAM/不占用XDATA)。
参考资料见《RTX51 Tiny第2版用户手册》
一 特点:只适合51系列的周期性的任务场合(C8051F/STC),最多16个任务,没有主函数,从_task_ 0开始(用于创建其它任务,然后将自己删除,除_task_ 0外其它都是while(1)死循环),结构小巧只需要包含#include <rtx51tny.h>并在工程配置中选择。占用了定时器0和寄存器组1.
Memory Model 用 Small 比较好,免得每次声明变量都写 data 修饰
二系统滴答:
os_wait(K_TMO, T, 0)定时时间=T*10MS;
任务的状态:
1 运行态(running)
:只有一个
2 就绪态(read):通过调用延时函数后超时就处于该状态
3.阻塞(blocked):调用延时函数但未超时,或者调用任务切换函数后的状态。
4 休眠(sleeping):任务声明但未使用或者已经删除过的任务。
任务的主动切换:
void os_switch_task (void)//尽量少用,因增加13个字节的堆栈保护从而响应慢。
os_delete和os_wait
关于os_wait
的三类参数:K_TMO、K_IVL和K_SIG
K_TMO:超时信号不累计
K_IVL:周期信号,可累计保证信号不丢失。
K_SIG
任务的独占:
方法1:禁止调度:TIMESHARING=0(适应于实时性不高)、关中断(EA=0/关TO中断但时间不能太长)
方法2:模仿FULL_RTX51编写申请和释放信号量,参考 https://blog.csdn.net/dkr269944905/article/details/72822959
注意事项:
三 函数:
3.1 创建任务:os_create_task(taskID
);
,对应的删除任务os_delete_task (taskID
);
原文:https://www.cnblogs.com/jieruishu/p/9291214.html