uc/os----micro controller os微控制器操作系统,美国人jean labrosse于1192年完成,1998年出现uc/os--ii,2000年nasa许可可用于飞行器中(无人机中有木有啊!但是很少有极客把他用到飞控中,apm的操作系统是一个裁剪的linux--nuxxt什么鬼的)。
uc/os--ii的性能特性不跟大家废话了,大家自己去看它的中文手册吧。有几点要注意理解:
1.用户任务只有56个,因为有8个是系统保留的,这有点像linux下的系统服务daemons。如空闲任务、统计任务都是系统保留任务。
2.uc/os中所有函数的调用和服务都有确定的时间,也就是说函数的执行周期确定、执行时间确定,这个由统计任务ostaskstat()来完成。
3.任务的优先级就是它的标识符,最低优先级 os_lowest_prior=63。
下面进入主题--任务机制:
任务控制块tcb:tcb是描述任务的核心数据结构,存放了它的各种管理信息,包括任务堆栈指针,任务的状态、优先级,任务链表指针等; 一旦务建立了,任务控制块os_tcb将被赋值。
typedef struct os_tcb
{
栈指针;
int16u ostcbid; /*任务的id*/
链表指针;
os_event *ostcbeventptr; /*事件指针*/
void *ostcbmsg; /*消息指针*/
int8u ostcbstat; /*任务的状态*/
int8u ostcbprio; /*任务的优先级*/
其他……
}os_tcb;
ostcbstkptr:指向当前任务栈顶的指针,每个任务可以有自己的栈,栈的容量可以是任意的;
ostcbstkbottom:执行任务栈底的指针;
ostcbstksize:栈的容量,用可容纳的指针数目而不是字节数(byte)来表示。
值得一提的是链表指针,这个设计可以快速的使任务就绪和休眠。所有的务控制块分属于两条不同的链表,单向的空闲链表(头指针ostcbfreelist)和双向的使用链表(头指针为ostcblist); ostcbnext、ostcbprev:用于将任务控制块插入到空闲链表或使用链表中。每个任务的任务控制块在任务创建的时候被链接到使用链表中,在任务删除的时候从链表中被删除。双向连接的链表使得一成员都能快速插入或删除。
任务的五个状态:休眠、就绪、运行、中断、挂起(阻塞)。
各状态间的相互转换:
好了,既然一共有64个任务,那我是怎么知道现在到底该运行哪个任务呢?这就是任务就绪表的工作了。
多列几种就绪情况会发现,osrdygrp和osrdytbl[]的赋值与优先级priority有一定的关系哦。我们先列一个编码表叫osmaptbl[7]=2^n.n=0.1.2...7(同理就有osunmaptbl[7])。可以得到这个公式:
说明osrdygrp与优先级的高三位有关、osrdytbl与优先级的低三位有关.通过上面公式就可以把相应的任务标志为就绪状态。既然有让他进入就绪态的方法,也就有让他解除就绪状态--休眠态的方法:
任务的调度。前面的准备工作做好了之后,下面就可以真正的运行任务了。确定哪个务的优先级最高,应该选择哪个任务去运行,这部分的工作是由调度器(scheduler)来完成的。任务级的调度是由函数ossched()完成的;中断级的调度是由另一个函数osintext()完成的。
首先根据就绪表确定最高优先级。然后根据最高优先级替换当前任务的tcb,进行上下文切换。
oid ossched(void)
{
int8u y;
os_enter_critical();
os_exit_critical();
}
可以看到实际执行任务切换的是os_task_sw()函数(也就是osctxsw()),我们看下任务切换的过程:
小米6什么时候上市:小米6确认使用骁龙835,放弃双曲面屏
高质量PCB设计中PCB图布线的部分要求
国内首条芯片原子钟生产线投产
常用电压/频率转换器和频率/电压转换器的主要特性
宜家Eneby蓝牙音箱评测 进入科技领域的又一次尝试
Micro Controller OS微控制器操作系统应用设计方案
第二届中国(宁波)“人工智能+警务应用”高峰论坛在宁波举行
高通华为暂和解:华为每季度向高通支付1.5亿美元
测压管的特点_测压管的优缺点
借物联网技术搭建志愿养老健康监护平台,实现“1+4”健康监护体系
浅谈汽车的影像技术的未来发展
Vivado DDR4仿真操作
「九章」量子计算原型机受到大量质疑?
三星下调2018年OLED智能手机面板出货量 京东方六代柔性AMOLED生产线良率达超65%
AI芯片什么是AI芯片的架构、分类及关键技术概述
华为云联手AppGallery Connect,打造移动应用一站式解决方案
温湿度传感器不同输出方式的优异对比
“中读”举办了以“声音里的知识和AI”为主题的知识大会
扫地机器人哪个品牌好,选择斐纳TOMEFON-D60扫地机器人不会错
丝印机原理_丝印机的结构