[讨论] micropython 1.18 版本发布了

dcexpert   2022-1-17 09:54 楼主

自 2021 年 9 月 2 日上一版发布以来,共有 335 次提交,平均每天大约有 2.5 次提交。

完整的更改日志可以在 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 中修复了按位为 -0 的多精度整数中的错误。

已添加平台模块以允许查询编译器和底层 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 类已实现。 有更多的时间函数,更多的 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



感谢为此版本做出贡献的所有人: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。

回复评论 (6)

版主画个重点
点赞  2022-1-19 14:43

改进了 PWM 驱动程序,现在支持所有 PWM 定时器和通道,以及 duty_u16() 和 duty_ns() 方法,并且在改变频率时保持占空比不变。

这是说改变芯片频率?

点赞  2022-1-20 08:34
引用: 极限零 发表于 2022-1-20 08:34 改进了 PWM 驱动程序,现在支持所有 PWM 定时器和通道,以及 duty_u16() 和 duty_ns() 方法,并且在改变频 ...

改变芯片主时钟频率应该不影响PWM占空比,现在是改变PWM频率时不影响占空比设置。

点赞  2022-1-20 09:38
引用: youxinweizhi 发表于 2022-1-19 14:43 版主画个重点

重点就是黑体写的:

 

v1.18:提升性能、board.json 元数据、更多 mimxrt、rp2、samd 功能

点赞  2022-1-20 09:47
引用: dcexpert 发表于 2022-1-20 09:38 改变芯片主时钟频率应该不影响PWM占空比,现在是改变PWM频率时不影响占空比设置。

原来之前都是有影响的啊,我都没注意

点赞  2022-1-21 08:45
很详细的介绍。感谢分享。受益匪浅,励精图治,加油进步,一起努力!!!
点赞  2024-4-12 19:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复