0

我正在使用 1.18 版在 SEEED XIAO (SAMD21) 上使用 micropython,并希望使用“已编译”库 ( .mpy) 来节省空间。我有版本 5 的 mpy-cross 对我来说没问题。我也想要浮点数,所以我使用该选项构建了一个新的 micropython——从最新的 (20220302) github 版本——并注意到 mpy-cross 已更新到版本 6。我想我会检查一下.mpy使用了哪些版本micropython 文档建议使用一些代码来检查.mpy 使用sys.implementation对象的版本。我注意到了各种各样的sys.implementation实现。

XIAO SAMD21 上由 micropython 20220117 发布的 1.18 版本给出了以下结果:

MicroPython v1.18 on 2022-01-17; Seeed Xiao with SAMD21G18A
Type "help()" for more information.
>>> import sys
>>> sys.implementation
('micropython', (1, 18, 0))
>>> type(sys.implementation)
<class 'tuple'>
>>> 

这返回了一个包含 2 个项目的元组 - 名称和一个包含版本信息的元组。但没有关于mpy版本的信息。

然后我尝试了 RP2040 NANO 发布的 1.18 版本(并在我的 XIAO RP2040 上运行它):

MPY: soft reboot
MicroPython v1.18 on 2022-01-17; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>> import sys
>>> sys.implementation
(name='micropython', version=(1, 18, 0), mpy=5637)
>>> type(sys.implementation)
<class 'tuple'>
>>> 

这里返回的结果是具有 3 个属性(命名为属性)和一个mpy版本(5637 & 0xff = 5)的元组。然后我使用选项重新编译了 micropython#define MICROPY_PERSISTENT_CODE_LOAD (1)以尝试匹配 RP2040 输出:

MPY: soft reboot
MicroPython v1.18-169-g665f0e2a6-dirty on 2022-03-02; Seeed Xiao with SAMD21G18A
Type "help()" for more information.
>>> import sys
>>> sys.implementation
('micropython', (1, 18, 0), 6)
>>> type(sys.implementation)
<class 'tuple'>
>>> 

现在返回一个包含 3 个项目的元组,mpy版本 (6),但不是命名元组,并且mpy版本没有额外数据。

我的问题是如何在我的 XIAO SAMD2 实现中获得一致的结果?我应该包括或排除哪个选项?还是我不应该担心?我正在研究是切换到 Python 还是继续使用 C(++) 这个小型处理器 - 倾向于 C(++)。

谢谢

4

0 回答 0