dcexpert 发表于 2024-6-3 20:18

micropython 发布 v1.23版

<p><span style="font-size:16px;"><strong>动态USB设备,改进的webassembly移植,openamp,tls,vfs模块</strong></span><br />
<br />
此版本的MicroPython增加了对Python中定义的动态USB设备的支持,添加了新的openamp、tls和vfs模块,完全重新配置了webassembly以添加JavaScript和Python之间的代理,并为冻结模块实现了显著的代码大小优化。还有许多其他增强功能和错误修复。<br />
<br />
经过大量的设计、开发和测试,MicroPython现在完全支持用户定义的USB设备。接口是通过新的 machine.USBDevice 类实现的,这允许用户指定USB描述符并实现USB端点传输的Python回调。有了它,任何USB设备都可以用纯Python实现。而 machine.USBDevice 接口是低层和完整的,在microython库中有一个更高级的USB库,可以更容易地实现各种设备,例如键盘、鼠标、MIDI 和串行 CDC。该功能目前在rp2和 samd 上可用,将来会移植到其它硬件。<br />
<br />
通过新的OpenAMP模块增加了对OpenAMP(非对称多处理)协议的支持。这允许MicroPython控制系统中的其他CPU核心,加载和启动进程,并通过终端与它们通信。此功能目前在 mimxrt 和 stm32 上可用。<br />
<br />
添加了两个新的模块:<strong>vfs</strong> 和 <strong>tls</strong>。vfs模块包含所有与vfs(虚拟文件系统)相关的函数和类,如mount、umount和VfsFat。这些最初在os模块中,但在os中使用它们与CPython不兼容,因此它们被移到了自己的专用模块中。它们目前仍存在于 os 模块中,但最终会从中删除,因此建议从现在开始使用vfs模块。同样,新的tls模块是ssl模块的演变,因此ssl中的所有现有功能都已转移到tls模块。之所以这样做,是因为MicroPython的SSL接口与CPython的越来越不同,将 SSL/TLS功能转移到新的TLS模块中,为其提供了发展空间,并获得对嵌入式应用程序有用的新功能。通过ssl模块的纯Python实现,仍然保留了与普通Python的兼容性。新的tls模块中的一个新特性是能够注册证书验证回调。<br />
<br />
其他添加包括deque对象上的更多方法,使其具有双端性并支持迭代,以及支持 struct.pack/struct.unpack 中的半浮点 &#39;e&#39; 格式。动态本机模块已经公开了一些额外的运行时方法,.mpy 子版本已经从 v6.2 增加到 v6.3(.mpy文件中的本机代码需要重新编译,但字节码没有,而且仍然兼容)。<br />
<br />
对于冻结模块,进行了显著的代码大小优化。已经定义了一种新的内部 mp_proto_fun_t 类型,它允许字节码函数(与本机代码相反)存储在冻结代码中,而不需要 mp_raw_code_t 描述符结构的任何额外开销。所有使用冻结模块构建的固件的大小都将显著减小。通过添加删除qstr散列字节的选项,对于非常小的目标,代码大小也得到了进一步的改进。<br />
<br />
在源代码内部,&ldquo;STATIC&rdquo; 宏定义已被删除。代码现在应该只使用&ldquo;static&rdquo;。如果您有使用&ldquo;STATIC&rdquo;的C/C++代码,那么将其替换为&ldquo;STATIC&rdquo;,或者提供您自己的#define将&ldquo;STATIC&rdquo;定义为&ldquo;STATIC&rdquo;。有关详细信息,请参阅 <a class="postlink" href="https://github.com/micropython/micropython/commit/decf8e6a8bb940d5829ca3296790631fcece7b21">decf8e6提交</a>。<br />
<br />
Mbedtls 已更新到3.5.1版本。网络接口常量,如IF_STA和SEC_WPA2,现在已经跨端口合并,因此它们都位于 WLAN 类级别,例如 network.WLAN。SEC_WPA2(为了向后兼容,保留了网络模块级别的现有常量,但从现在起应优先使用新常量)。<br />
<br />
esp32 在BLE组件中发现了一些重要的错误修复,以在不崩溃的情况下进行去初始化,并增加BLE任务堆栈的大小。该端口还使用新的 I2S IDF 驱动程序,并支持 IDF 5.0.5和5.2。对于esp32-C3/S2/S3设备,支持通过machine.bootloader() 进入引导加载程序,以及 esp32.mcu_temperature()。<br />
<br />
rp2 端口已添加新的 machine.USBDevice 动态USB驱动程序,并将固件性能优化应用于运行时和虚拟机的关键部分,使性能提高了约10%。现在可以通过代理阵列直接访问 PIO 和 SPI FIFO 的内存,线程、lightsleep和UART IRQ延迟的错误已经修复。<br />
<br />
stm32端口集成了对新openamp模块的支持,该模块在所有 Arduino 板上都启用。Arduino板的固件现在冻结在额外的Arduino特定库代码中。已经修复了STM32H5和STM32H7 MCU上的内部闪存写入(组选择和写入缓冲区中最后一个字),对 SPI DMA 缓存错误的重要修复,STM32F7 MCU上 I2C4 的 I2C 时钟修复,以及STM32G4 MCU上 FDCAN 源时钟频率的修复。Mboot 增加了对新的原始文件系统的支持,以允许更简单、更健壮的固件更新。<br />
<br />
webassembly 端口在结构上进行了重大修改,现在构建为JavaScript.mjs模块,导出用户友好的JavaScriptlevel API,其灵感来自Pyodide提供的API(这是在浏览器中运行的CPython版本)。这一变化的动机是需要在Pyscript中使用MicroPython作为引擎,Pyscript是浏览器中Python的平台。webassembly端口中的新功能包括Python和JavaScript之间的对象代理、与JavaScript命名空间接口的js模块、用于各种代理助手的jsffi模块、顶级异步代码、JavaScript驱动的异步支持、Python堆的自动增长、用于全局内存管理的JavaScript和Python最终确定的集成、更多的时间模块函数以及对构建变体的支持(遵循unix端口)。<br />
<br />
自上一版本以来,各种端口的代码大小的变化是(文本部分的绝对变化和百分比变化):</p>

<p>&nbsp;</p>

<pre>
<code>   bare-arm:   -220-0.383%
minimal x86:   -341-0.184%
   unix x64: +20168+2.527%
      stm32:-1692-0.430%
   cc3200:   +256+0.139%
    esp8266:-8880-1.260%
      esp32:-3328-0.194%
   mimxrt:   -408-0.112%
renesas-ra:   -464-0.074%
      nrf:   -640-0.341%
      rp2:+5380+1.626%
       samd:+3224+1.229%</code></pre>

<p>&nbsp;</p>

<p>这些代码大小变化的主要原因是:</p>

<ul>
        <li>bare-arm、minimal :禁用qstr哈希</li>
        <li>unix:将mbedtls更新到3.5.1版本</li>
        <li>stm32:优化冻结模块的大小</li>
        <li>cc3200:添加了新的vfs模块,并修复了VM和数组类型中的错误</li>
        <li>esp8266:禁用未使用的MICROPY_DEBUG_PRINTERS并优化冻结的模块</li>
        <li>esp32、mimxrt、renesasra、nrf:优化冻结模块</li>
        <li>rp2:添加machine.USBDevice,启用-O2优化</li>
        <li>samd:添加machine.USBDevice</li>
</ul>

<p>自上一版本以来,所有端口的性能实际上都没有变化,除了rp2端口,它的性能提高了大约10%。<br />
<br />
感谢所有为本次发布做出贡献的人:Amirreza Hamzavi、Andrew Leech、Angus Gratton、Brian Pugh、Carlosgg、Christian Walther、Damien George、Dani&euml;l van de Giessen、darc、Dash Peters、David Lechner、Felix D&ouml;rre、iabdalkader、IhorNehrutsa、Iksas、J.Neusch&auml;fer、Jared Hancock、Jim Lipsey、Jim Mussared、Jochen Sprickerhof、Joey232、Jos Verlinde、Kwabena W.Agyeman、Maarten van der Schreck、Matt Trentini、Matthias Urlichs、Michia iel W.Beijen、MikeTeachman、Nicko van Someren、Olivier Lenoir、Phil Howard、Rick Sorensen、robert hh、Sebastian Romero、Simon Wood、Stanislav Ponomarev、stijn、Takahashi Takeo、Trent Piepho、Trent Warlaven、Vonasmic、YAMAMOTO Takashi、Yoctopuce。<br />
<br />
MicroPython是一个全球开源项目,其贡献来自以下时区:0800、0700、0600、-0500、-0300、+0000、+0100、+0200、+0330、+0400、+0900、+1000、+1100。<br />
<br />
本次发布的工作部分由GitHub赞助商资助,部分由George Robotics、Espressif、Anaconda、Arduino、LEGO Education、OpenMV和Planet Innovation资助。</p>

<p>&nbsp;</p>

<p><a href="https://github.com/micropython/micropython/releases/tag/v1.23.0" target="_blank">https://github.com/micropython/micropython/releases/tag/v1.23.0</a></p>

fxyc87 发表于 2024-6-4 17:06

<p>那这样用micrpython写USB应该特别方便了。</p>

dcexpert 发表于 2024-6-4 17:44

fxyc87 发表于 2024-6-4 17:06
那这样用micrpython写USB应该特别方便了。

<p>是的</p>

极限零 发表于 2024-6-6 08:50

<p>总算想起来ESP32的蓝牙了,太难了,不太好用</p>

dcexpert 发表于 2024-6-6 12:51

极限零 发表于 2024-6-6 08:50
总算想起来ESP32的蓝牙了,太难了,不太好用

<p>espnow 比较方便,可以试试</p>

hjh0512 发表于 2024-6-9 10:11

<p>又没哟这方面的详细教程?如果要是假如也许可能会不会大概率将要估计有的话,给推介几个。</p>

dcexpert 发表于 2024-6-9 11:33

<div class='shownolgin' data-isdigest='no'>hjh0512 发表于 2024-6-9 10:11
又没哟这方面的详细教程?如果要是假如也许可能会不会大概率将要估计有的话,给推介几个。

<p>官方教程其实基本够用,只是英文的。</p>

<p>&nbsp;</p>

<p>其它的可以多翻翻以前帖子,内容也不少了,就是比较零散。</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: micropython 发布 v1.23版