如果您正在对嵌入式设备进行编程,那么您很可能正在使用 C/C++ 编程语言编写代码。C 最初创建于 20 世纪 70 年代初;然而,直到 1990 年代,嵌入式设备编程才从汇编语言转向高级 C 语言。在接下来的三十年里,C/C++ 凭借其在速度和紧凑性方面的卓越性能,将在嵌入式应用程序中占据主导地位。如今,随着流行的 Python 编程语言以嵌入式为中心的实现的兴起,另一种转变正在出现。
Python 于 1990 年代首次出现,并从那时起在软件开发人员中稳步流行。事实上,在 2020 年,Python 终于在 IEEE Spectrum 的年度编程语言流行度调查中名列第一。最初,Python 作为一种用于测试电子设备的脚本语言在嵌入式开发人员中流行起来。慢慢地,它一直在开发堆栈中向下移动。实际上有多种 Python 实现,其中 CPython 是广泛用于桌面应用程序的参考实现。
PyMite 和 Tiny Python是最早为在微控制器上运行而开发功能降低的 Python 实现的尝试之一。PyMite 只包括一个 VM 和运行时——没有编译器。这意味着它只能运行先由 CPython 编译的字节码。Tiny Python 确实包含一个字节码编译器,但仍然只占用大约 64 KB 的 RAM。两者都基于 Python 2,并且都没有被积极开发。尽管如此,它们确实代表了将 Python 用于嵌入式应用程序的最早尝试。
MicroPython是用于嵌入式开发的 C 编程语言的令人兴奋的替代方案。它将基于桌面的 CPython 语言的几个流行特性带到各种流行的微控制器架构中,包括STM32 板、TI CC3200/WiPy、Teensy 板、Nordic nRF系列、SAMD21、SAMD51、ESP8266、ESP32、RISC-V,甚至是 Lego头脑风暴 EV3 平台。自 2014 年推出以来,MicroPython 的受欢迎程度稳步上升,反映出 CPython 的总体使用量增加。另一个吸引人的特性是 MicroPython 的源代码是在 GitHub 上的开源许可(MIT 许可)下提供的。
CircuitPython是一个教育和制造商友好的 Python 实现,它本身是 MicroPython 的一个分支。CIrcuitPython 开发支持由Adafruit Industries提供,是其许多微控制器产品的实际语言。目前有超过一百种电路板与 CircuitPython 兼容,大部分基于 Microchip 的 SAMD21/SAMD51 和 Nordic Semiconductor 的nRF52840微控制器。CircuitPython 的一个关键特性是能够简单地将源代码文件 (.py) 拖到兼容的开发板上,这与将文件拖到 USB 闪存驱动器上没有什么不同。不需要编译代码,也不需要访问麻烦的(有时是昂贵的)程序员/调试器。此外,源代码仍然可以在设备上访问,并且可以在任何计算机上打开。这意味着您可以使用简单的文本编辑器从任何计算机下载、编辑和重新编程兼容 CircuitPython 的开发板。
泽林思是一组包含在软件开发工具包 (SDK) 中的工具,适用于物联网 (IoT) 产品的开发人员。他们专注于简化 32 位微控制器(包括 ESP32、ESP8266、ARM Cortex M0+、ARM Cortex M3 和 ARM Cortex M4)与各种物联网云服务提供商(AWS、Azure、Google Cloud Platform、Ubidots、The Things Network)之间的连接). 只需几行 Python 代码,就可以将边缘设备传感器的数据传输到云端进行进一步分析和长期存储。在提供的工具中,命令行界面 (CLI)、Zerynth Studio 集成开发环境 (IDE)、Zerynth 操作系统 (OS) 和 Zerynth 设备管理器;全部适用于 Windows、Mac OS 和 Linux。Zerynth VM 占用了 80KB 的闪存和 5KB 的 RAM。
CPython。单板计算机 (SBC) 是信用卡大小的成熟台式计算机(例如,Raspberry Pi、BeagleBone)。它们也非常便宜,因此越来越多地用于嵌入式应用程序。当前一代的 SBC 速度足够快,并且有足够的内存和存储空间来运行成熟的 CPython 实现(或通过省略不需要的模块而略微精简的实现)。还有其他实现,例如 Python for ARM Linux,它为基于 ARM 的架构定制了 Python(与 x86/x64 架构相比)。最近,PyPy 等其他实现(基于即时编译器与 CPython 解释器的对比)已移植到 Raspberry Pi 并提供改进,例如更快的速度性能。
开发人员需要记住,Python 编程语言没有单一的“风格”。有许多实现,其中一些是专门为在嵌入式平台上出色执行而构建的。Python 作为专业嵌入式开发领域的主要参与者的未来取决于证明它可以达到或超过 C 的性能。我们可以回顾历史来提供一些见解。毕竟,从汇编语言到 C 语言的转变不是一蹴而就的。通过在 C 宏中插入汇编代码,汇编仍然用于 C 程序的性能关键部分。Python 和 C 可以类似地协同工作。
另一个考虑是微控制器比十年或二十年前的微控制器强大光年。时钟周期已经从以几兆赫兹测量到超过千兆赫兹。曾经以几十千字节为单位的闪存,现在以几兆字节为单位。幸运的是,性能的显着提升并没有伴随着价格的相应上涨。因此,嵌入式应用程序开发人员可以编写更高级别的代码,而不必理会每个时钟周期或内存字节,并且仍然可以生产出响应迅速的高质量产品。
结论
编程语言与口头语言一样,不断发展壮大以响应时代的需求。专门为嵌入式系统构建的 CPython 衍生产品,如 MicroPython 和 CircuitPython,有望成为未来嵌入式开发的主要参与者,因为它们使创建过程民主化。当结合电子硬件的一些基本知识时,嵌入式 Python 语言使人们,无论技能水平如何,都能将物理和数字融合在一起。这种能力开启了几年前难以想象的可能性。在世界各地,可访问的开源编程语言和嵌入式平台让当地社区能够构建本地化、特定于他们的需求、具有成本效益且可持续的工具。难民营,嵌入式 Python 正在帮助让世界变得更美好,一次一行代码。
审核编辑黄昊宇
-
嵌入式
+关注
关注
5082文章
19104浏览量
304817 -
python
+关注
关注
56文章
4792浏览量
84628
发布评论请先 登录
相关推荐
评论