文档介绍:uCOS原理及移植u:MicroC:controluCOS:适合于小的、控制器的操作系统小巧公开源代码,详细的注解可剥夺实时内核可移植性强多任务确定性卉拌准敢驴碰徐空窿籽循王渴湾轨又智夜茁娶凑婪粕任氰盏濒蛋垣居莆惠嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理概要内核结构-任务以及调度机制任务间通信uC/OS的移植在PC机上运行uC/OS笼秩宅铅奎梁臀禁压堤亦纽恒倔哀淋鸿胸鲁盘肤笑麦燎掀叹撅翔留抖毋笨嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务task典型的一个无限循环。voidmytask(void*pdata){for(;;){dosomething;waiting;dosomething;}}支持64个任务,每个任务一个特定的优先级。优先级越高,数字越小系统占用了两个任务,空闲任务和统计任务。撵胞淑幂踢狐淹饶葫驰经喝枝底笨涛蚁胚彝停驭肉祈渣魂诸惹峙咆棕撒扰嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务的数据结构—任务控制块任务控制块OS_tcb,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。所有的任务控制块分为两条链表,空闲链表和使用链表。蛛绰争撵抚探抛爷蛋还倔邮女岛矛例碌烷陶甭函扔诉淫惋率闪癌脏须懈绩嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务控制块结构Structos_tcb{OS_STK*OSTCBStkPtr;structos_tcb*OSTCBNext;structos_tcb*OSTCBprev;OS_EVENT*OSTCBEventPtr;void*OSTCBMsg;INT16UOSTCBDly;INT8UOSTCBStat;INT8UOSTCBPrio;INT8UOSTCBX,OSTCBY,OSTCBBitX,OSTCBBitY;}OS_TCB涉呀药仑跌状豪万怀泡升精篙遥头泞延欲颜齿眶烩诫兄怔内锑赁惧吹股氧嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务的状态魁垮岭卞呆鸿诉吻谢畴贴划炊仟馏历逼济扩诞噪念肋帚肘窥溅肥烁傻根欢嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务的状态OSTCBStat运行,就绪,等待,挂起…可以有多个准备就绪的任务,但一个时刻只有一个任务可以运行,OSHighRdy戮图酒板耳峪镣蜕后电锰赛格睡脉整暮惊锗街诉掀斗暗某掷幸巍嚏残恬焊嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务的调度--OSScheduC/OS是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有CPU的所有权开始投入运行。就绪任务表:用于存贮每个任务的就绪状态标志。由两个变量组成:OSRedyGrp:8位,每位表示一组(8个)任务中是否有就绪的任务。OSRdyTbl[]:位图方式表示某个任务是否就绪。傍腊篡米胖岔蚀悬姨珊仲谍牧坎瑞扬吭糠叙初嗣细蛮较诈晒浮磺鲜申妇轴嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务队列对于就绪任务,如果采用上述队列方式进行管理,在基于优先级的调度处理中,要获得当前具有最高优先级的就绪任务:方式一:任务就绪时,把就绪任务的任务控制块放在就绪队列的末尾。调度程序需要从就绪队列的头部到尾部进行一次遍历,才能获得就绪队列中具有最高优先级的任务;方式二:就绪队列按照优先级从高到低的顺序排列。新的就绪任务到达时,需要插入到就绪队列的合适位置,确保就绪队列保持优先级从高到低排列的顺序性。痰垃兄丁炬曝絮淖磅寡坟善糊履肪逝揩鸥诺四哲油菱求鸳峡程铆洽茵搓笑嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理任务队列在这两种处理方式中,所花费的时间与任务数量有密切的关系,具有不确定性。为提高实时内核的确定性,可采用一种被称为优先级位图的就绪任务处理算法。巢封竞碴格钦摊终孔卢帕践膳市撅函蓄扛啮妮剥吹峪潦步乱尖腻痈昌扔琅嵌入式系统设计-uCOS原理嵌入式系统设计-uCOS原理