嵌入式Linux还是eCos?

10

一种看待嵌入式Linux的方法是从桌面Linux开始,舍弃嵌入式系统不需要的部分(这是否真实?),而eCos是从头开始为嵌入式系统设计的。

现在,我们假设使用ARM处理器,可能是ARM7 - 性能有影响吗?实际上,我们谈论的是一个非常轻负载的系统,最多每天500个交易。

一个比另一个(或FreeRTOS等)有什么优势?稳定性、成熟度、性能、开发工具或其他方面?

我所能想到的就是,如果我确定永远不会移植到另一个操作系统,那么如果选择嵌入式Linux,我就不需要一个操作系统抽象层来让我在主机上(桌面Linux箱)进行单元测试。

有什么想法或评论吗?谢谢。


3
如果你正在使用ARM7处理器,那么它可能没有内存管理单元(MMU)。因此,你需要使用无虚拟内存支持的Linux系统,也就是μClinux。 - Jay Atkinson
投票关闭,原因是问题过于宽泛。相关链接:https://dev59.com/zV8e5IYBdhLWcg3wTJCL - Ciro Santilli OurBigBook.com
3个回答

9
我在所有设备上安装的Linux都是从头开始构建的,而不是某个发行版的精简版本。
eCos和Linux有不同的目标。Linux旨在成为一个功能齐全的类Unix系统,因此并不太关心最低系统要求。eCos是一种实时操作系统,专为常常资源受限的系统设计。这两个操作系统之间存在很多重叠,许多情况下两者都能同样好地运行。
根据我的经验,如果您的系统具备足够的资源且您的需求较为复杂,则使用Linux进行开发会更快。相比实时操作系统开发者,更容易找到熟练的Linux开发者,工具更便宜,进程之间互相保护,您 tend to have better visibility into the running system等等。
另一个(更好的,我认为)替代eCos的选择是RTEMS (http://www.rtems.com)。它已经存在更长时间,上次我检查时,支持的体系结构比eCos多。它还有一个PC BSP,并在qemu下运行以进行仿真。

9
在我看来,在ARM7上安装Linux没有真正的好处;因为ARM7没有MMU,而内存保护是使用诸如Linux这样的操作系统的主要原因。uClinux可以在没有MMU的目标上运行,但您已经失去了使用Linux最有说服力的原因之一,并且仍然需要巨大的内存资源(4M闪存,16M RAM将是合理的最小值)。
许多ARM7设备没有外部内存总线可用于连接那么多内存,芯片上的闪存和RAM通常从32K到1M不等,具体取决于设备。
Linux本质上并非“实时”的。为了具有实时功能,它通常与实时内核配对,其中Linux基本上作为空闲任务运行,或者在具有该功能的目标上作为单独的虚拟机运行。因此,如果确定性和快速响应外部事件是要求,则需要类似eCOS的RTOS。
eCOS非常棒,因为它具有大量的附加功能和设备支持,可以与大多数商业产品竞争。但是像FreeRTOS这样的东西可能更容易“启动”,但提供的只是一个线程调度程序和进程间通信机制。像文件系统或TCP / IP这样的东西需要从第三方获取(尽管同样适用于嵌入式系统的小型免费解决方案)。
如果您使用诸如FreeRTOS或uC / OS-III之类的简单内核,则不会浪费太多时间,因此投资不会阻碍您下次使用其他东西。另一方面,Linux可能会阻止您在下次使用更小且更专注的东西时,而您的后续项目成本可能比需要支持您选择的操作系统要高得多。

4

嵌入式Linux == 在99%的情况下等同于Linux。只需以不同的方式配置内核。

eCos性能上最大的区别在于,根据您的实现/配置,您可以预期响应时间,而使用Linux时则取决于中断控制器。

Linux拥有比eCos更庞大的粉丝群,因此开发方面得到更多帮助,并且支持各种CPU。此外,根据您需要的驱动程序,您可以在运行Linux的PC上编译和运行程序。

Linux可以检测死锁并发送自动响应/重新启动以保持系统的高可用性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接