新闻  |   论坛  |   博客  |   在线研讨会
micropython 1.18 版本发布了
shaoziyang | 2022-01-19 09:11:39    阅读:217   发布文章

MicroPython 的 v1.18 已经发布!自 2021 年 9 月 2 日上一版发布以来,共有 335 次提交,平均每天大约有 2.5 次提交。 

完整的更改日志请查看 micropython-ChangeLog.txt 文件 (https://micropython.org/resources/micropython-ChangeLog.txt)


v1.18 提升性能, board.json 元文件, 更多 mimxrt、rp2、samd 功能 

此版本的 MicroPython 提升了 VM 和运行的整体性能。这是通过添加一个可选的缓存来加速哈希表查找,以及在 VM 中为实例类型上的 LOAD_ATTR 操作码提供快速路径来实现的。新的配置选项是 MICROPY_OPT_MAP_LOOKUP_CACHE 和 MICROPY_OPT_LOAD_ATTR_FAST_PATH。作为此改进的一部分,MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE 选项已被删除,它提供了类似的映射缓存机制,但缓存存储在字节码中,这使得它在裸机端口上没有用处。新机制至少与旧机制一样好,适用于更多映射查找,具有固定的 RAM 开销,并且适用于本机代码和字节码。 

这些性能选项在 esp32、mimxrt、rp2、stm32 和 unix 端口上启用。对于 esp32 和 mimxrt 一些代码也被移动到 RAM 以进一步提高性能。在 stm32 上,对于大量使用名称查询的基准,例如 misc_pystone.py 和 misc_raytrace.py,性能提高了约 20%。在 esp32 上性能可以提高 2-3 倍,在 mimxrt 上最高可以提高 6 倍。 所有移植版中的所有硬件现在都有一个 board.json 元数据文件,用于自动构建固件并为此生成一个网页(以及其他可能性)。为此目的添加了自动构建脚本,它们构建所有 esp32、mimxrt、rp2、samd 和 stm32。

对 FROZEN_DIR 和 FROZEN_MPY_DIR 的支持已被弃用一段时间了,最终在此版本中被删除。可以使用 FROZEN_MANIFEST 作为替代。io.resource_stream() 函数也被移除,取而代之的是 micropython-lib 中的纯 Python 版本。 

导入冻结 Python 模块的搜索顺序现在由 sys.path 中的 ".frozen" 所控制。该字符串默认添加到 sys.path 的第二个位置。用户代码应根据所需的行为调整 sys.path。在 sys.path 中将 ".frozen" 放在首位将加快导入冻结模块的速度。 

在 2c139bbf4e5724ab253b5b034ce925e04267a9c4 提交中修复了 bitwise 为 -0 时多精度整数中的错误。 

增加了 platform 模块,允许查询编译器和底层 SDK/HAL/libc 版本。它在 esp32、mimxrt 和 stm32 移植中启用。 mpremote 工具现在支持 PC 安装的文件系统上的 seek、flush、mkdir 和 rmdir。并添加了帮助命令。

得益于 Google Season of Docs 项目(第二次),项目文档得到了许多补充和改进。rp2 文档现在包括 PIO 汇编指令参考、PIO 快速参考和 PIO 教程。random 和 stm 模块已经归档,包括 sys.settrace、manifest.py 文件和 mpremote 等。现在还有更多关于 MicroPython 和标准 Python 3.5 及更高版本之间差异的详细说明。 

esp32 移植支持 ESP32-S3 SoC,以及新的 GENERIC_S3、ESP32_S2_WROVER、LOLIN_S2_MINI、LOLIN_S2_PICO 和 UM_FEATHERS2NEO 开发板。改进了 PWM 驱动程序,现在支持所有 PWM 定时器和通道,以及 duty_u16() 和 duty_ns() 方法,并且在改变频率时保持占空比不变。machine.bitstream() 函数已改进为使用 RMT,可以选择原始的 bit-banging 实现。 

mimxrt 移植增加了新的硬件功能:SDRAM 和 SD 卡支持,以及 LAN 驱动程序的网络集成。machine.WDT 类与 machine.reset_cause()、machine.soft_reset()、machine.unique_id()、machine.bitstream() 等函数一起添加。还添加了 DHT 传感器支持,并启用了 f 字符串。 

rp2 移植现在支持网络和 NimBLE 蓝牙。全新的 Arduino Nano RP2040 连接板完全集成并支持 Nina-W10 WiFi/BT 驱动程序。添加了 I2S 协议支持、 machine.bitstream() 驱动程序和 DHT 传感器支持。PWM 驱动器修复了设置/获取频率准确性的错误,现在更改频率时保持占空比。 

在 samd 移植中,现在支持将内部闪存作为块设备,并支持文件系统和 os 模块。引脚和 LED 类已实现。有更多的 time 函数,启用更多的 Python 功能,并添加了 help() 函数。添加了 SEEED_WIO_TERMINAL 和 SEEED_XIAO 板定义。

stm32 现在支持 F427、F479 和 H7A3(Q)/H7B3(Q) MCU,以及 VCC_GND_H743VI、OLIMEX_H407、MIKROE_QUAIL、GARATRONIC_PYBSTICK26_F411、STM32H73B3I_DK 等新开发板定义。修复了 SPI 驱动程序中的一个错误,如果 CYW43 WiFi 驱动程序同时处于活动状态,则 SPI 传输可能会失败。 在 windows 移植上,help() 函数已启用,并添加了对构建变体的支持,以匹配 unix 端口。

zephyr 移植中升级 Zephyr 到 v2.7.0。

自上一版本以来各种移植的代码大小变化是(文本部分中的绝对变化和百分比变化): 

       bare-arm:  -1520  -2.605%
    minimal x86:  -2256  -1.531%
       unix x64:   -457  -0.089%
    unix nanbox:   -925  -0.204%
          stm32:   +312  +0.079% PYBV10
         cc3200:   -176  -0.096%
        esp8266:   +532  +0.076% GENERIC
          esp32: +27096  +1.820% GENERIC
            nrf:   -212  -0.121% pca10040
            rp2:  +9904  +2.051% PICO
           samd: +35332 +33.969% ADAFRUIT_ITSYBITSY_M4_EXPRESS


这些数字的变化是:

  • bare-arm, minimal: 使用新的MICROPY_CONFIG_ROM_LEVEL_MINIMUM 选项,以及禁用其余的可选功能。

  • unix, cc3200, nrf: 减少了核心的代码大小

  • stm32:性能改进,增加了 platform 模块

  • esp8266:启用f-strings

  • esp32:使用 -O2 取代 -Os

  • rp2: machine.I2S和其他新的硬件特性

  • samd:支持文件系统和其他新的硬件特性


感谢所有为此版本做出贡献的人:Alan Dragomirecký、Alexey Shvetsov、Andrew Leech、Andrew Scheller、Antoine Aubert、Boris Vinogradov、Chris Boudacoff、Chris Fiege、Christian Decker、Damien George、Daniel Gorny、Dave Hylands、David Michieli、Emilie Feral , Frédéric Pierson, gibbonsc, Henk Vergonet, iabdalkader, Ihor Nehrutsa, Jan Hrudka, Jan Staal, jc_.kim, Jim Mussared, Jonathan Hogg, Laurens Valk, leo chung, Lorenzo Cappelletti, Magnus von Wachenfeldt, Matt Trentini, Matt van de Werken , Maureen Helm, Michael Bentley, Michael Buesch, Mike Causer, Mike Teachman, Mike Wadsten, Ned Konz, NitiKaur, oli, patrick, Patrick Van Oosterwijck, Peter Boin, Peter Hinch, Peter van der Burg, Philipp Ebensberger, Pooya Moradi, retsyo , robert-hh, roland van straten, Scott Armitage, Sebastian Wicki, Seon Rozenblum, Sergei Silnov, Simon Baatz, Stewart Bonnick, stijn, Tobias Thyrrestrup, Tomas Vanek, YoungJoon Chun。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客