10

一种看待它的方式 - 嵌入式 Linux 从桌面 Linux 开始,并抛弃了嵌入式系统不需要的部分(这真的是真的吗?),而 eCos 是从头开始为嵌入式系统设计的。

现在,假设一个 ARM 处理器,可能是 ARM 7 - 性能会有所不同吗?实际上,我们谈论的是一个负载非常低的系统,每天最多 500 笔交易。

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

我所能想到的就是,如果我确定我永远不会移植到另一个操作系统,那么如果我使用嵌入式 Linux,我不需要一个操作系统抽象层来允许我在主机(桌面 Linux 机器)。

有什么想法或意见吗?谢谢。

4

3 回答 3

9

我安装 Linux 的每台设备都是从头开始的,并不是某些发行版的精简版。

eCos 和 Linux 有不同的目标。Linux 旨在成为一个功能齐全的类 Unix 系统,因此不太关心最低系统要求。eCos 是一种实时操作系统,专为资源受限的系统而设计。这两个操作系统之间有很多重叠之处,在许多情况下,两者都可以很好地工作。

以我的经验,如果你的系统有足够的资源并且你的要求不重要,那么使用 Linux 的开发速度会更快。与 RTOS 开发人员相比,找到称职的 Linux 开发人员更容易,工具更便宜,进程相互保护,您往往对正在运行的系统有更好的可见性,等等。

eCos 的一个(更好的,恕我直言)替代品是 RTEMS(http://www.rtems.com)。它存在的时间更长,上次我检查时,它支持的架构比 eCos 多。它还有一个 PC BSP 并在 qemu 下运行以进行仿真。

于 2010-04-20T17:34:25.420 回答
9

将 Linux 放在 ARM7 IMO 上并没有真正的好处。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 等简单的 Kernel,您将不会浪费太多时间,因此投资不会成为下次使用其他东西的障碍。另一方面,Linux 可能会阻止您下次使用更小且目标更窄的东西,并且巡视后续项目的成本可能比仅支持您选择的操作系统所需的成本要高得多。

于 2010-04-23T18:50:23.660 回答
4

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

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

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

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

于 2010-04-20T05:55:01.020 回答