micropython-mpy.md 1.9 KB

MicroPython .mpy 文件详解

MicroPython 定义了 .mpy 文件的概念,该文件是一种二进制容器文件格式,在其中包含了预编译的 Python 代码,这种类型的文件可以像普通的 .py 模块一样被导入到 MicroPython 程序中。举个例子来说明这种类型文件的使用方法。例如,只要 foo.mpy 存在于指定的路径中,我们就可以通过 import foo 语句来导入 foo.mpy 文件。

这种类型文件的导入规则是这样的,首先按顺序搜索 sys.path 中列出的每个目录。当搜索特定目录时,首先查找 foo.py,如果找不到该目录,则查找 foo.mpy,如果没有找到,则在下一个目录中继续搜索。通过这种方式,foo.py 文件的优先级将高于将高于 foo.mpy 文件。

这些 .mpy 文件中的主要内容是字节码,这些字节码是通过 mpy-cross 程序从 Python 源文件(.py文件)生成的。对于一些芯片架构,.mpy 文件还可以包含原生机器码,这些机器码可以通过多种方式产生,他们大部分是由 C 语言代码生成的。

.mpy 文件的版本号和兼容性

在 .mpy 文件中使用原生机器码

本小节将介绍如何构建和使用包含来自非 Python 语言的本机代码的 .mpy 文件。 这使您可以使用 C 之类的语言编写代码,进行编译并将其链接到 .mpy 文件,然后像普通的 Python 模块一样导入此文件。这可用于实现对性能至关重要的功能,或用于包含以另一种语言编写的现有库。

使用原生 .mpy 文件最主要的优点之一是该文件可以被动态导入到 MicroPython 中,而无需重新编译固件。你无需像在 MicroPython 中添加外部 C 模块 时那样,重新编译你的固件。

这里的重点是使用 C 来构建原生模块,但是从理论上来说,任何语言编译成的独立机器码都可以放入 .mpy 文件中。