【原创】2021-03嵌入式月刊:数一数能跑在单片机上的脚本语言

目录

1.  前言

2.  MicroPython:Python for microcontrollers

3.  Espruino:JavaScript for Microcontrollers

4.  eLua: Lua for microcontrollers

5.  尝试设计自己的脚本语言

6.  结束语


1.  前言

        一直以来,因为单片机的性能和成本的原因,大多数单片机开发者所用的主要编程语言要么是汇编,要么就是C,连C++都很少有人用。但随着arm cortex M系列的单片机越来越流行,且越来越强大,单片机上的开发语言也开始百花齐放,不断有人试图在单片机上移植各种脚本语言。本期就来谈一谈可以用于单片机上的几种脚本语言。

        顺便提一下,我一直以来觉得做技术的有两个境界,一个境界是把东西越做越大,比如超大功率的电力电子设备,而另一个境界是就是把东西越做越小,比如芯片。这些脚本语言,某种程度上说就属于把东西越做越小,让原本只能在PC上跑的东西,运行到了单片机上。

 

2.  MicroPython:Python for microcontrollers

        MicroPython的网址:http://www.micropython.org/

        现在应该没有人没听说过python吧,如果确实没有听说过,那我觉得该更新一下自己的技术,与时俱进了。在今天Python用得如此广泛,不管是web框架、科学计算、金融、还是自动化测试脚本,都经常能见到它的身影。本人虽然是做嵌入式系统的,但平常工作中所有的测试脚本也都是用python写的。

        为了让单片机也能用上python,2014年MicroPython诞生了。MicroPython最早是在 STM32F4 微控制器平台上实现的,现在已经移植到 STM32L4、STM32F7、ESP8266、ESP32、CC3200等众多芯片上。不过目前为止,我只在极客的开源硬件作品中看到过Micropython,尚未在真正的工业产品中看到它们。(也可能是我孤陋寡闻了^^)

        不过根据网站上的介绍,MicroPython最少也需要256k的flash和16k的RAM(对于单片机依然还是有点大)。它的语法是基于Python 3.4的语法标准。因为要适应嵌入式微控制器,所以裁剪了大部分标准库,仅保留部分模块如math、sys的部分函数和类。

 

3.  Espruino:JavaScript for Microcontrollers

        Espruino的网址:http://www.espruino.com/

        JavaScript可以说是前端之王(IT中,任何一项技术都有众多挑战者,是不是大家都认可它是前端之王,我可说不准^^)。而Espruino就是一个用于单片机上的JavaScript解释器。目前,它也被移植到了STM32F1/F4和ESP8266,ESP32等芯片上。它提供了一个串口终端,可以让开发者通过串口在开发板上使用JavaScript。有兴趣也可以看一下这篇文章:

        http://www.izhangchao.com/internet/internet_233724.html

        另外,已经有人在考虑将Typescript移植到stm32这类单片机上了。或许过几年我们可以看到。

 

4.  eLua: Lua for microcontrollers

        网址:https://github.com/elua/elua

        Lua本身就是一种轻量小巧的脚本语言(编译后仅仅一百余K),用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中(注意是”嵌入应用程序中”,而不是”嵌入式应用程序”),从而为应用程序提供灵活的扩展和定制功能。

        Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。eLua是专门为嵌入式设备提供的Lua移植。同样的,它也提供了一个串口终端,可以让开发者通过串口运行Lua脚本。

 

5.  尝试设计自己的脚本语言

        如果你愿意,你也可以设计一款专门跑在单片机上的脚本语言,也并不是很难。当然,要让它被别人接受并流行起来,那就是另外一回事情了。Github上也确实有人这么尝试了,如:https://github.com/Skiars/berry

 

6.  结束语

        脚本语言能给单片机开发带来什么样的便利?

        基本上,我所见过的脚本语言都比C语言容易使用,不用担心内存泄漏,语法灵活,对字符串处理工作格外友好。但目前看起来,这些便利还不足以让它们在真正的单片机产品设计中流行起来。我想有好几个原因,第一原因是支持它们需要格外的存储器空间,而单片机产品通常对成本很敏感。第二个原因,大多数单片机产品的应用场景中,并不需要大量字符串处理。第三个原因,所有的单片机工程师对C都很熟悉,单片机开发规模也不大,通常可以一个人负责所有软件工作,没有必要再去折腾脚本语言。


版权声明
        所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
        所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
        所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。

转载注意事项
        除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
        你可以在非商业的前提下免费转载,但同时你必须:
                保持文章原文,不作修改。
                明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
                商业用途请电话联系本人。
                微信公众号转载一律不授权,除非联系本人并获得授权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值