嵌入式系统设计中何时需要操作系统?


22

我已经为PIC和x86处理器编写了大量裸机代码。有人可以告诉我如何以及何时需要操作系统吗?相反,在没有操作系统的情况下也可以处理哪些应用程序或情况?


2
因为并非您需要了解的所有内容都是在学校教授的。如果您认为需要学习RTOS,请选择一个平台并学习它。
Scott Seidman

3
关于嵌入式操作系统使用的问题是有效的。但是,EE.SE无法帮助您解决“为什么他们没有在学校教我这一点?” 部分。我可以自由编辑它。
尼克·阿列克谢耶夫


好吧,我问为什么在我的大学不教它的唯一原因是因为我还没有遇到过任何可能在大学里读过的EE学生。因此,对我来说,似乎没有任何一所大学可以做到。
量子231 2014年

@ quantum231这是在我的大学NTNU-挪威完成的。
CK

Answers:


23

我的经验法则是,如果产品需要以下一项或多项功能,则应考虑使用操作系统:TCP / IP堆栈(或其他复杂的网络堆栈),复杂的GUI(可能带有窗口和事件之类的GUI对象) )或文件系统。

如果您已经完成了一些裸机编码,那么您可能已经熟悉超级循环程序架构。如果产品的固件要求非常简单,可以通过可维护的超级循环来实现(并希望可以进行某种程度的扩展),则您可能不需要操作系统。

随着软件需求的增加,超级循环变得越来越复杂。当软件需求如此之多,以至于超级循环变得过于复杂或无法满足系统的实时需求时,就该考虑另一种架构了。

RTOS体系结构允许您将软件需求划分为任务。如果做得正确,这将简化每个任务的执行。通过任务优先级,RTOS可以更轻松地满足实时要求。但是,RTOS不是万能的。RTOS会增加整个系统的复杂性,并使您容易遇到新型错误(例如死锁)。作为RTOS的替代方案,您可以考虑使用基于事件的状态机体系结构(例如QP)。

如果您的产品具有网络,复杂的GUI和文件系统,那么您可能正在考虑使用功能齐全的操作系统,例如VxWorks,Windows或Linux。功能齐全的操作系统将包括用于底层细节的驱动程序,并使您可以专注于应用程序。


8

这实际上取决于您对“嵌入式系统”的定义。可能有人会声称,如果它不是裸机编程,那么它就不是嵌入式的(这排除了您的问题),但是我不同意这一点-我认为任何旨在执行一项功能的系统,即,仅运行一个特定的“应用程序”,可以称为嵌入式系统。

也就是说,应该很容易想象会从全面运行的OS的服务中受益的情况。例如,在我工作的地方,人们经常在运行于Windows之上的仪器设计套件之上构建测试设备。这些系统被配置为引导到测试站配置并锁定一般用法(以防止站损坏),因此可以说是嵌入式系统。

但是,仅购买现成的I / O模块,将其插入机架式PC并在GUI中修改配置可能无法被某些人视为嵌入式系统设计。对于较不常见的情况,请考虑使用带有FPGA的自定义过程控制器,您要对其进行一些精美的数据记录。您可能会嵌入软核处理器系统(具有现有的BSP)并运行实时linux,以便运行网络堆栈(用于日志记录和NTP等),并进行逻辑上的所有其他操作。


7

我(非常模糊)的经验法则是,如果您需要多个控制线程(例如至少一个涉及协议或状态机的设备以及其他需要执行的操作),那么某些OSish软件将使您的生活更轻松


设置实时操作系统需要一定的工作量。除非使用switch基于状态的机器的努力超过了这些,否则基于机器的状态switch会变得更好。此外,在8x51和TMS2000平台上,我都实现了一个简单的基于堆栈的协作任务切换器。无需操作系统逻辑来决定何时切换-每当一个“线程”认为可能需要休息一下,便会切换到另一个。如果该其他线程看到尚未等待的内容尚未发生,则它可以在比普通OS决定是否进行切换所花费的时间短的时间内切换回第一个。
2014年

可能需要在真正的软件多任务“线程”(确实指向操作系统)与响应硬件条件的更简单中断之间进行区分。
克里斯·斯特拉顿

1

一个老问题,但我还是要评论。

即使您没有网络堆栈或类似的组件,由于嵌入式应用程序中有足够的进程,在需要任务计划程序的时候,也可以考虑使用RTOS。编写一个简单的基于计时器的协作式多任务调度程序并不难,但是确保卡住的进程不会阻塞应用程序的其余部分,这样可能需要一段时间才能正确。您需要实施一种具有某些规定的优先级系统,以在尚未完成的过程中将其排入队列。

RTOS还为您提供了诸如内存保护之类的功能,这使跟踪C代码中的一些常见错误变得更加容易,但是简单的微控制器可能根本无法处理复杂的内存保护。例如,MSP430允许您以高级方式分离代码和数据,但是没有细粒度的内存访问控制。


0

操作系统实际上弥合了硬件和应用程序软件之间的差距(通过设备驱动程序)。换句话说,它为程序员提供了相对高级的平台,最终降低了代码复杂度。此外,操作系统为执行应用程序提供了强大而灵活的平台。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.