# 国庆长假期间 MicroPython官方悄悄更新了新版本至1.21.0

国内正在忙着休国庆长假 MicroPython官方悄悄更新了版本。这次更新的版本是1.21.0,相比于1.20.0版本,鹿戴马物联平台 (opens new window)在线烧录MicroPthon固件已经同步更新到1.21.0版本。这次更新的内容还是比较多的,主要是修复了一些bug,增加了一些功能,具体的更新内容如下:

在这次版本的MicroPython我们看到了内置模块的重命名以删除u前缀,具有可选压缩支持的新放气模块,引入了板变体,将esp32端口切换为使用IDF 5以及改进的堆管理,支持RPi Pico W板上的BLE以及STM32H5xx支持。该项目现在还使用codespell和ruff来提高代码质量。

此版本中新增的主板包括:ARDUINO_NANO_ESP32和UM_NANOS3(esp32端口)、ADAFRUIT_METRO_M7(mimxrt端口)、ARDUINO_PORTENTA_C33和VK_RA6M5(renesas-ra端口)、ADAFRUIT_METRO_M4_EXPRESS(samd端口)、NUCLEO_L4A6ZG和STM32H573I_DK(stm32端口)。

重命名内置模块以删除u前缀 - 例如utime变成time,uasyncio变成asyncio - 是为了提高与CPython的兼容性,并消除关于是导入u版本还是非u版本名称的混淆。现在,应该始终导入非u版本,不再考虑u命名。唯一剩下的带有u前缀的模块是uctypes,因为它与CPython ctypes模块不兼容。以下模块仍然可以通过其u-name向后兼容:array,asyncio,binascii,bluetooth,collections,cryptolib,errno,hashlib,heapq,io,json,machine,os,platform,random,re,select,socket,ssl,struct,time,websocket。这些模块(asyncio 除外)也是可扩展的,可以被具有相同名称的文件覆盖,例如 time.py。要强制导入内置,必须首先清除(然后恢复)sys.path;写入 sys.path 属性的功能也已在此版本中实现。有关更多信息,请参阅#9018 中的讨论。

此外,导入本身已经过调整和优化,内置导入不再涉及文件系统,这使得典型的内置导入需要 ~0.15 毫秒而不是 3-5 毫秒。对于导入失败的模块,它们现在将从 sys.modules 中删除,允许再次尝试导入。这需要添加“NLR 跳转回调”,以便在引发异常时有效地运行某些代码。

对核心运行时的其他改进包括支持 f 字符串中的转换说明符(例如 !r)、通过跟踪上次使用的块来加速增量 GC 周期、添加新的MICROPY_GC_SPLIT_HEAP_AUTO“自动增长堆”模式以及对结构格式的填充字节的支持。文档、示例和测试也进行了普遍的改进和添加。

对于扩展模块,zlib C 模块已被移除,取而代之的是一个新的 MicroPython 专用 deflate 模块和 DeflateIO 类,该类经过优化以提供高效的流压缩和解压缩。zlib(和gzip)模块现在在deflate模块之上的纯Python中实现。timeq 模块已被删除,它只存在于 (u)asyncio 的先前版本中,不再使用。在SSL模块中,添加了SSLContext,以便与CPython更加兼容。select 模块现在支持尽可能使用 system/POSIX 轮询,unix 端口现在使用此实现而不是自己的实现。这意味着 unix 端口现在可以选择/轮询实现相应 ioctl 的自定义 Python 对象。套接字模块现在支持 SO_BROADCAST,sys.std*.buffer 对象现在存在于 unix 上。还有一个新的 esp 托管网络驱动程序,用于基于 ESP32 的外部网络协处理器。

MPY-Cross现在允许从stdin读取源文件并将编译的代码写入stdout。

esp8266 和 esp32 端口增加了对乐鑫 ESP-NOW 协议的支持,以及设置/获取 WLAN 硬件省电模式的功能。esp8266 端口增加了板变体支持,将所有板卡组合成一个具有 FLASH_512K、FLASH_1M 和 OTA 变体的ESP8266_GENERIC。

esp32 端口现已独占切换到 ESP-IDF 5,并且所有现有组件都已更新以配合此新 IDF() 功能(已删除的 esp32.hall_sensor() 除外)。FSM ULP 已为 S2 和 S3 芯片启用,插座现在支持 SO_BINDTODEVICE,并且已实现以板命名的引脚和 Pin.board 字典。MicroPython 堆已在此端口上进行了重新设计,以支持各种内存配置:它现在从 64KB 开始,并根据需要自动增长,并从 IDF 堆中分配新的段。这意味着,如果仅使用少量 RAM,则带有 SPIRAM 的电路板具有更快的 GC 收集时间,如果需要,可以使用所有可用的 RAM,并且 IDF 可以访问足够的 RAM 用于 SSL 套接字等内容。有关更多信息,请参阅 #12141。esp32 端口还整合了其通用板并重命名为 ESP32_GENERIC、ESP32_GENERIC_C3、ESP32_GENERIC_S2 和 ESP32_GENERIC_S3,有些现在有 SPIRAM 等变体。

鹿戴马物联平台 (opens new window)在线烧录MicroPthon固件已经同步更新到1.21.0版本,欢迎大家使用。

mimxrt端口对PWM和Pin.irq进行了修复和改进,并支持UART硬件流控制和UART.deinit。它还通过CYW43驱动程序集成了WiFi,并通过NimBLE集成了蓝牙。mbedTLS 绑定已启用证书的时间验证。

瑞萨电子-RA端口已更改电路板名称以匹配产品名称,更新为使用FSP v4.4.0,增加了对以下方面的支持:RA6M5 MCU,机器PWM,DAC,RNG和SDCard类,TinyUSB,通过NimBLE的蓝牙,通过lwIP的网络和mbedTLS。

蓝牙支持也已添加到 Pico W 板的 rp2 端口中。RPi板已从PICO重命名为RPI_PICO,PICO_W重命名为RPI_PICO_W.Lightsleep已固定在此端口上,因此它可以在WiFi关闭电源时工作,并且time.time_ns()现在具有微秒级分辨率。

samd 端口增加了 SPI 和 QSPI 闪存驱动程序,以支持外部闪存上的文件系统。

stm32端口增加了对STM32H5xx MCU的支持,对OCTOSPI外设的基本支持,以及对STM32L1xx MCU的USB支持。STM 模块添加了新功能,以支持STM32WL55上的 sub-GHz 无线电。

在micropython-lib中,添加了广泛的LoRa模块以及SX126x和SX127x芯片组的驱动程序,以及STM32WL55。此模块支持同步和异步 (异步) 模式。此外,作为 u 模块重命名的一部分,urequests 已重命名为请求(但为了向后兼容,“导入 urequests”目前仍然有效)。

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

芯片 代码变化 变化率
bare-arm: +192 +0.340%
minimal x86: +310 +0.169%
unix x64: +4784 +0.610%
stm32: -524 -0.134%
cc3200: +280 +0.154%
esp8266: +8016 +1.151%
esp32: +112133 +7.293%
mimxrt: +3624 +1.015%
renesas-ra: -2184 -0.348%
nrf: +616 +0.332%
rp2: +1920 +0.595%
samd: -7904 -2.953%

主导这些数字的变化是:

bare-arm, minimal, cc3200, nrf:NLR 跳转回调和对可扩展模块的支持 unix:mbedTLS 更新到 v2.28.1,支持在选择模块中轮询 Python 对象 STM32:移除TimeQ模块 ESP8266:新增 ESPNOW 模块 ESP32:切换到 ESP-IDF 5 mimxrt:UART功能,SSL证书的时间验证 renesas-ra:移至FSP v4.4.0,删除TimeQ模块 RP2:机器。脉宽调制增强功能 samd:删除对 VfsLfs1 的支持 自上一版本以来,性能实际上没有变化。

请注意,这是对夜间/不稳定版本使用当前版本控制方案的最后一个版本,其中版本之间的版本版本为 v1.20.0--g(在 v1.20.0 发布之后)。今后,每晚版本现在将称为预览版本,并使用下一个版本号进行版本控制。例如,如果最后一个版本是 v1.21.0,则预览版本的形式将是 v1.22.0-preview。g.有关讨论,请参阅#12127。

以下是从 git 提交历史记录生成的更改的详细列表,并按部分进行组织。

# 主要部件

# 所有:

根据代码拼写检查修复拼写错误 使用原始字符串文本修复带有反斜杠的字符串 修复 ruff 发现的各种 Python 编码不一致 修复已分配但从未使用的 Python 变量的情况 将MP_QSTR_umodule重命名为“MP_QSTR_module无处不在” 重命名 mp_umodule*、mp_module_umodule* 以删除“U”前缀 重命名 mod_umodule*, ^umodule* 以删除“u”前缀 在预处理器/生成文件变量中将 UMODULE 重命名为 MODULE 重命名 umodule.h 以删除“u”前缀 重命名 umodule.c 以删除“u”前缀 将MP_REGISTER_EXTENSIBLE_MODULE用于可覆盖的内置 替换 Python 代码中 umodule 的所有用法 删除 ZLIB 模块 删除查询变体成为目标 为 micropython.const 添加缺少的导入 将黑色配置部分添加到 pyproject.toml 将 ruff 添加到预提交 代码约定:要求提交由作者签名

# py 核心:

Ringbuf:实现put_bytes/get_bytes函数 parse:修复 COMP_CONST_FOLDING=0 和 COMP_MODULE_CONST=1 时的生成 compile:删除元组的过度优化,就像条件一样 stackctrl:添加 GCC 杂注以忽略悬空指针警告 GC:改进MICROPY_GC_HOOK_LOOP obj:删除mp_generic_unary_op() objslice:确保切片不可哈希 objdict:修复dict_view类型的哈希 objarray:不允许内存视图添加 objstr:返回不受支持的 binop 而不是引发 TypeError runtime:如果就地 binop 失败,则尝试相应的正常 binop 将MP_UNARY_OP_INT更改为MP_UNARY_OP_INT_MAYBE OBJ:接受mp_obj_get_int_maybe中的用户类型 objint:允许 int() 使用缓冲区协议解析任何内容 builtinimport:正确处理空的 sys.path builtinimport:优化子包加载 builtinimport:允许内置模块成为包 objModule:不要使用 sys.modules 来跟踪内置的初始化 NLRSETJMP:使用MP_NLR_JUMP_HEAD宏简化代码 NLR:删除注释掉的调试代码 NLR:实现跳转回调 使用 NLR 跳转回调优化编译/执行函数 builtinimport:从 sys.modules 中删除部分加载的模块 builtinimport:删除薄弱环节 makemoduledefs.py:添加注册可扩展内置模块的方法 objmodule:添加具有委派功能的内置模块表 objmodule:没有模块委派的 MSVC 的解决方法 mpconfig:如果系统需要,启用模块委派 modsys:允许将 sys.path 分配给 mkrules.mk:设置清单时自动配置冻结选项 解析:修复 #endif 注释中的拼写错误 NLRAarch64:修复输入寄存器的危险使用 makemoduledefs.py:修复了声明多个模块委托的问题 makemoduledefs.py:自动声明委托属性函数 词法分析器:允许在 f 字符串中使用转换说明符(例如 !r) mkrules.mk:允许 $(AFLAGS) 将标志设置为 $(AS) 编译:修复迭代器表达式的异步堆栈处理 builtinimport:修复禁用外部导入时的内置导入 流:添加调用mp_stream_close的mp_stream___exit___obj 运行时:始终在mp_init中初始化sched_state MPCONFIG:添加MICROPY_PY_PLATFORM,在额外功能级别启用 GC:通过跟踪上次使用的模块来加速增量气相色谱循环 GC:应用一些代码格式清理 GC:添加新MICROPY_GC_SPLIT_HEAP_AUTO“自动增长堆”模式 配置文件:删除禁用MICROPY_COMP_CONST的要求 mpconfig:如果启用了终结器,则启用 SSL 终结器 对象:修复边缘情况str % {} modstruct:支持结构格式的垫字节 Dynruntime.h:实现MP_OBJ_NEW_QSTR modthread:从 start_new_thread() 返回线程 ID malloc:修复m_realloc_maybe中的DEBUG_print()参数 运行时:添加帮助程序以在 NLR 跳转回调上调用常规函数 parse:即使引发异常,也始终免费词法分析 持久代码:即使引发异常,也始终关闭读取器 GC:在 gc.mem_free() 的结果中添加“最大新拆分”值 NLRX64:尽可能将nlr_push()标记为裸函数 mkrules.mk:如果未设置 STRIP 变量,则不要去除二进制文件 将 ifdef DEBUG_PRINT更改为 if DEBUG_PRINT 词法分析器:为fstring_args_idx添加缺少的初始化

# 扩展模块:

utime_mphal:提供通用的 mktime 函数 模组时间:提供通用时间模块 machine_pwm:删除PWM_INIT和PWM_DUTY_U16_NS配置选项 network_cyw43:添加电源管理常量 vfs_lfsx:修复范围检查前使用的偏移量 extmod.mk:禁止弃用非原型警告 moduos:将 os.sync() 移动到 extmod/moduos.c modtimeq:删除timeq模块 btstack:添加对 BTstack 的 cmake 支持 BTSTACK:修复了set_random_address中静态地址的标记 asyncio:将 uasyncio 重命名为 asyncio asyncio/uasyncio.py:添加向后兼容的 uasyncio 别名 modbinascii:修复缓冲区长度错误 更新以支持 mbedtls 3.x ModPlatform:在RISCV平台上设置MICROPY_PLATFORM_ARCH modbtree:在包含Berkeley-DB之前取消定义队列宏 modssl:添加 SSLContext 类 moddeflate:添加 Deflate 模块,提供 DeflateIO 类 modssl_mbedtls:从SSLSocket引用SSLContext vfs_posix_file:添加对缺少 ERR、HUP、NVAL 值的轮询支持 modselect:抽象出一个poll_set_t结构和函数 modselect:将低级轮询代码分解为通用函数 modselect:添加优化以尽可能使用系统轮询 modselect:删除对要轮询的标志参数的未记录支持 modssl_mbedtls:拒绝不支持的 IOCTL modssl_mbedtls:修复处于关闭/错误状态的套接字的 IOCTL modselect:正确跟踪 FD 的轮询对象数量 modssl_mbedtls:如果创建 SSL 时出错,则清除袜子成员 修改压缩:更改默认窗口大小 vfs_posix_file:修复 macOS 上的刷新处理问题 vfs_posix_file:实现 sys.std*.buffer 对象 Modlwip:添加对SO_BROADCAST套接字选项的支持 modsocket:添加对SO_BROADCAST套接字选项的支持 modssl_mbedtls:如果使用 PSA,则调用函数psa_crypto_init modssl_mbedtls:忽略错误ERR_SSL_RECEIVED_NEW_SESSION_TICKET 修改:修复IP选项SOF_BROADCAST的设置 network_esp_hosted:添加 ESP 托管网络接口 modssl_axtls:仅关闭一次使用的基础套接字 asyncio/event.py:修复 ThreadSafeFlag.ioctl 返回 btstack/btstack_hci_uart:在发送UART数据后触发轮询 asyncio/stream.py:修复了start_server的取消处理 Modnetwork:将最大主机名长度增加到 32 modnetwork:将 if.config(hostname) 转发到 network.hostname vfs_posix_file:修复 msvc 版本中的刷新处理

# 共享:

upytesthelper:修正“默认”的拼写 libc/printf:修复 putchar 和 put 的 stdout 目标 tinyusb:避免使用外部TinyUSB在目标上发生符号冲突 tinyusb:支持 HS 端点大小 Netutils/DHCPserver:回复正确的 Netif

# 驱动:

cyw43:使 CYW43 蓝牙 HCI 驱动程序更便携 ESP 托管:为 ESP 托管固件添加主机驱动程序 ninaw10/nina_bt_hci:对HCI驱动程序进行一些小修复 ESP 托管:固定引脚 IRQ ESP 托管:修复 MTU 大小 esp托管:增加对WiFI LED活动指示灯的支持

# MPY-cross:

允许指定以 - 开头的源文件 允许从标准输入读取和写入标准输出 从标准输入读取时,将输出写入标准输出 允许将 stdin 指定为输入,而无需 -- 修复“找不到文件”错误的源文件名

# 库:

mbedtls_errors:更新当前版本的 mbedtls 的错误列表 mbedtls:更新到 mbedtls v2.28.1 mbedtls_errors:添加 esp32 特有的 mbedtls 错误文件 mbedtls_errors:更新新 mbedtl 的修补程序和错误列表 mbedtls:更新到 mbedtls v2.28.3 FSP:将瑞萨电子 RA 的 FSP 更新至最新版本 v4.4.0 cyw43-driver:将驱动程序更新到最新版本v1.0.1 BTSTACK:更新到 v1.5.6.2 Pico-SDK:更新至版本 1.5.1 stm32lib:H5 v1.0.0 的更新库 oofatfs:修复create_name中的推测性读取 uzlib:添加内存效率高的流式 LZ77 压缩支持 UZLIB/LZ77:始终使用单独的历史缓冲区 UZLIB/defl_static:实现一些代码大小改进 Uzlib:清理 tinf -> uzlib 重命名 UZLIB:结合 zlib/gzip 标头解析以允许自动检测 Uzlib/Tinflate:实现更紧凑的查找表 UZLIB/defl_static:优化zlib_start/finish_block Uzlib:添加一个要传递给source_read_cb的source_read_data var Tinyusb:更新到最新的母版 protobuf-c:添加 protobuf-c 库 cyw43-driver:将驱动程序更新到最新版本v1.0.2 micropython-lib:将子模块更新到最新版本

# 支持组件

# 文档:

参考:删除词汇表中的双“是” 根据最近的 API 改进更新 PWM 示例 samd:在示例中使用引脚名称更加一致 reference/mpyfiles:在 v6.1 上添加发布信息 library/espnow: 更新 ESPNOW 文档 for WLAN.config(pm=x) 选项 开发/移植:将缺少的代码添加到示例 main.c 和 Makefile reference/speed_python:删除蝰蛇的 4 Arg 限制 mimxrt:为 Adafruit Metro M7 板添加引脚 samd:为Adafruit Metro M4空运板添加引脚 library/index:更新内置扩展文档 reference/包:将 GitHub 存储库添加到包示例依赖项 reference/mpremote.rst:扩展 MPremote 指南 library/index:uModule 重命名后更新文档 将 uasyncio 重命名为 asyncio ESP32:根据 IDF v5 的更改更新 ESP32 文档 library/SSL:为 SSLContext 添加文档 esp32/快速参考:为 WT32-ETH01 版本 1.4 添加局域网示例 library/deflate:添加用于放气的文档。放气IO develop/gettingstarted:阐明子模块初始化 develop/gettingstarted:更新 ARM 包列表 library/neopixel:将链接更改为micropython-lib参考 库/平台:为平台库添加文档 库/网络:阐明 network.hostname() 行为 ESP32/教程:添加通过寄存器访问引脚的示例 库/ESP32:更新 ESP32 idf_heap_info文档以匹配行为 library/gc:澄清mem_alloc和mem_free仅适用于 Python 堆 conf.py:将sphinxcontrib.jquery添加到扩展 添加需求.txt 文件与狮身人面像的依赖项 将剩余的“urequests”引用更改为“请求”

# 例子:

usercmodule:添加子包示例 natmod:将umodule重命名为模块 HWAPI:将 UASYNCIO 重命名为 Asyncio natmod/deflate:将 deflate 添加为动态原生模块 将ASM、PIO等标记为NOQA:F821(未定义名称) hwapi:为 96 板添加缺少的导入 碳示例 蓝牙:当广告数据过大时引发 ValueError 蓝牙:链接到 BLE 示例中的 aioble natmod:添加功能4作为类定义示例 UNIX/machine_bios.py:修正拼写错误

# 测试:

run-tests.py:确保 MPY 测试的 CWD 正确 基础知识:为各种类型的哈希添加更多测试 基础知识:从特殊方法测试中删除索引和 INV 导入/builtin_ext.py:为内置模块覆盖添加测试 导入/import_pkg9.py:为子包属性添加测试 随处更换模块 run-multitests.py:不允许从CWD进口 run-perfbench.py:不允许从CWD进口 run-natmodtests.py:不允许从CWD进口 float:测试域错误,以获取更多参数到数学功能的组合 将 uasyncio 重命名为 asyncio extmod/uctypes_array_assign_le:修复缓冲区 extmod/framebuf:修复缓冲区大小问题 extmod:添加 SSL 测试。SSLContext extmod:添加将 cadata 传递到 ssl.wrap_socket() 的测试 扩展:添加放气。放气IO测试 extmod:为选择模块添加覆盖率测试 extmod:如果无法创建UDP套接字,则跳过选择/套接字测试 extmod/select_poll_eintr.py:提高测试的鲁棒性 杂项/sys_settrace_features.py:修复了在较新的CPython上运行的问题 UNIX/mod_os:让 OS.System() 测试在 Windows 上工作 run-tests.py:在CPython上运行时捕获标准输出 multi_net:增加异步测试超时 压力/bytecode_limit.py:病例的倒序 float/float_format_ints.py:将 10 次幂测试放在单独的文件中 extmod/deflate_decompress.py:内存不足时跳过测试 extmod/ssl_cadata.py:跳过 axtls 上的测试 浮点/math_domain.py:调整测试以通过 obj-repr-C extmod/vfs_fat_finaliser.py:调整测试以便收集文件 自述文件:文档 ./run-internalbench.py run-internalbench.py:删除旧的CPython引用 multi_net/ssl_cert_rsa.py:更新测试证书 extmod/asyncio_threadsafeflag.py:UNIX Select 的更新

# 工具:

pyboard.py:将ProcessPtyTo终端成员“ser”重命名为“serial” MPremote:删除未使用的串行导入 pyboard.py:导入serial.tools.list_ports pyboard.py:导入 errno 以修复 Pyboard 错误中未定义的名称 manifestfile.py:修复许可证捕获 MPremote:添加 repl 选项以转义不可打印的字符 pydfu.py:使用 getattr 检索 getargspec 函数 MPREMOTE:添加命令sleep mpremote:允许快捷命令的终止符 mpremote:添加命令以获取和设置 RTCrtc MPremote:无目的地句柄cp mpremote:将 mpremote 与 pyboard.py 分离 MPREMOTE:修复了stdout_write_bytes功能的使用 mpremote:修复exec_ -> exec in commands.py 自动构建:更新自动构建代码,使用 IDF v5 构建 ESP32 端口 自动构建:增加对 ESP32 应用程序.bin文件的支持 mpy-tool.py:使用 isinstance() 进行类型检查 codeformat.py:跳过格式化 ESP-IDF 托管组件 codeformat.py:使用 pyproject.toml 进行黑色配置 MPremote:使软重置计为操作 自动构建:自动构建每个电路板的所有变体 mpy_ld.py:预先声明一些局部变量以安抚棉绒 mpy-tool.py:忽略 Python 2 兼容代码中的 linter 故障 mpy_ld.py:支持更复杂的 Rodata 部分 metrics.py:重命名后修复 NRF 和 RP2 板名 自动生成:在瑞萨电子-RA构建输出中包含.bin固件 自动构建/构建 downloads.py:验证标准功能 mpremote:添加对 RFC2217 的支持,通过 TCP 串连 metrics.py:修复重命名后的 ESP32 和 ESP8266 板名 将剩余的“urequests”引用更改为“请求” 词:

ci.sh:构建SAMD21和SAMD51板作为samd CI的一部分 ci.sh:添加函数以使用代码拼写检查代码拼写 ci.sh:将 mimxrt 和 samd 端口添加到代码大小构建中 ci.sh:构建PICO_W板作为 rp2 CI 的一部分 ci.sh:在stm32 CI构建中添加H5板 ci.sh:将ARDUINO_PORTENTA_C33添加到 RA CI 构建 工作流:获取 MPremote 工作流的完整历史记录 工作流:向代码格式设置工作流添加拼写检查 工作流:使用 ruff 将 GitHub 操作添加到 lint Python 代码 工作流:强制将 Ubuntu-20.04 用于 Unix 32 位版本 工作流程:更新 esp32 CI 以使用 IDF v5.0 工作流程:碰撞操作/签出从 3 到 4

# 芯片端口

# 所有芯片:

使用 Extmod 版本的 MKtime 而不是特定于端口的版本 从 STM32 和瑞萨电子-RA 中删除 OS.sync() 实现 为 ESP32、ESP8266、RP2、Mimxrt、SAMD51 启用 os.sync() 标准化帮助文本中的文档链接 在 machine_i2s.c 中,将 UASYNCIO 重命名为 Asyncio 简化 board.json 中的主板功能标记 /boards//board.json:删除“id”字段 将 board.json 限制为标准功能 重命名 Arduino 板 LED 引脚以保持一致 裸臂端口:无特定于此组件/端口的更改

# CC3200 端口:

mods/modutime:使用时间模块的extmod版本。 工具:修复进程失败时引发的异常 生成文件:构建固件.zip 嵌入端口:没有特定于此组件/端口的更改

# ESP8266 端口:

modutime:使用时间模块的扩展版本。 新增对乐鑫 ESP-NOW 协议的支持 machine_pwm:实现 duty_u16() 和 duty_ns() 以实现一致性 增加对WLAN的设置/获取省电模式的支持 更改网络。从功能到类型的 WLAN 允许 Ctrl-C 中断损坏的 fs while 循环 machine_pin:接受整数参数以mp_obj_get_pin_obj 添加主板变体支持 看板/ESP8266_GENERIC:添加图像文件名 板:确保 ModeSpnow.o 放置在 iROM0 中 板/ESP8266_GENERIC:从 2MiB 清单中删除 urllib

# ESP32 端口:

modutime:使用时间模块的扩展版本。 新增对乐鑫 ESP-NOW 协议的支持 增加对WLAN的设置/获取省电模式的支持 更改网络。从功能到类型的 WLAN 板:为两个 UM 板添加一些缺少的板配置 esp32_ulp:为 S2 和 S3 芯片启用 FSM ULP UART:使用 Xtal 作为 S3 和 C3 上的 UART 时钟源 ModeSpnow:将缓冲区大小配置选项的名称更改为“RxbuF” CMake:将PROJECT_DIR更改为CMAKE_CURRENT_LIST_DIR esp32_ulp:修复对 S2 和 S3 的 ULP (FSM) 支持 允许 Ctrl-C 中断损坏的 fs while 循环 从UART驱动程序切换到UART HAL ppp_set_auth:从 ESP-IDF 添加pppapi_set_auth ModeP32:删除esp32.hall_sensor功能 更新端口以支持 IDF v5.0.2 在recv_cb,从recv_info->rx_ctrl获取ESPNOW RSSI network_wlan:激活后等待WIFI_EVENT_STA_START 生成文件:提供更多 IDF 快捷方式 板:将 SDK 配置参数从已弃用更改为新参数 modules/inisetup.py:如果分区的标签是 ffat,则将其格式化为 FAT。 machine_uart:始终在UART配置中选择一个source_clk值 迁移到 IDF v5.0.2 后重新启用 mDNS 板/GENERIC_OTA:启用静默检查以减小固件大小 network_wlan:等待 STA/AP START/STOP 事件在 WLAN.active 中 machine_timer:从传统驱动程序切换到计时器 HAL machine_pin:添加一个引脚查找功能并在machine_pin_get_id中使用它 使用始终machine_pin_get_id获取 PIN 码 ID 添加对板命名引脚和 Pin.board 字典的支持 还从 IDF 管理的组件中收集属性 modmachine:add generic machine.bootloader() USB:添加自定义TinyUSB回调支持 板/ARDUINO_NANO_ESP32:添加对 Arduino Nano ESP32 的支持 CMakeLists:在构建中启用多个额外的组件目录 板/ARDUINO_NANO_ESP32:修复部署说明 主:删除未使用的 mbedtls 调试函数 machine_wdt:允许从线程馈送 WDT machine_hw_spi:修复 SPI(2) 的访问权限 machine_hw_spi:删除不必要的重复SPI引脚默认值 machine_hw_spi:删除 C3 和 S3 变体的 SPI 主机重命名 machine_hw_spi:在构造函数中检查有效的 SPI ID,而不是初始化 板:删除 board.md 文件中对 IDF 版本的引用 自述文件:指定仅支持 IDF v5.0.2 允许 malloc() 从 SPIRAM 分配 启用自动 Python 堆增长 GCCOLLECT:使电平参数易失性以强制递归函数 生成文件:实现以匹配其他端口make submodules boards/GENERIC: 与 GENERIC_{SPIRAM,OTA,D2WD,UNICORE} 合并 板/GENERIC_C3:与GENERIC_C3_USB合并 板/GENERIC_S2:与ESP32_S2_WROVER合并 板/GENERIC_S3:与GENERIC_S3_{SPIRAM,SPIRAM_OCT}合并 分区.csv:重命名为分区-4MiB.csv 使用大写变体名称 生成文件:将板变体附加到构建 将通用* 板重命名为 ESP32_GENERIC* 板/ESP32_GENERIC_C3:启用 UART REPL modsocket:添加对SO_BROADCAST套接字选项的支持 modnetwork:添加对SO_BINDTODEVICE套接字选项的支持 支持JTAG控制台,释放UART machine_uart:释放 GIL 以阻止读取 板:将引脚.csv添加到 UM 板和其他次要更改 板/UM_NANOS3:添加新的 UM NanoS3 板 network_ppp:删除任务后阻止 板/ARDUINO_NANO_ESP32:阐明恢复说明 电路板/UM_FEATHERS3:将 I2C 引脚固定在引脚中.csv 从深度睡眠启动时跳过映像验证 machine_pin:修复machine_pin_find中的空指针访问 MPHALPORT:将功能/行/文件信息添加到异常check_esp_err 修复分区.写块() 部分写入损坏 板:修复 UM S3 板的 VBAT 电压计算 板:为所有构建添加引导加载程序回滚支持 main:允许开发板覆盖MicroPython任务堆栈大小 板/ARDUINO_NANO_ESP32:使用 Arduino USB ID 板/清单.py:默认情况下将AIOESpnow冻结为固件

# Mimxrt 端口:

modutime:使用时间模块的扩展版本。 machine_pwm:仅在设置频率和占空比时才启动PWM flash:将低级驱动程序代码与flash对象分开 mpconfigport: add back lost uos.urandom() 添加缺少的UART定义并删除过时的配置 machine_spi:忽略 len=0 时的传输 machine_pin:在machine_pin_set_mode中执行完整配置 SD卡:使用sdcard_cmd_set_bus_width修复GCC 13构建错误 LED:添加对最多四个 LED 的支持 板/ADAFRUIT_METRO_M7:添加 Adafruit Metro M7 板定义 machine_pwm:修复频率更改、PWM 打印和错误检查 Makefile:对 mimxrt1062 使用特定的 fsl_flexspi_nor_boot.c machine_pin:修复在没有处理程序的情况下调用 Pin.irq 时的错误 hal/pwm_backport:修复 PWM duty_u16的 0 和 65536 边缘情况 machine_uart:添加 uart.deinit 方法和machine_uart_deinit_all machine_uart:增加对UART硬件流控制的支持 板:增加对 SNVS 引脚的 GPIO 控制的支持 HAL:使闪存时钟频率可配置 修复 OLIMEX 和 Adafruit 板的 UART RTS/CTS 分配 machine_pin:扩展引脚配置功能 SDIO:添加 SDIO 驱动程序 通过 CYW43 驱动程序集成对 WiFi 的支持 将蓝牙支持与 NimBLE 绑定集成 IRQ:将所有与 IRQ 相关的定义移动到专用标头 machine_uart:修复并完成UART.deinit和uart_deinit_all 板:修复了 MIMXRT1176.ld 中MICROPY_HW_SDRAM_AVAIL的使用 machine_uart:支持 UART 的慢波特率 machine_uart:添加辅助函数以更改波特率 SDIO:移动配置防护,以便仅在使用时才包含标头 制作文件:更新以使用最新的TinyUSB mpconfigport:不要覆盖解析块分配 SDIO:添加对 117X 系列的支持 mimxrt_sdram:允许主板覆盖默认的 SDRAM 配置 生成文件:为支持的 MCU 系列启用 FSL USDHC 删除SD卡生成文件配置选项 MPBTHCIPORT:为 BT HCI UART 启用流量控制 mbedtls:启用证书有效性时间验证 machine_uart:将UART时钟设置为固定的40MHz值 板/MIMXRT1176_clock_config:修复有关UART时钟的评论 板:修复SD卡配置选项的命名 mpbthciport:允许禁用BLE的UART流控制 machine_rtc:改进启动时的 RTC 初始化 最小端口:没有特定于此组件/端口的更改

# NRF 端口:

模块/utime:使用时间模块的 extmod 版本 板:重命名所有 nRF 板以使用大写 PIC16位端口:无特定于此组件/端口的更改

# 电源端口:

mpconfigport:不要覆盖解析块分配 QEMU-arm 端口:没有特定于此组件/端口的更改

# renesas-ra port:

将MICROPY_HW_BOARD_NAME定义更改为产品名称 modutime:使用时间模块的扩展版本。 更新主板和 RA 目录文件以支持 FSP v4.4.0 添加宏定义以避免FSP v4.4.0编译错误 IRQ:修复有关 IRQ 优先级的评论中的拼写错误 合并hal_entry.c 代码并删除 hal_entry() 函数 电路板/pins.py:修复 PA/PB 引脚支持 将所有fsp_cfg头文件合并到一个位置 支持更改UART的波特率 增加对RA6M5的支持,并增加机器PWM,DAC,SD卡 板/VK_RA6M5:添加新的板定义 从常量列表中删除重复的机器模块 machine_spi:始终使用machine_pin_find获取引脚 看板:删除 make-pins.py 中无法访问的代码 生成文件:生成二进制固件输出 添加 TinyUSB 支持 使用 NimBLE 添加蓝牙支持 添加 RNG 驱动程序 使用 lwIP 添加网络支持 添加 mbedTLS 支持 fsp_cfg:添加常用 FSP 配置文件 板/ARDUINO_PORTENTA_C33:添加对 Portenta C33 的支持 主板/ARDUINO_PORTENTA_C33:更新 WiFi 配置 调整 LWIP 缓冲区和时序以提高网络性能

# RP2 端口:

modutime:使用时间模块的扩展版本。 machine_pwm:在构造函数中启用关键字参数并添加 init 方法 machine_pwm:添加对反相PWM通道输出的支持 machine_pwm:添加 duty_x() 检查,如果未启动 PWM 则返回 0 使rp2_state_machine_exec接受整数 CMakeLists:调用 cmake 时允许相对MICROPY_BOARD_DIR MPALPORT:仅将 CYW43 MAC 用于 WLAN0 接口 CMake:规范化MICROPY_PORT_DIR 通过 cyw43 添加蓝牙支持 MPBTHCIPORT:取消现有警报 主板/PICO_W:启用低功耗蓝牙支持 machine_pin:从machine_pin_make_new中剔除引脚查找代码 使用大写变体名称 生成文件:将板变体附加到构建 将 PICO, PICO_W 重命名为 RPI_PICO, RPI_PICO_W machine_timer:修复定时器周期的打印 MPBTHCIPORT:切换到静态调度程序节点 mpbthciport:修复HCI UART配置 mpconfigport:启用时禁用 BLE 锁定MICROPY_PY_BLUETOOTH 板/ARDUINO_NANO_RP2040_CONNECT:使用标准 HCI UART 波特率 ModMachine:在WiFi断电时修复LightSleep问题 msc_disk:允许配置 USB MSC 查询响应 自述文件:修复RPI_PICO_W板的名称 CMakeLists:在所有生成中启用调试符号 使用time_us_64实施time.time_ns,使其具有美国分辨率

# samd port:

modutime:使用时间模块的扩展版本。 machine_pwm:将 init() 方法添加到 PWM 并简化 PWM 代码 mpconfigport:对 SoftSPI 最大速度的丢弃支持 主板/MINISAM_M4:用于迷你 SAM M4 主板的更新引脚.csv 重新排列特定于 MCU 的加载程序文件 MCU/SAMD51:启用MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF 板:添加默认部署说明 主:修复软重置中的 Sercom deinit 排序 modmachine:将machine.deepSleep添加为machine.lightSleep的别名 Modmachine:使一些机器类可以通过 #defines 进行配置 板/SEEED_WIO_TERMINAL:重命名两个以数字开头的引脚 MCU:减少硬复位后的启动时间 machine_uart:增加对UART硬件流控制的支持 板/ADAFRUIT_METRO_M4_EXPRESS:添加地铁M4快速空运 主板:一致地重命名 QSPI 和 SPI 的闪存引脚 samd_spiflash:添加SPI闪存驱动程序并相应地进行配置 samd_qspiflash:添加QSPI闪存驱动程序并相应地进行配置 调整现有的 SAMD。闪存并在引导中与(Q)SPI闪存集成 电路板:扩展带外部闪存的电路板的代码大小限制 在 mpconfigmcu.mk 而不是 mpconfigboard.mk 中设置 LFS 类型 生成文件:将数学库文件从 mpconfigmcu.mk 移动到生成文件 生成文件:打印内存区域使用情况而不是总计 mpconfigport:在所有MCU/板上启用DHT和OneWire驱动器 mpconfigport:提供平台模块 模块/_boot.py:将 /lib 添加到 sys.path mpconfigport:不要覆盖解析块分配

# STM32 端口:

modutime:使用时间模块的扩展版本。 电路板/ARDUINO_PORTENTA_H7:启用 FDCAN 板/stm32h723_af.csv:修复 ADC 自动对焦定义 mboot:修复了打包的最终缓冲区的对齐方式 IRQ:修复有关优先级的评论中的拼写错误 USB:修复STM32G4上的 USB 支持 主板/NUCLEO_G474RE:使启用 USB 变得更加容易 ADC:增加对STM32L4A6 MCU的支持 板/NUCLEO_L4A6ZG:添加新板定义 帮助:不要在帮助()中包含不可用的功能 帮助:从帮助中排除旧条目,并调整常量名称 mpconfigboard_common:提供默认的 spidev 配置 开发板:在适当的情况下使用默认的 spibdev 配置 生成文件:将相关的 CPU 标志传递给汇编程序 make-stmconst.py:名称以 _t 结尾的支撑结构 主:尽早启动UART REPL usbd_conf:将 G0 USB 外围设备视为 MICROPY_HW_USB_IS_MULTI_OTG=0 machine_adc:在所有MCU上处理小于8位的ADC分辨率 添加对 H5 MCU 的初始支持 电路板:为 H5 MCU 添加 LD、AF.csv 和 hal_conf_base.H 文件 Octospi:添加对OCTOSPI外设的初步支持 板/STM32H573I_DK:添加 H5 板定义文件 增加对STM32L1 MCU 的 USB 支持 直接修改 RCC->APB2ENR 而不是 HAL API 修改机器:删除重复的machine_timer_type声明 模组机器:公开machine_reset_cause_obj DAC:修复 G4 MCU 上的dac.write_timed以使用 32 位 DMA 访问 ADC:修复用于G4 MCU的ADC时钟预分频器 ADC:修复 PYB。G4 微控制器ADCAll.read_core_temp ADC:修复G4 MCU上的内部ADC通道读数 machine_adc:修理机器。ADC 将在 G4 MCU 上工作 ADC:为 G4 MCU 的 ADC 勘误表添加解决方法 ADC:修复 PYB。G4 和 L4 MCU 上的ADCAll.read_core_bat QSPI:允许qspi_write_cmd_data写入具有 1 个数据字节的 CMD mpconfigport:始终定义MICROPY_SOFT_TIMER_TICKS_MS 从常量列表中删除重复的机器模块 板/B_L072Z_LRWAN1:为内部SX1262添加引脚定义 板/B_L072Z_LRWAN1:将默认ROM级别降低到“核心” SPI:添加STM32WL5 SUBGHZ SPI 外设 powerctrlboot:支持从HSE+PLL STM32WL系统时钟 DMA:修复 WL55 板上的 DMA 完成问题 subghz:将 STM32WL55 subghz 无线电接口添加到 STM 模块 modstm:添加MICROPY_PY_STM_CONST标志,清除它以STM32WL5 使用大写变体名称 生成文件:将板变体附加到构建 mboot:通过将 zlib 替换为新的 deflate 模块来修复 fwupdate,修复 UART:修复 G4 MCU 上波特率低的 UART 超时问题 定时器:修复高级定时器外设上的死区时间配置 DMA:在H5 MCU上增加对SPI1 DMA的支持 Octospi:增加对双线SPI接口的支持 powerctrlboot:允许在H5 MCU上使用PLL3作为USB时钟 定时器:修复在 H5 MCU 上使用 TIM8 的问题 UART:当 UART10 是 USART 时,添加对 UART10 的支持 powerctrlboot:允许在 H5 上启用 PLL1 Q 和 R 输出 ADC:修复STM32H5支持 ADC:增加对STM32H5 ADC2 输入的支持 ADC:优化 G4、H5、L4 和 WB MCU 的采样时间 machine_adc:修复和改进STM32H5支持 DAC:通过dma_nohal实现添加STM32H5 DAC 支持。 板:在所有 hal_conf.h 文件中将包含到定义之后 UART:通用 H5 和 H7 MCU 的 UART 源时钟计算 DMA:去除不平衡) usbd_msc_interface:允许配置 MSC 查询响应 主板/ARDUINO_GIGA:更新主板配置 i2c:在 H7 MCU 上增加对 I2C4 的支持 Teensy 端口:没有特定于此组件/端口的更改

# Unix 端口:

modutime:使用时间模块的扩展版本。 生成文件:允许变体添加QSTR_DEFS 主:添加用于检查模块路径的 NLR 范围 自述文件:修复降价链接标记 modsocket:添加对缺少 ERR,HUP、NVAL 轮询值的轮询支持 modselect:删除 Unix 特定的选择模块实现 modjni:修复类型定义和错误字符串的构建错误 主:修复禁用MICROPY_USE_READLINE时的内存泄漏

# webassembly port:

modutime:使用时间模块的扩展版本。 使mp_js_do_str异步 使mp_js_process_char异步 将窗口检查类型替换为ENVIRONMENT_IS_NODE标志

# windows port:

Makefile:允许变体添加QSTR_DEFS zephyr port:

modutime:使用时间模块的扩展版本。