历史上的今天
返回首页

历史上的今天

今天是:2024年10月10日(星期四)

正在发生

2018年10月10日 | 浅谈单片机上操作系统的利弊

2018-10-10 来源:eefocus

早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领域所日益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的往往是一些著名的商业内核,诸如VxWorks、PSOS等。这些商业内核性能优越,但价格昂贵,主要用于16位和32位处理器中,针对国内大部分用户使用的51系列8位单片机,可以选择免费的uC/OS-II。

uC/OS-II的特点

1.uC/OS-II是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。

2.uC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用uC/OS-II的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的是如果数据处理程序简单,这样做就未必合适。因为uC/OS-II要求在中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。

3.uC/OS-II和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。uC/OS-II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,uC/OS-II把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是uC/OS-II即支持优先级法又支持时间片轮转法就更合适了。

4.uC/OS-II对共享资源提供了保护机制。正如上文所提到的,uC/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),uC/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量,而一旦得到了此信号量,那就只有等使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,例如当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在uC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个现象。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在uC/OS-II中称为优先级反转,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以在使用uC/OS-II时,必须对所开发的系统了解清楚,才能决定对于某种共享资源是否使用信号量。

uC/OS-II在单片机使用中的一些特点

1.在单片机系统中嵌入uC/OS-II将增强系统的可靠性,并使得调试程序变得简单。以往传统的单片机开发工作中经常遇到程序跑飞或是陷入死循环。可以用看门狗解决程序跑飞问题,而对于后一种情况,尤其是其中牵扯到复杂数学计算的话,只有设置断点,耗费大量时间来慢慢分析。如果在系统中嵌入uC/OS-II的话,事情就简单多了。可以把整个程序分成许多任务,每个任务相对独立,然后在每个任务中设置超时函数,时间用完以后,任务必须交出CPU的使用权。即使一个任务发生问题,也不会影响其他任务的运行。这样既提高了系统的可靠性,同时也使得调试程序变得容易。

2.在单片机系统中嵌入uC/OS-II将增加系统的开销。现在所使用的51单片机,一般是指87C51或者89C51,其片内都带有一定的RAM和ROM。对于一些简单的程序,如果采用传统的编程方法,已经不需要外扩存储器了。如果在其中嵌入uC/OS-II的话,在只需要使用任务调度、任务切换、信号量处理、延时或超时服务的情况下,也不需要外扩ROM了,但是外扩RAM是必须的。由于uC/OS-II是可裁减的操作系统,其所需要的RAM大小就取决于操作系统功能的多少。举例来说,uC/OS-II允许用户定义最大任务数。由于每建立一个任务,都要产生一个与之相对应的数据结构TCB,该数据结构要占用很大一部分内存空间。所以在定义最大任务数时,一定要考虑实际情况的需要。如果定得过大,势必会造成不必要的浪费。嵌入uC/OS-II以后,总的RAM需求可以由如下表达式得出:

RAM总需求=应用程序的RAM需求 内核数据区的RAM需求 (任务栈需求 最大中断嵌套栈需求)·任务数

所幸的是,uC/OS-II可以对每个任务分别定义堆栈空间的大小,开发人员可根据任务的实际需求来进行栈空间的分配。但在RAM容量有限的情况下,还是应该注意一下对大型数组、数据结构和函数的使用,别忘了,函数的形参也是要推入堆栈的。

3.uC/OS-II的移植也是一件需要值得注意的工作。如果没有现成的移植实例的话,就必须自己来编写移植代码。虽然只需要改动两个文件,但仍需要对相应的微处理器比较熟悉才行,最好参照已有的移植实例。另外,即使有移植实例,在编程前最好也要阅读一下,因为里面牵扯到堆栈操作。在编写中断服务程序时,把寄存器推入堆栈的顺序必须与移植代码中的顺序相对应。

4.和其他一些著名的嵌入式操作系统不同,uC/OS-II在单片机系统中的启动过程比较简单,不像有些操作系统那样,需要把内核编译成一个映像文件写入ROM中,上电复位后,再从ROM中把文件加载到RAM中去,然后再运行应用程序。uC/OS-II的内核是和应用程序放在一起编译成一个文件的,使用者只需要把这个文件转换成HEX格式,写入ROM中就可以了,上电后,会像普通的单片机程序一样运行。

结语

由以上介绍可以看出,uC/OS-II具有免费、使用简单、可靠性高、实时性好等优点,但也有移植困难、缺乏必要的技术支持等缺点,尤其不像商用嵌入式系统那样得到广泛使用和持续的研究更新。但开放性又使得开发人员可以自行裁减和添加所需的功能,在许多应用领域发挥着独特的作用。当然,是否在单片机系统中嵌入uC/OS-II应视所开发的项目而定,对于一些简单的、低成本的项目来说,就没必要使用嵌入式操作系统。


推荐阅读

史海拾趣

First Sensor公司的发展小趣事

First Sensor公司电子行业的五个发展故事

故事一:初创与崛起

First Sensor的故事始于上世纪90年代初,当时它作为Silicon Sensor GmbH成立,标志着东德转型后科技领域的一次勇敢尝试。公司由Bernd Kriegel博士与21位前VEB电视电子元件厂员工共同创立,初期面临资金、机器和客户短缺的困境。然而,凭借着对传感器技术的坚定信念和专业知识,公司迅速在光子学、压力和先进电子领域开发出标准传感器和客户特定传感器解决方案。到1999年,公司成功上市,通过募集的资本进一步加速了其从初创企业向中型企业的过渡。

故事二:技术创新与市场拓展

进入21世纪后,First Sensor持续加大在技术创新和市场拓展上的投入。公司不仅专注于传感器技术的研发,还致力于提供从芯片到系统的完整解决方案。这一策略使得First Sensor在工业自动化、医疗设备和交通运输等多个领域取得了显著成就。特别是在医疗领域,公司开发的传感器广泛应用于呼吸机、血压计等关键设备中,并通过了EN ISO 13485认证,确保了产品的可靠性和安全性。

故事三:全球化战略与并购成长

随着业务的不断扩展,First Sensor开始实施全球化战略。公司在全球范围内设立了多个分支机构,生产和销售网络覆盖了全球多个市场。此外,公司还通过一系列并购活动进一步壮大了自身实力。例如,在2011年,First Sensor股份公司收购了Sensortechnics集团及其在德国境内外的子公司,这一举措不仅扩大了销售部门,还使公司能够为客户提供更加全面的个性化解决方案。

故事四:与TE Connectivity的合并

2019年,First Sensor迎来了一个重要转折点,即被TE Connectivity(泰科电子)收购。这一交易不仅巩固了TE在传感器领域的全球领导地位,还为First Sensor提供了更广阔的市场和技术资源。合并后,First Sensor的产品和客户群与TE的传感器产品组合相结合,为客户提供了更全面的一体化传感器解决方案。两家公司的互补技术和工程专业知识的结合,进一步推动了工业、医疗和交通运输市场的战略部署。

故事五:持续研发与未来展望

作为一家高科技企业,First Sensor始终将研发视为未来发展的核心。公司不断投资研发项目,推动传感器技术的进步和应用领域的拓展。例如,在自动驾驶和物联网等新兴领域,First Sensor的传感器技术发挥着重要作用。未来,公司将继续聚焦于具有技术特色的工业、医疗和交通等目标市场,紧跟行业发展趋势,为客户提供更加卓越的产品和服务。同时,First Sensor也将持续扩展全球版图,更加贴近市场与客户,以确保把握更多的销售潜力。

国兴(GOODSKY)公司的发展小趣事

对于带有1HZ低通滤波器的电桥放大器电路,网友可能的问题及回答如下:

问题一:1HZ低通滤波器在电桥放大器电路中的作用是什么?

回答:1HZ低通滤波器在电桥放大器电路中的主要作用是滤除高于1Hz频率的信号,只允许低于或等于1Hz的信号通过。这对于需要从复杂信号中提取低频分量或去除高频噪声的场合尤为重要。在电桥放大器中,由于传感器输出信号可能包含多种频率成分,通过1HZ低通滤波器可以有效减少高频噪声的干扰,提高测量信号的信噪比和精度。

问题二:如何设计带有1HZ低通滤波器的电桥放大器电路?

回答:设计带有1HZ低通滤波器的电桥放大器电路时,需要综合考虑电桥电路的设计、放大器的选择以及滤波器的设计。以下是大致的设计步骤:

  1. 电桥电路设计:首先,根据被测物理量的特性选择合适的电阻传感器,并设计相应的电桥电路。电桥电路应能准确地将非电量转换为电压或电流信号,并具有一定的抗干扰能力。

  2. 放大器选择:选择合适的运算放大器(运放)作为放大元件。运放应具有低噪声、高精度和适当的增益带宽积,以满足信号放大的需求。

  3. 滤波器设计:设计1HZ低通滤波器时,可以选择一阶或更高阶的有源滤波器。一阶有源低通滤波器由电阻、电容和运放组成,具有简单的电路结构和较好的滤波效果。设计时,需要根据所需的截止频率(本例为1HZ)选择合适的电阻和电容值。

  4. 电路整合与调试:将电桥电路、放大器和滤波器整合在一起,形成完整的电桥放大器电路。然后,对电路进行调试,确保电路工作正常,并满足预期的滤波和放大效果。

问题三:带有1HZ低通滤波器的电桥放大器电路在实际应用中有哪些注意事项?

回答:在实际应用中,带有1HZ低通滤波器的电桥放大器电路需要注意以下几点:

  1. 元件选择:应选择精度高、稳定性好的元件,如精密电阻、低噪声运放等,以确保电路的测量精度和稳定性。

  2. 布局与布线:合理的电路布局和布线可以减少电磁干扰和噪声耦合,提高电路的抗干扰能力。

  3. 温度补偿:由于温度变化可能影响电阻的阻值,进而影响电桥的输出电压,因此需要考虑温度补偿措施,以提高电路的温度稳定性。

  4. 校准与标定:定期对电路进行校准和标定,以确保测量结果的准确性和可靠性。

  5. 安全保护:在电路设计中应加入必要的保护措施,如过流保护、过压保护等,以防止电路在异常情况下损坏。

EDO Corp公司的发展小趣事

在1930年代,Eclipse Magnetics这个名字首次出现,标志着品牌的诞生。当时,该公司主要从事磁性产品的研究和开发。进入1940年代,Eclipse Magnetics逐渐崭露头角,成为一个独立的公司。在电子行业的早期,该公司凭借其独特的磁性技术,开始在市场中占据一席之地。

Diode Laser Concepts公司的发展小趣事

Diode Laser Concepts公司始终关注社会责任,积极参与各类公益活动。公司定期向贫困地区捐赠教育设备和资金,支持当地的教育事业发展;同时,公司还组织员工参与环保志愿活动,宣传环保理念,为保护地球环境贡献一份力量。这些公益活动不仅体现了公司的社会责任感,也增强了员工之间的凝聚力和向心力。

EHC(ELECTRONICHARDWARE)公司的发展小趣事

随着环保意识的不断提高,绿色环保已经成为电子行业的发展趋势。EHC公司积极响应这一趋势,致力于研发和生产绿色环保的电子产品。公司采用环保材料和工艺,减少生产过程中的污染排放。同时,EHC公司还积极推动废旧电子产品的回收和再利用工作,为环保事业做出了积极贡献。这种对环保的关注和行动让EHC公司在行业中树立了良好的形象。

敦泰(FOCALTECH)公司的发展小趣事
这可能是显示屏的电路故障,如显示屏损坏、显示屏与主板连接线松动或主板上控制显示屏的电路出现问题。可以尝试重新插拔连接线,如果问题依旧,可能需要更换显示屏或检修主板。

问答坊 | AI 解惑

基于单片机的酒瓶自动计数系统的设计

大家好啊,在这转悠了好几天,发现大家都是高手!我是一名专升本的学生,专科没有学过单片机本科学校因为大部分人都学过所以也就没开这门课,现在要做有关单片机的毕业设计,想请大家帮帮忙,谢谢了!     昨天问了一下老师那个设计一共 ...…

查看全部问答>

Altera的用IP核设计的信号发生程序

本帖最后由 paulhyde 于 2014-9-15 09:24 编辑 Altera的用IP核设计的信号发生程序  …

查看全部问答>

如何将ucfs文件系统植入nios ii工程中?

各位大侠:    ucfs导入nios ii工程后,编译时文件一直出错。求移植的具体步骤。不胜感激!…

查看全部问答>

我的CC2430能用SmartRF Studio7监测数据,而不能用Packet Sniffer?

我的CC2430能用SmartRF Studio7监测到数据,而不能用Packet Sniffer监控数据。…

查看全部问答>

VC6++封装成exe文件的问题

一直用VC++6做编译器,虽然有人让我换了,我嫌麻烦一直没换。用它写程序调试程序一切都很正常,唯独有个问题。把写好的程序封装成exe文件。具体的操作其实挺简单(当然没有命令行下简单)首先写代码,编译看有没有错误,没错误以后封装。封装方法是 ...…

查看全部问答>

小光棍节的礼物!让QVGA屏普及吧!2.4寸 QVGA TFT屏带触摸屏15元一个!

让QVGA屏普及吧!2.4寸 QVGA TFT屏带触摸屏15元一个(5个起),全新37脚ILI9320驱动,提供程序! 单个20元一个,数量不多欢迎抢购!     [ 本帖最后由 shanyan 于 2011-11-1 23:04 编辑 ]…

查看全部问答>

msp430g2553如何使外接的ch451控制8位数码管显示?

其实就是要AD采集的电压数据显示在数码管上,可这个数码管是通过CH451外接的,该怎么编程呢? …

查看全部问答>

我自己构建了CCSV5的工程,编译后总是提示如下错误

我自己构建了CCSV5的工程,编译后总是提示如下错误,我查了很多资料,都没有解决,能给我解决和解释一下吗,谢谢 …

查看全部问答>