当谈到嵌入式开发时 , 您通常首先查看您在硬件级别尝试做什么 。例如 , 如果您需要读取某种传感器并将公式应用于其值 , 以便您可以在某处显示结果 , 您可以查看哪些微控制器带有模数转换器 (ADC) , 并且还可以驱动一个显示器 。适合您目的的微控制器越小 , 它就越便宜 。当然 , 微控制器越小 , 在可编程性方面就越有限 。因此 , 对于非常小的设备 , 您可能需要求助于汇编编程 , 如果您以后决定切换平台 , 这可能会损害可移植性 。一般来说 , 您应该选择适合您目的的小型但不是最小的平台 。您应该考虑未来扩展或增加要求的可能性 , 因此在硬件级别留出一些空间通常是个好主意 。
当您的用例允许使用更大的微控制器时 , 通常是编程语言 C 。通过使用 C 而不是汇编 , 您可以获得两个关键要素:可移植性和易用性(包括可读性和可维护性) 。 C 被设计为“便携式程序集” , 因此它几乎是所有小型微控制器(极小的微控制器除外)的理想语言 。随着您在规模和功能的阶梯上攀升 , 有更多的选项:C++、操作系统(FreeRTOS、NuttX 等) , 甚至是以太网和 WiFi 等高级连接 。除了这些选项 , 更多的编程语言开始变得可用 。某些语言由于其语义 , 无法提前编译为机器代码 。这些语言中有 JAVAScript 。所以我们需要问自己的第一件事是“JavaScript 引擎能否在我们平台的约束下运行?”正如我们将在下面看到的 , 答案是肯定的 。
与汇编、C 或 C++ 相比 , 高级语言的最大好处在于它们的安全性 。一个不匹配的错误通常会导致 macOS 计算机出现分段错误 , 但在微控制器中 , 进行嵌入式开发时 , 它可能会导致系统级崩溃或死机 。调试也受到更多限制 , 因此任何有助于编写安全代码的东西都会有所帮助 , 从这个意义上说 , 高级语言非常有用 。
![在微控制器平台等小型物联网设备上运行 JavaScript](http://img.jiangsulong.com/220503/191451I02-0.jpg)
文章插图
另一个好处与代码在微控制器中的运行方式有关 。通常 , 微控制器从 ROM 中读取机器代码 。 ROM通常是通过特殊的程序编写的 , 因此更改它并不方便 。这限制了进行代码更新或在程序版本之间轻松迭代的选项 。解释器可以从 RAM 或 ROM 中读取其程序 , 从而可以在不刷新的情况下进行代码更新 。当然 , 这有其自身的权衡:重新启动后 RAM 会被擦除 , 因此每次都需要重新加载程序 。 RAM 也非常有限 , 因此程序必须很小 。高级语言的表达性在这方面有很大帮助:只需很少的代码行 , 就可以表达复杂的行为和逻辑 。
这些好处适用于大多数高级、解释或 JITted 语言 , 但 JavaScript 带来了一些自身的好处 。对于初学者来说 , JavaScript 拥有一个拥有大量库的庞大社区 。这些库中的大多数不能在微控制器上运行 , 因为它们需要系统级支持(来自 Node.js 或浏览器) , 但其中一些可以 , 这非常有用 。由于语法相似 , C 和 C++ 程序员很容易掌握 JavaScript , 因此习惯于嵌入式开发人员在阅读 JavaScript 代码库时不会遇到什么麻烦 。此外 , 如果您还记得介绍 , 我们提到 JavaScript 旨在为常见的自动化任务和快速迭代编写小脚本 。微控制器通常用于同一场景!与硬件设备交互的小块逻辑 , 用于自动化或报告任务 。
因此 , 总而言之 , 以下是考虑将 JavaScript 或其他流行的解释语言用于微控制器编程的原因:
更高级别的附加安全性:没有一次次碰撞; 更好地处理错误、复杂数据类型和类型转换; 更具表现力 。
快速迭代:可以从RAM加载脚本 , 每次测试都不需要刷机 。远程更新是可能的 。
巨大的社区和大量的库(其中大部分需要一些调整才能在嵌入式开发平台上运行):捆绑器和压缩器可用于确保尽可能小的代码;为 C、C++(和 Java)开发人员提供熟悉的语法 。
推荐阅读
- 电脑怎么查本机IP_win10系统查IP的方法
- 爬虫到底是什么?爬虫是否违法?简谈爬虫概念
- 艾琳国王的荣耀怎么样
- 月牙泉在哪里?月牙泉介绍
- 胆固醇高能吃海鲜吗
- 长期喝碳酸饮料有什么危害
- 药不能和什么在一起吃呢?
- 在吃药的时候能喝茶吗?
- 饭后立即吃瓜子好吗?
- 哪些胃药不能一起吃呢?