个人对嵌入式操作系统入门的一些理解

早期嵌入式开发没有嵌入式操作系统的概念 ,一般程序为顺序执行,遇到跳转指令则跳转到相应地址执行,执行到程序末尾循环执行,中断来时保护现场执行中断服务程序,执行完后返回,比如用51单片机基本就没有操作系统的概念。通常把程序分为两部分:前台系统和后台系统。 简单的小系统通常是前后台系统,这样的程序包括一个死循环和若干个中断服务程序:应用程序是一个无限循环,循环中调用API函数完成所需的操作,这个大循环就叫做后台系统。中断服务程序用于处理系统的异步事件,也就是前台系统。前台是中断级,后台是任务级。

原文链接:嵌入式操作系统入门讲解-359电子信息技术

无操作系统程序运行过程

 

一般嵌入式程序结构

   

非操作系统的中断过程

这里就是平时我们无操作系统的运行结果,现在比如我在运行task3,突然又想马上运行task1,这怎么办?前后台程序就会让后面的任务执行之后,再去执行task1,这样实时性受到影响。如果是无操作系统,要实现也可以,

大家可以想一下,如果在中断函数里改变了堆栈里的函数返回地址,会发生什么事?大家可以进一步想如果改变了其他通用寄存器会发生什么事?如果更改了堆栈指针呢?

其实,堆栈对于嵌入式程序设计是至关重要的,其作用不仅仅在中断处理中。事实上在所有用C写的程序都和堆栈关系密切。定时器中断改变SP指针的数值就可以返回不同的函数进入不同的任务!

定时器中断中改变SP指针的数值可以返回不同函数进入不同的任务

用中断,可是这样会让程序结构变得复杂,因为我想什么时候跳过就跳过,想什么时候执行就执行,所以固定的中断触发方式虽然也可以实现一些简单的跳转功能,但是当程序复杂之后,这样的无操作系统程序难以阅读和维护。这样在有操作系统的任务调度之后,就会让系统响应更具有实时性。

有操作系统的程序结构

从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。这样的系统无法实时响应外部异步事件。

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。

分时系统主要应用于科学计算和一般实时性要求不高的场合。实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。

实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。

在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。 RTOS操作系统:FreeRTOS,uCOS,RTX,RT-Thread,DJYOS等。 RTOS操作系统的核心内容在于:实时内核。

可剥夺型内核:RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。

实时操作系统的程序运行过程

可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值