当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] μC/OS-II嵌入式实时操作系统自1998年推出以来,因其方便移植、代码量小、实时性强、可靠性高、内核可剪裁等优点,成为我国计算机嵌入式应用领域最受喜爱的实时操作系统

 μC/OS-II嵌入式实时操作系统自1998年推出以来,因其方便移植、代码量小、实时性强、可靠性高、内核可剪裁等优点,成为我国计算机嵌入式应用领域最受喜爱的实时操作系统(Real-Time Opreating System)之一。由于其源码开源,至今,已经成功在诸多厂家的MCU上移植并应用在各行各业的电子产品之中,因而备受瞩目。此文帮助有意向学习μC/OS-II的初学者全面的、系统的了解实时系统的核心思想,也为正在学习μC/OS-II的童鞋们理清思路,更上层楼。

什么是μC/OS-II?

μC/OS-II是一种基于优先级可剥夺型的多任务实时内核,包含了任务调度与管理、时间管理、任务间通信与同步等基本功能。

如何实现多任务?

在μC/OS-II系统中,大多数情况下,1个任务就是一个死循环,特殊情况是,有的任务执行1次后直接销毁自己。既然是死循环如何实现多任务呢?这就涉及到一个完整的任务调度机制,简单来说,就是给每个任务设置合适的优先级,CPU只有一个,优先级高的任务可以抢占优先级低的任务,而独占CPU。在μC/OS-II中,系统可以管理64个任务,有8个任务预留给系统,用户最多可以创建56个任务,而实质上用户不应该创建过多的任务,因为这样的话,优先级最低的任务可能无法得到执行。

何时执行任务调度

简单来说,高优先级的就绪任务发生时,会抢占低优先级任务的CPU,这时系统就会自动执行任务调度。在任务销毁时,挂起时,延时时,中断退出时都会启动任务调度。

这里举个例子,假如下面这段程序具有2个用户任务LED1_TASK,和KEY_TASK。KEY_TASK的任务优先级较高,这段程序无法实现预期的功能,会出现什么问题呢?

 

LED闪灯任务无法得到执行,因为程序一直的执行按键扫描,其优先级较高(这里假定没有中断发生)一直在独占CPU,而没有释放,也就是无法执行任务调度,在LED任务中,调用OSTimeDly()函数的同时,LED任务即被挂起,交出CPU的控制权,同时执行任务调度,系统会选择一个处于就绪状态的优先级最高的任务来执行。

举上面这个例子是为了说明任务调度是在一定情况下发生的,因为是抢占式的,为了让低优先级的任务得到执行,高优先级任务必须在适当的情况下交出CPU,如果在KEY_TASK任务中,在获取按键信息后面调用OSTimeDly()函数,即可使LED闪灯任务得到执行。

关于中断

中断在实时操作系统中具有举足轻重的作用,所以中断程序的设计无疑是编程的要点及难点,在多任务实时操作系统中,不同的中断任务被安排不同的优先级,在允许中断嵌套的情况下,最高优先级的中断总能得到及时响应。中断级的任务可以看成是比最高优先级的任务级任务的优先级还要高。在用户中断服务程序内部,要尽可能的缩短代码量,不要做耗时的操作,正确的做法是调用任务级任务进行相关的数据处理。

同样,问题来了,在中断服务程序中触发某个任务级任务就绪,是否立即进行任务调度,答案是否定的,因为任务级任务的优先级不够,需等待中断服务程序退出,那系统如何知道中断服务程序是否结束了呢,这就需要的中断程序内部调用系统服务函数OSIntExit();以此来触发任务调度。

硬实时与软实时

这里说一下硬实时与软实时的区别,能够在指定的期限完成实时任务(即便在最坏的处理负载下也能如此)的操作系统称为硬实时系统。但并不是任何情况下都需要硬实时支持。如果操作系统在平均情况下能支持任务的执行期限,则称它为软实时系统。

RTOS的优势是硬实时控制,硬实时不是指“快”,而是指可精确预测可控制,能保证在规定时间内完成任务。因为执行时间可预测,所以当你想快时,只要选一个速度合适的CPU即可,这个需要的速度在μC/OS-II系统中是可以精确算出来的。软实时系统的时限是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重。

举个例子,汽车发生危险时,汽车气囊弹出必须在一定时间内完成,晚一秒都会造成致命伤害(硬实时)。而在图像传输过程中,偶尔丢失1帧图像数据是可以容忍的(软实时)。

任务同步与数据通信

毫无疑问,任务之间都不是相互割裂的,需要进行数据或者信息的交互,为此,μC/OS-II系统提供了用于任务间通信的手段。任务之间可以通过信号量,事件标志组,消息邮箱,消息队列进行同步。而数据通信最简单的方式是采用全局变量来共享资源,这里面涉及到保障数据可靠性的问题,比如,当一个任务正在读数据的时候,还没有读完,这时一个中断触发高级别的任务运行,高级别的任务要更新数据,这就会导致低级别任务读出来的数据是错误的。未解决此问题,可以采用关中断、关调度、使用互斥信号量、使用计数信号量来解决,关中断与关调度比较生硬,也违反了系统的实时性设计原则,因此推荐使用互斥信号量来解决,所谓互斥信号量,相当于一个钥匙,钥匙只有一个,当一个任务要访问该资源时,必须先取得该钥匙。

时钟节拍

μC/OS-II需要用户提供一个周期性的中断来实现延时和超时等操作,这个周期性的时钟叫“时钟节拍”,其频率范围通常在10~1000Hz之间。时钟节拍的频率大小取决于对定时精度的要求,频率越高,系统的负担越重。

问题:时钟节拍是否是μC/OS-II中必不可少的?没有时钟节拍系统是否能够工作?

答案是:没有时钟节拍,系统照样可以工作,只是无法进行延时或者超时判断,无法调用延时函数来进行任务调度,但是仍然有其它方法可以进行任务切换。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭