竹笋

首页 » 问答 » 环境 » 嵌入式开发在微控制器平台等小型物联网设备
TUhjnbcbe - 2024/9/1 16:46:00

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

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

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

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

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

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

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

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

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

1
查看完整版本: 嵌入式开发在微控制器平台等小型物联网设备