您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > javascript

在微控制器平台等小型物联网设备上运行 JavaScript

时间:2022-02-11 09:57:46  来源:  作者:粤嵌教育

当谈到嵌入式开发时,您通常首先查看您在硬件级别尝试做什么。例如,如果您需要读取某种传感器并将公式应用于其值,以便您可以在某处显示结果,您可以查看哪些微控制器带有模数转换器 (ADC),并且还可以驱动一个显示器。适合您目的的微控制器越小,它就越便宜。当然,微控制器越小,在可编程性方面就越有限。因此,对于非常小的设备,您可能需要求助于汇编编程,如果您以后决定切换平台,这可能会损害可移植性。一般来说,您应该选择适合您目的的小型但不是最小的平台。您应该考虑未来扩展或增加要求的可能性,因此在硬件级别留出一些空间通常是个好主意。

 

当您的用例允许使用更大的微控制器时,通常是编程语言 C。通过使用 C 而不是汇编,您可以获得两个关键要素:可移植性和易用性(包括可读性和可维护性)。 C 被设计为“便携式程序集”,因此它几乎是所有小型微控制器(极小的微控制器除外)的理想语言。随着您在规模和功能的阶梯上攀升,有更多的选项:C++、操作系统(FreeRTOS、NuttX 等),甚至是以太网和 WiFi 等高级连接。除了这些选项,更多的编程语言开始变得可用。某些语言由于其语义,无法提前编译为机器代码。这些语言中有 JAVAScript。所以我们需要问自己的第一件事是“JavaScript 引擎能否在我们平台的约束下运行?”正如我们将在下面看到的,答案是肯定的。

 

与汇编、C 或 C++ 相比,高级语言的最大好处在于它们的安全性。一个不匹配的错误通常会导致 macOS 计算机出现分段错误,但在微控制器中,进行嵌入式开发时,它可能会导致系统级崩溃或死机。调试也受到更多限制,因此任何有助于编写安全代码的东西都会有所帮助,从这个意义上说,高级语言非常有用。

 

在微控制器平台等小型物联网设备上运行 JavaScript

另一个好处与代码在微控制器中的运行方式有关。通常,微控制器从 ROM 中读取机器代码。 ROM通常是通过特殊的程序编写的,因此更改它并不方便。这限制了进行代码更新或在程序版本之间轻松迭代的选项。解释器可以从 RAM 或 ROM 中读取其程序,从而可以在不刷新的情况下进行代码更新。当然,这有其自身的权衡:重新启动后 RAM 会被擦除,因此每次都需要重新加载程序。 RAM 也非常有限,因此程序必须很小。高级语言的表达性在这方面有很大帮助:只需很少的代码行,就可以表达复杂的行为和逻辑。

 

这些好处适用于大多数高级、解释或 JITted 语言,但 JavaScript 带来了一些自身的好处。对于初学者来说,JavaScript 拥有一个拥有大量库的庞大社区。这些库中的大多数不能在微控制器上运行,因为它们需要系统级支持(来自 Node.js 或浏览器),但其中一些可以,这非常有用。由于语法相似,C 和 C++ 程序员很容易掌握 JavaScript,因此习惯于嵌入式开发人员在阅读 JavaScript 代码库时不会遇到什么麻烦。此外,如果您还记得介绍,我们提到 JavaScript 旨在为常见的自动化任务和快速迭代编写小脚本。微控制器通常用于同一场景!与硬件设备交互的小块逻辑,用于自动化或报告任务。

 

因此,总而言之,以下是考虑将 JavaScript 或其他流行的解释语言用于微控制器编程的原因:

 

更高级别的附加安全性:没有一次次碰撞; 更好地处理错误、复杂数据类型和类型转换; 更具表现力。

快速迭代:可以从RAM加载脚本,每次测试都不需要刷机。 远程更新是可能的。

巨大的社区和大量的库(其中大部分需要一些调整才能在嵌入式开发平台上运行):捆绑器和压缩器可用于确保尽可能小的代码;为 C、C++(和 Java)开发人员提供熟悉的语法。



Tags: JavaScript   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
当谈到嵌入式开发时,您通常首先查看您在硬件级别尝试做什么。例如,如果您需要读取某种传感器并将公式应用于其值,以便您可以在某处显示结果,您可以查看哪些微控制器带有模数转换...【详细内容】
2022-02-11  Tags: JavaScript  点击:(0)  评论:(0)  加入收藏
千呼万唤的全球2020的JS报告终于出来了。 我们来看看这一个糟糕却又不平凡的一年,JS发生了什么样的变化。 尽管2020年很糟糕,但 JavaScript 作为一个整体仍然设法向前发展。随...【详细内容】
2021-01-14  Tags: JavaScript  点击:(264)  评论:(0)  加入收藏
逻辑赋值是对现有数学和二进制逻辑运算符的扩展。我们先复习一下,然后看看把它们结合在一起能得到什么。首先,我们来看下 JS 中条件运算符与无条件运算符之间的区别 。无条件...【详细内容】
2020-10-15  Tags: JavaScript  点击:(89)  评论:(0)  加入收藏
在 JavaScript 中使用循环时,需要理解两个关键点:可枚举的属性和可迭代的对象。可枚举的属性可枚举对象的一个定义特征是,当通过赋值操作符向对象分配属性时,我们将内部 enumera...【详细内容】
2020-09-22  Tags: JavaScript  点击:(82)  评论:(0)  加入收藏
作者:ConardLi转发链接:https://mp.weixin.qq.com/s/emJ_LjG7FNR81cxl8BnrMA前言分析你网页中的 JavaScript Bundles 大小,并限制网页中的 JavaScript 数量,可以减少浏览器花费...【详细内容】
2020-08-24  Tags: JavaScript  点击:(91)  评论:(0)  加入收藏
今年年初,我终于决定将自己的网站从基于 PHP 的 CMS 移植到基于 JavaScript 的静态网站生成器(SSG)了。原因如下: 虽然一开始我是“全栈”开发人员,但现在我只负责前端工作:如果我...【详细内容】
2020-07-29  Tags: JavaScript  点击:(69)  评论:(0)  加入收藏
这篇文章列举了一些技巧,可帮助你写出更好的 JavaScript 代码,从而提高性能。...【详细内容】
2020-07-21  Tags: JavaScript  点击:(54)  评论:(0)  加入收藏
在我们开发的许多应用程序都会用到某种日期功能,无论是内容的创建日期还是活动的时间戳等等。处理日期和时间戳格式可能会很麻烦。在本文中,我们将一起学习如何在 JavaScript...【详细内容】
2020-07-18  Tags: JavaScript  点击:(71)  评论:(0)  加入收藏
众所周知,JavaScript 一直在快速变化。在新的 ES2020 中,有很多很棒的特性,我们大都已经迫不及待尝试了。老实说,有时我们可以用不同角度来编写代码,同样也能达到相同的效果,而且...【详细内容】
2020-07-03  Tags: JavaScript  点击:(42)  评论:(0)  加入收藏
在 JS 没有提供一种简便的方法来替换所有指定字符。 在 Java 中有一个 replaceAll() ,replaceAll(String regex, String replacement))方法使用给定的参数 replacement 替换...【详细内容】
2020-06-24  Tags: JavaScript  点击:(39)  评论:(0)  加入收藏
▌简易百科推荐
当谈到嵌入式开发时,您通常首先查看您在硬件级别尝试做什么。例如,如果您需要读取某种传感器并将公式应用于其值,以便您可以在某处显示结果,您可以查看哪些微控制器带有模数转换...【详细内容】
2022-02-11  粤嵌教育    Tags: JavaScript   点击:(0)  评论:(0)  加入收藏
api接口指的是应用程序编程接口(Application Programming Interface),是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件...【详细内容】
2022-02-03  风度翩翩的番茄鸡蛋    Tags:Js   点击:(17)  评论:(0)  加入收藏
上文中咱们简单提到了JDK9中Flow接口中的静态内部类实现了响应式流的JAVA API,并且提供了一个一个Publisher的实现类SubmissionPublisher。本文将先梳理一下接口中具体的处理...【详细内容】
2022-02-03  蜜糖的代码注释    Tags:JDK   点击:(10)  评论:(0)  加入收藏
什么是闭包?相信很多人听了有点懵,然后去百度查了一下官方的定义“闭包就是能够读取其他函数内部变量的函数”发现感觉自己更懵了。关于闭包如果只看那官方的定义的话确实不是...【详细内容】
2022-01-21  编程小帅    Tags:JS   点击:(23)  评论:(0)  加入收藏
预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十...【详细内容】
2022-01-04  锋享前端    Tags:Javascript   点击:(28)  评论:(0)  加入收藏
说明面向对象的三个基本特征是:封装、继承、多态。call函数:预定义的JavaScript方法,用来调用所有者对象作为参数的方法。上节内容:面向对象,类、对象、属性、方法,静态属性和方法...【详细内容】
2022-01-04  IT小奋斗    Tags:JavaScript   点击:(34)  评论:(0)  加入收藏
JavaScript 的故事很长。在今天,JavaScript 的运行从移动设备到服务器端,无论您是计划在 2022 年学习或使用 JavaScript ,还是目前正在使用JavaScript进行开发,还是已经熟练掌握...【详细内容】
2021-12-30  Mason程    Tags:JavaScript   点击:(36)  评论:(0)  加入收藏
1、通过条件判断给变量赋值布尔值的正确姿势// badif (a === 'a') { b = true} else { b = false}// goodb = a === 'a'2、在if中判断数组长度不为零...【详细内容】
2021-12-24  Mason程    Tags:JavaScript   点击:(36)  评论:(0)  加入收藏
给新手朋友分享我收藏的前端必备javascript已经写好的封装好的方法函数,直接可用。方法函数总计:41个;以下给大家介绍有35个,需要整体文档的朋友私信我,1、输入一个值,将其返回数...【详细内容】
2021-12-15  未来讲IT    Tags:JavaScript   点击:(48)  评论:(0)  加入收藏
1. 检测一个对象是不是纯对象,检测数据类型// 检测数据类型的方法封装(function () { var getProto = Object.getPrototypeOf; // 获取实列的原型对象。 var class2type =...【详细内容】
2021-12-08  前端明明    Tags:js   点击:(48)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条