使用Erlang进行嵌入式开发是否切合实际?

iva*_*rec 19 embedded erlang

如果是这样,存储和内存占用量是多少?

编辑

我对此做了一些研究,但没有找到有用的信息.该网站http://www.erlang-embedded.com/完全没有帮助.博客文章http://www.1011ltd.com/web/blog/post/embedded_erlang有点帮助,但听到有更多经验的人的答案会很高兴.

编辑2

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

编辑3

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

jeb*_*jeb 5

什么是嵌入式的?

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

但是如果嵌入式适用于WindowsCE或运行在非PC基础硬件上且具有> 64MB Ram和1GB Flash的Linux,
那么erlang应该没有问题.

  • +1:创建Erlang的原因 - 驱动爱立信的电信交换机 - 可以说是一个嵌入式系统. (3认同)
  • @KyleStrand 你只是在谈论答案的第一部分。这里的重点是“嵌入式”不一定限于这样的小系统。至于语句的可支持性,仅 Erlang 运行时就占用 2-3 MB,因此标准版本确实不会在这样的系统上运行。此外,64 kB RAM 限制意味着 8 位或 16 位处理器,但所有支持的平台都是 32 位或 64 位。请参阅此处的构建要求:http://erlang.org/erldoc → 系统文档 → 安装指南 → 构建。 (2认同)

Jr0*_*Jr0 5

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

不是试图哄骗,但我认为答案是"是的!!" 或没有!!" 取决于你对硬件的假设以及你试图解决的问题,这些问题不容易通过像C这样的标准来解决(也就是说,为什么你不使用像C这样的东西,必须有一个理由......减少代码 - 大小,需要热升级,{erlang_value_prop,n}等).

根据一定的标准,答案似乎是"是".证据包括:

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


Mik*_*ail 4

不,

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

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

  • -1:缺少编译器有什么关系?许多嵌入式系统都运行某种解释器。至于缺乏低级访问权限,这是错误的。您可以编写[端口驱动程序](http://www.erlang.org/doc/tutorial/c_portdriver.html)或[在BIF中编译](http://www.trapexit.org/Adding_my_own_BIF)来降低级访问。 (4认同)
  • @Mikhail:Erlang 是用纯 ANSI C 编写的。Ericcson 的持续集成构建系统在[几乎所有内容](http://www.erlang.org/doc/installation_guide/INSTALL.html#id64305) 上对其进行了测试桌面和服务器平台都可以,至于传统的嵌入式CPU,众所周知它不仅可以在ARM上运行,[HiPE功能也可以](http://www.erlang.org/doc/installation_guide/INSTALL.html#id72090 )。诚然,32 位以上嵌入式系统比 ARM 有更多功能,但如果它不能在您选择的 CPU 上运行,我会感到惊讶。显然它不适用于 8 位机。 (4认同)
  • 1.我猜Erlang解释器是用C写的,交叉编译怎么样?2. FFI转C功能怎么样?没有 C 语言是不可能的,但这没有理由使用一些更具体的工具来完成工作。 (3认同)
  • @WarrenYoung 缺乏编译器很重要,因为如果不首先构建第二个编译器的工作副本,则可能无法在某些系统上构建 Erlang 的工作副本。这是相当困难的。您甚至可能需要构建一个操作系统。当我说“不”时,这是对“实用”限定词的回应。 (3认同)
  • @haole 当你说嵌入式时,你是在谈论 4 核 ARM,还是在谈论具有 200k 内存且具有一些高效 A/D 转换器的系统。 (2认同)