Erlang 非常普遍,现在可运行在来自Microchip的基于MIPS的PIC32 MCU

Maxim Kharchenko 是LING之父,LING是另一种实现Erlang的方式。现在他是这个Cloudozer公司的技术总监,该公司致力于使用LING创建一个更加好的云方案,另外,Cloudozer 公司同时也是致力于使LING/Erlang 适应MIPS MCU以及其他的嵌入式平台。

为什么还停留在70年代?

如果还有那么一个编程的稳定的领域是如白开水一样,那一定是这个嵌入式领域。在这个领域,C语言仍然是主要的角色,并且几十年来很多方法从未改变过。

在黄金年代,有一个清晰的理由去坚持这个被证明的技术,因为嵌入式硬件功耗的问题,以及有限的内存大小和CPU速度。

光阴似箭,日月如梭,现在我们有很多很多非常强大的硬件平台进入竞技场。这样就将焦点转移到被证明的嵌入式技术从未被考虑的地方。快速交互开发、扩展集成能力,自省,热代码交换- 这些C语言怎么能够应付呢?

一个理想的嵌入式应用程序的编程语言

每个人都知道没有所谓的灵丹妙药,特别是在编程上。然而新兴的硬件平台要求嵌入式开发者在大型软件的世界中通过脚本语言和其他技术去寻求更加方便的方法。

当然,虽然有些很棒的工具如Python 或者Lua 简化和加速了发展,但是有些技术更加适合嵌入式的需求。

Erlang就是其中一种,它是一种编程语言以及一个相关的运行时,由爱立信公司在90年代开发出来的。

Erlang简介

出人意料的是,Erlang 本来就是用来实现固件的。对于AXD301,Erlang作为一个基础的固件开发,AXD301是一个开关,可以为1998年的一个小国家所有的电话需求服务。从一开始,该语言本身就在嵌入式世界作为一个神兵利器横空出世。
一个分布式、容错的,并发的,带垃圾回收的编程语言,支持软实时保护,代码热交换、信息传递、响应式编程,和自省吗?所有这些功能听起来就像为倾听者演奏音乐一样。

Erlang 对于物联网而言看起来就像一个自然而然的选择,因为它可以用于为新的强大的嵌入式平台写出许多高集成,需要大力维护的代码。

让Erlang 运行在基于MIPS的PIC32 MCU上

然而,一切事情都是带有附加条件的。就拿Erlang 案例来说,它是虚拟机(VM),这个没人敢说是小的,过去,有大量的工程试着去适应BEAM(主流的Erlang VM)为嵌入式应用程序。他们的成功是有限的,由于标准的VM强加的要求。它必须准备运行它在Linux中,有大量的内存,提供大量的磁盘空间和传统的文件系统。这样的要求不符合大多数较小的微控制器,包括基于mips PIC32单片机家族来自于微芯技术公司(Microchip )。

引擎盖下的基于mips PIC32单片机

引擎盖下的基于mips PIC32单片机

幸好,车到山前必有路。一家小公司——Cloudozer LLP开发了另一种的Erlang叫做LING。LING可以运行Erlang程序在云终端的裸机或虚拟机。由于简约和独立性,LING可以很容易的移植到许多架构和环境。我们正在进行以下几方面的努力:POSIX(Linux),ARM(Raspberry Pi),以及现在的MIPS(PIC32)。

为了缩小这个LING虚拟机的尺寸大小,有些事情是可以忽略的(比如正则表达式和密码函数)这样可以缩小这个最终图片尺寸到大约1M。这意味着LING将消耗大约50%的运行RAM。数据RAM是用于作为Erlang 进程的堆栈。

这个演示程序计算了几个素数如下面的截图所示。

一段用Erland 写的演示程序运行于PIC32 MCU

一段用Erland 写的演示程序运行于PIC32 MCU

下一个是什么?

当然,这只是万里长征第一步。这个PIC32端口表明在更小的MCU都可以运行Erlang。语言的垃圾回收动态特性可以缩短开发周期,提高嵌入式软件的可靠性与对性能的影响的容忍性。

Cloudozer目前正工作在LING静态编译版本(代号为Project L),它不需要虚拟机来运行。这个L编译器发布unikernels(应用程序和操作系统一起编译)就像microkernel,它可以直接运行在裸机。

从一开始,Project L旨在支持MIPS架构并且预计到2016年可实现开源版本。

原文链接:
http://blog.imgtec.com/mips-processors/erlang-now-on-mips-pic32-mcus-mic...

--电子创新网--
粤ICP备12070055号