用户工具

站点工具


micropython:版本:v1.20

v1.20.0:新的 mip 包管理器、压缩类型结构和 Pico W 支持

此版本的 MicroPython 引入了一个名为 mip 的新轻量级包管理器,它使用自定义协议来查询和安装针对嵌入式系统优化的包。它旨在替换 upip,并支持从 micropython-lib 以及任何 URL 安装包。 mip 可以直接在设备上运行(具有网络连接)或通过 mpremote,作为其中的一部分,所有纯 Python 驱动程序都已从 micropython 存储库移至 micropython-lib 存储库,从而更容易安装给定项目所需的包。

在 MicroPython 运行时中,核心/内置类型只通过在C级类型结构中包含给定类型所需的C函数指针插槽(而不是为未使用的插槽存储NULL指针)来进行压缩。这导致所有移植版本的代码大小减少了数千字节(例如,bare-arm 大约 1200 字节),性能损失非常小。任何第三方 C 扩展都需要更新才能与此更改一起使用。查看提交 662b9761b37b054f08fe2f7c00d0fce3a418d0b0 和 3ac8b5851e5f4dade465d52b91ed2ccc17851263 了解详情。

MicroPython 虚拟机/运行时也有许多改进和错误修复,包括:将 hex/fromhex 方法添加到 bytes/memoryview/bytearray、字典联合(PEP 584)、支持floatcomplex函数、支持模块对象上的dict,以及对所有字符串的UTF-8验证。现在对整数浮点进行了精确格式化,并且对浮点数的解析和格式化进行了其他准确性改进。为.mpy文件引入了一个子版本,该版本仅在.mpy文件包含本机代码时使用,允许本机 ABI 更改,同时保留与纯字节码 .mpy 文件的向后兼容性。现在有一个选项可以将 GC 堆拆分到多个内存池中,尽管尚未使用此选项。新的 MPREGISTERroot_pointer 宏简化了根指针注册。

在网络模块中,scan()、connect() 和 config() 的关键字参数已被重命名,以便在移植和驱动程序之间更加一致。更改后的参数名称:“essid”更改为“ssid”,“auth”或“authmode”更改为“security”,“password”更改为“key”。旧的关键字参数仍然被支持,保证此更改是向后兼容的。还添加了函数network.hostname() 和 network.country(),它们提供了一个跨硬件的标准接口,用于设置所有接口和接口类型的全局网络配置。特别是,现在所有基于CYW43xx的板(如 pyboard-D、Arduino Portenta、Pico W 等)都支持设置主机名。

mbedtls(SSL 库)设置也已在使用此库的移植版之间进行统一,并启用椭圆曲线 DH 和 DSA 加密,以便设备可以连接到更多网站。 cert_reqs 和 cadata 参数也已实现。套接字现在支持离开多播组。 WebREPL 现在将从设备上运行页面,允许从 HTTPS 站点加载 WebREPL 资源。

蓝牙模块对 IRQGATTCCHARACTERISTICRESULT 有一个小的中断更改:defhandle 已替换为 endhandle。这预计不会影响大多数程序,因为 defhandle 不太可能被使用。请参阅提交 cacc96d98c2a70dc7e5194331ea70746c39746ec。

uasyncio 模块现在支持流读取 (-1),处理不带 awaitables 的收集,并向 ThreadSafeFlag 添加 clear() 方法。 framebuf 模块添加了椭圆和多边形绘制方法,以及 rect() 的填充参数以与这些新方法保持一致。

添加了一个新移植,即“嵌入式”移植,它是 MicroPython 的一个移植版,以 C 语言为目标并输出一组独立的 .c 和 .h 文件以嵌入到更广泛的项目中。提供了一个示例来说明这是如何工作的。

esp8266 移植在 GENERIC 板上启用了反向特殊方法,添加了 uart.flush() 和 uart.txdone(),在 PWM 驱动的引脚上启用了真正的漏极开路输出,并增加了为 WLAN 设置 TX 功率的能力接口。

esp32 移植现在使用同步 BLE 事件,支持 BLE 配对和绑定。 LAN 驱动程序增加了对 LAN8710、KSZ8081 的支持,ETH refclk 引脚的配置,以及对基于 SPI 的以太网芯片的支持。 UART 现在支持设置 timeoutchar 并实现 uart.flush() 和 uart.txdone()。新开发板包括带八通道 SPIRAM 的 ESP32S3、Olimex PoE 开发板和用于单核芯片的通用板。还有许多错误修复,特别是对于较新的 MCU 版本,如 S2、S3 和 C3。

mimxrt 移植已经看到大量代码清理,支持 MIMXRT1176 MCU 和 MIMXRT1170_EVK 开发板,machine.Timer 的软定时器实现,添加 machine.bootloader(),以及 uart.flush() 和uart.txdone()。

在 nrf 移植上,machine.UART 和 machine.PWM 已得到改进以匹配其他移植版本(PWM 更改是一项重大更改),并且 machine.I2C 现在支持 freq 参数。新的开发板包括 Arduino Nano 33 BLE sense 开发板和 Seeed XIAO NRF52840 Sense。

rp2 移植集成了新的 Pico W 开发板中使用的 CYW43xx WiFi 驱动程序,它类似于 Pico,但支持 WiFi。其他新增开发板包括 W5500EVBPICO、WEACTSTUDIO 和 nullbits Bit-C PRO 开发板。添加了对命名引脚的支持,包括 Pin.board 和 Pin.cpu 属性,与支持此功能的其他移植版本保持一致。已实施 machine.lightsleep() 函数以及 SSL 证书时间验证,并使用更准确的公式来确定 PWM 频率和占空比。 MicroPython 程序可用的 GC 堆已增加,以使用最大可用空闲 RAM,用户堆增加约 20k。使用两个内核时,对线程和并发进行了重要的错误修复。

samd 移植功能得到显著扩展,包括:带有 pins.csv 文件的命名引脚,以及 Pin.board 和 Pin.cpu 属性; ADC、PWM、DAC、SoftSPI、SoftI2C、SPI、I2C和RTC类添加到 machine 模块;引脚的 pin.irq() 方法和 OPENDRAIN 模式; freq、disableirq、enableirq、idle、lightsleep 和 timepulse_us 函数已添加到 machine 模块。已为 SAMD21 设备添加了浮点支持,并为 SAMD51 启用了数学模块。添加了 Sparkfun Think Plus 的开发板定义。

stm32 移植增加了对 STM32L1xx MCU、STM32H723、STM32G0xx 上的 USB 的支持以及对 STM32G0xx 的 mboot 支持。现有的 CYW43xx WiFi 驱动程序已被开源版本的 cyw43-driver 取代,并且已集成到所有带有 CYW43xx 芯片的开发板。对 CC3000 WiFi 驱动程序的支持已被删除,Wiznet 驱动程序集成已重新设计为使用与其他移植共享的通用驱动程序(并且使用 lib/wiznet5k 而不是旧的 drivers/wiznet5k)。为 STM32L1xx 和 STM32L4xx 添加了硬件 I2C 实现,添加了对 Arduino 1200bps 触摸进入引导加载程序的支持(仅在 Arduino 开发板上),添加了 mbedtls (SSL) 证书时间验证,并默认对小闪存电路板启用链接时间优化 (LTO)。新增开发板定义包括:LEGO Hub No. 7、NUCLEO-L152RE、NUCLEO-F756ZG、NUCLEO-H723ZG、Arduino Nicla Vision 和 Arduino Giga H7。 Arduino 板现在还包括一系列冻结库,包括 senml。

对于 unix 和 windows 移植,构建输出(包括可执行文件)现在保存在与构建关联的 $(BUILD) 目录中。作为其中的一部分,变体后缀已从可执行文件名称中删除。例如,之前的 micropython-coverage 现在是 build-coverage/micropython,标准变体是 build-standard/micropython。此外,dev 变体已被删除,其功能已在标准变体上启用,现在标准变体具有与典型裸机板相同的功能集,使其更便于开发使用。其余变体是:minimal、standard、nanbox、coverage。此移植的 SSL 实现已从 axtls 切换到 mbedtls,再次匹配大多数裸机移植。

javascript 移植已重命名为 webassembly,并通过使用 Emscripten 的 POSIX 文件系统层添加了对 VFS 和 VfsPosix 的支持。 stdout 打印的工作方式也已更改为通过名为“micropython-print”的自定义事件进行分派。

zephyr 移植将 Zephyr 升级到 v3.1.0,添加了 bbcmicrobitv2 的自定义配置,并启用了终结器。

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

       bare-arm:   -1124  -1.934%
    minimal x86:   -4322  -2.967%
       unix x64: +264181 +50.533% standard
          stm32:   -3592  -0.906% PYBV10
         cc3200:   -1832  -0.990%
        esp8266:   -2284  -0.327% GENERIC
          esp32:   +9659  +0.632% GENERIC
            nrf:     -84  -0.045% pca10040
            rp2:  +13096  +4.291% PICO
           samd: +127776 +90.488% ADAFRUIT_ITSYBITSY_M4_EXPRESS

主导这些数字的变化是:

  • bare-arm、minimal、stm32、cc3200、esp8266:由于压缩类型结构而减小了尺寸
  • unix:将 axtls 切换为 mbedtls,合并开发配置选项和功能
  • esp32:新的以太网驱动程序和一些额外的 machine 模块功能
  • nrf:压缩类型结构和 machine 模块改进
  • rp2:额外的 mbedtls 功能和加密
  • samd:许多新特性,以及 machine 模块、类和函数

感谢所有为此版本做出贡献的人:

Alex Riesen, Andrew Leech, Andrew Scheller, Angus Gratton, Antonello Margottini, Antonin ENFRUN, Ayke van Laethem, Blake Felt, brave ulysses, Brian Cooke, Brian Pugh, Carlosgg, Chris Overgaauw, Chris Swan, Chris Waggoner, chrismas9, Christian Clauss, Christian Walther, Clayton Cronk, cpottle9, Dale Weber, Damiano Mazzella, Damien George, Damien Tournoud, Dan Ellis, Daniel Jour, David (Pololu), David Grayson, David Lechner, David Peake, David Yang, Dorukyum, Efi Weiss, enriquezgarc, Felix Dörre, Florian Weimer, glenn20, hoihu, Howard Lovatt, iabdalkader, Ian Davies, IcedRooibos, Ihor Nehrutsa, Jacob Siverskog, Jan Hrudka, Jan Willeke, Jared Hancock, Jatty, Jay Greco, Jeff Epler, Jeremy Rand, Jim Mussared, Jonas Scharpf, Jos Verlinde, Juan Francisco Cantero Hurtado, Koen De Vleeschauwer, Kyuchumimo, Lars Haulin, Laurens Valk, LiaoJingyiwinY7kp, Luiz Brandao, ma-lalonde, manobendro, Maripo GODA, Mark Grosen, Martin Milata, Mat Booth, Matt Trentini, Maureen Helm, Michael Bentley, Michael Mogenson, MrJake222, Nathan Hendler, Ned Konz, Nicholas H.Tollervey, Oliver Joos, omogenot, Patrick, Patrick Joy, Paul Grayson, Paul Warren, Pepijn de Vos, Peter Harper, Peter Hinch, PGE, Phil Howard, Philip Peitsch, Philipp Ebensberger, pmendham, Rayane Chatrieux, Red_M, Rob Knegjens, robert-hh, Sebastian Romero, Simon Arlott, Sky, Stewart C. Russell, Stig Bjørlykke, stijn, Stuart Langridge, Takeo Takahashi, Thorsten von Eicken, Tim Gates, Tobias Thyrrestrup, Tomasz 'CeDeROM' CEDRO, Tomofumi Inoue, TPReal, Trammell hudson, Wind-stormger, yn386, Yonatan Goldschmidt, 小权一句两句.

此版本中完成的工作部分由 GitHub Sponsors、George Robotics 和 Planet Innovation 资助。

下面是一份详细的更改列表,根据 git 提交历史生成,并组织成多个部分。



purge    随机主题   
micropython/版本/v1.20.txt · 最后更改: 2023/06/25 21:11 由 shaoziyang · 查看次数: 9051