【问题标题】:Is it practical to use Erlang for embedded development? [closed]使用 Erlang 进行嵌入式开发实用吗? [关闭]
【发布时间】:2013-01-15 03:35:10
【问题描述】:

如果有,存储和内存占用是多少?

编辑

我对此进行了一些研究,但未能找到有用的信息。网站http://www.erlang-embedded.com/ 根本没有帮助。博客文章 http://www.1011ltd.com/web/blog/post/embedded_erlang 有点帮助,但很高兴听到有更多经验的人的回答。

编辑 2

我打算用于 Erlang 的硬件有 32Mb 的系统闪存和 512Mb 的 RAM。它是双核,每核 400Mhz。它运行 Linux 版本 2.6.18。

编辑 3

我对 Erlang 感兴趣的动机是优雅地解决并发问题。在我工作的项目中,我们有一些复杂的中间件软件,它们并不健壮,难以理解且难以扩展。当然,你可以用 C 编写出色的并发软件,但 Erlang 似乎是解决这个问题领域的更好工具。

【问题讨论】:

标签: erlang embedded


【解决方案1】:

不,

  1. 许多嵌入式系统没有 Erlang 编译器,而所有嵌入式系统都有 C 编译器,而且大多数都有 C++。
  2. Erlang 缺乏嵌入式系统所需的低级访问权限。

当然可以在 Raspberry Pi 集群上安装 Erlang,但这不是嵌入式设备。

【讨论】:

  • 1.我猜 Erlang 解释器是用 C 编写的。交叉编译呢? 2. FFI to C 函数呢?没有 C 是不可能的,但这没有理由使用一些更具体的工具来完成工作。
  • @haole 当您说嵌入式时,您是在谈论 4 核 ARM,还是在谈论具有 200k 内存且具有一些高效 A/D 转换器的系统。
  • -1:缺少编译器与它有什么关系?许多嵌入式系统运行某种解释器。至于缺乏低级访问权限,那是错误的。您可以写a port drivercompile in a BIF 以获得低级访问权限。
  • @WarrenYoung 缺少编译器很重要,因为如果不先构建第二个编译器的工作副本,可能无法在某些系统上构建 Erlang 的工作副本。这是相当困难的。您甚至可能需要构建一个操作系统。当我说no 时,它是对practical 限定符的回应。
  • @Mikhail:Erlang 是用纯 ANSI C 编写的。Ericcson 的持续集成构建系统在 pretty much everything 上对其进行测试,就桌面和服务器平台而言,对于传统的嵌入式 CPU,它是众所周知的不仅可以在 ARM 上工作,the HiPE feature works, too。诚然,嵌入式 32 位以上的内容比 ARM 更多,但如果它也不能在您选择的 CPU 上运行,我会感到惊讶。显然它不适用于 8 位。
【解决方案2】:

我会回应这个问题含糊不清的观点。但是,...

不是想喷人,但我认为答案是“是的!!”或者没有!!”取决于您对硬件的假设以及您试图解决的问题,这些问题不容易通过像 C 这样的更标准的东西来解决(即,为什么不使用像 C 这样的东西,一定有一个原因......减少代码 -大小,需要热升级,{erlang_value_prop, n}等)。

在一定的标准下,答案似乎是“是”。证据包括:

  • 嵌入式ERLAN?绝对 (http://www.1011ltd.com/web/blog/post/embedded_erlang)
  • 它嵌入在 ATM 交换机和其他电信设备中
  • Google 上有(或曾经)一个嵌入式 Erlang 组
  • 我认为 Ulf Wiger 将嵌入式 Erlang 幻灯片作为他与 Erlang Solutions 合作的一部分

【讨论】:

  • 我会寻找 Google 群组。我正在考虑使用 Erlang 解决用 C 编写的中间件中的复杂并发问题。它很难理解,很难编写,而且绝对不健壮。但由于我不知道如何在其中编程,所以我在开始任何事情之前都在寻找表演终结者。
【解决方案3】:

嵌入式对您来说是什么?

在我的世界里,它是一个闪存小于 1MB 且通常为 ~64kB 内存的系统。
在我的世界中存在 C 编译器,有时还有 C++ 编译器。
但是没有人听说过为这样的系统提供 erlang 编译器(也没有人错过它们)。

但是,如果嵌入式适用于您的 WindowsCE 或在具有 > 64MB 内存和 1GB 闪存的非 PC 基础硬件上运行的 linux,
那么erlang应该没有问题。

【讨论】:

  • 我已编辑问题以添加有关我的平台的更多信息。基本上,32Mb 的磁盘空间和 512Mb 的 RAM。双核。
  • +1:创建 Erlang 的最初原因——驱动爱立信的电信交换机——可以说是一个嵌入式系统。
  • @Warren 这与答案关于此类系统上缺少 Erlang 的(不受支持的)断言直接矛盾。不知道为什么它值得 +1。
  • @KyleStrand 您只是在谈论答案的第一部分。这里的重点是“嵌入式”不一定限于如此小的系统。至于语句的可支持性,单独的 Erlang 运行时时钟在 2-3 MB,因此标准版本确实无法在这样的系统上运行。此外,64 kB RAM 限制意味着 8 或 16 位处理器,但所有支持的平台都是 32 或 64 位。请参阅此处的构建要求:erlang.org/erldoc → 系统文档 → 安装指南 → 构建。
  • @WarrenYoung Man,很高兴我留下了该评论,因为您的评论与 Erlang 的特定运行时要求相比,比任何现有答案都更有用!
猜你喜欢
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2010-11-12
  • 1970-01-01
  • 2011-03-14
相关资源
最近更新 更多