0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式Python简介

tr4578 2022-12-28 09:51 次阅读

如果您正在对嵌入式设备进行编程,那么您很可能正在使用 C/C++ 编程语言编写代码。C 最初创建于 20 世纪 70 年代初;然而,直到 1990 年代,嵌入式设备编程才从汇编语言转向高级 C 语言。在接下来的三十年里,C/C++ 凭借其在速度和紧凑性方面的卓越性能,将在嵌入式应用程序中占据主导地位。如今,随着流行的 Python 编程语言以嵌入式为中心的实现的兴起,另一种转变正在出现。

Python 于 1990 年代首次出现,并从那时起在软件开发人员中稳步流行。事实上,在 2020 年,Python 终于在 IEEE Spectrum 的年度编程语言流行度调查中名列第一。最初,Python 作为一种用于测试电子设备的脚本语言在嵌入式开发人员中流行起来。慢慢地,它一直在开发堆栈中向下移动。实际上有多种 Python 实现,其中 CPython 是广泛用于桌面应用程序的参考实现。

PyMiteTiny 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、ESP8266ESP32RISC-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 PiBeagleBone)。它们也非常便宜,因此越来越多地用于嵌入式应用程序。当前一代的 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 正在帮助让世界变得更美好,一次一行代码。

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4984

    文章

    18300

    浏览量

    288761
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83485
收藏 人收藏

    评论

    相关推荐

    嵌入式人工智能的就业方向有哪些?

    联网ARM开发 NB-IoT开发及实战 七:python工程师,人工智能工程师 python语法基础 python核心编程 基于OpenCV的机器视觉开发 嵌入式人工智能渗入生活的方
    发表于 02-26 10:17

    嵌入式系统发展前景?

    嵌入式系统发展前景? 嵌入式系统,从定义上来说,是一种专用的计算机系统,它被设计用来控制、监视或者帮助操作一些设备、装置或机器。在过去的几年里,嵌入式系统已经取得了显著的进步,而未来,嵌入式
    发表于 02-22 14:09

    嵌入式学习步骤

    语言编写。但是,有些嵌入式系统也使用其他编程语言,例如Python或Java。 (3).了解硬件:深入了解您要控制的硬件设备的功能和特性。您需要了解嵌入式系统的处理器、内存、I/O端口、传感器和其他
    发表于 02-02 15:24

    嵌入式自学好书推荐

    嵌入式自学好书推荐 在数字时代的浪潮中,嵌入式系统一直是数字电子产品中的重要组成部分。无论是家用电器、工业控制、汽车电子、医疗保健、军事应用还是物联网,嵌入式系统都无处不在,展现了广阔的前景。随着
    发表于 01-11 15:13

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式软硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软硬件工程师的,首先我们先来看看嵌入式硬件工程师吧! 嵌入式
    发表于 12-05 15:17

    嵌入式系统的原理(简介与入门)

    电子发烧友网站提供《嵌入式系统的原理(简介与入门).pdf》资料免费下载
    发表于 11-17 14:36 2次下载
    <b class='flag-5'>嵌入式</b>系统的原理(<b class='flag-5'>简介</b>与入门)

    为什么嵌入式没有35岁危机?

    为什么嵌入式没有35岁危机? 在当今数字化时代,IT行业变化迅速,技术的更新迭代速度惊人。然而,有一个技术领域却能够在这个竞争激烈的行业中稳步前行,而且不受35岁危机所困扰,那就是嵌入式技术
    发表于 11-17 10:33

    请问python能用在嵌入式arm吗?

    python能用在嵌入式arm吗?
    发表于 10-23 06:39

    什么是嵌入式Linux?

    什么是嵌入式Linux? 对于很多电气、电信、通信专业的同学来说,对口专业就业方向主要有软、硬件两个方向。无论是对于学生还是就业而言,软硬件的开发学习,嵌入式物联网在近年来无疑是一个摆在面前
    发表于 10-11 13:47

    从事嵌入式工作有哪些优势?

    随着物联网和人工智能的发展,嵌入式技术越来越值钱,学嵌入式的人也越来越多,现在开始入行嵌入式。根据一些权威部门统计,我国目前嵌入式软件人才缺口每年为40万人左右,
    发表于 10-08 15:05

    嵌入式Linux应用开发的完全手册

    嵌入式Linux在嵌入式领域发展迅速、需求旺盛,但是嵌入式Linux 的入门很难。初学者多是自己琢磨,效率不高。学习过程中碰到的问题千奇百怪,解决后却往往发现是极其低级的错误,以作者为例,初学时在
    发表于 09-25 07:12

    嵌入式编程和微控制器应用

    欢迎进入嵌入式编程和微控制器应用的世界!使用日益流行且价格适宜的AtmelAVR嵌入式控制器作为学习平台。本书是目前可以获得的最佳书籍之一。对于初学者,本书将会是极好的选择。随着
    发表于 09-20 07:52

    SoC 功能可见性 – Tessent 嵌入式分析简介

    SoC 功能可见性 – Tessent 嵌入式分析简介ppt分享
    发表于 07-14 17:15 0次下载

    如何构建我自己的嵌入式C编译器?

    只是为了获得如何构建我自己的嵌入式 C 编译器的知识,如预处理、汇编、链接器、生成 Hex 文件、elf 文件、映射文件。 任何有用的链接可用? 我是嵌入式软件工程师,并且具有 c 编程 python、bat 脚本方面的知识。
    发表于 06-08 08:10

    嵌入式RTOS的 任务栈 和 系统栈

    简介明了带你了解嵌入式RTOS的 任务栈 和 系统栈
    的头像 发表于 05-16 09:57 2072次阅读
    <b class='flag-5'>嵌入式</b>RTOS的 任务栈 和 系统栈