1126|6

1万

帖子

25

TA的资源

版主

楼主
 

micropython 发布 v1.23版 [复制链接]

 

动态USB设备,改进的webassembly移植,openamp,tls,vfs模块

此版本的MicroPython增加了对Python中定义的动态USB设备的支持,添加了新的openamp、tls和vfs模块,完全重新配置了webassembly以添加JavaScript和Python之间的代理,并为冻结模块实现了显著的代码大小优化。还有许多其他增强功能和错误修复。

经过大量的设计、开发和测试,MicroPython现在完全支持用户定义的USB设备。接口是通过新的 machine.USBDevice 类实现的,这允许用户指定USB描述符并实现USB端点传输的Python回调。有了它,任何USB设备都可以用纯Python实现。而 machine.USBDevice 接口是低层和完整的,在microython库中有一个更高级的USB库,可以更容易地实现各种设备,例如键盘、鼠标、MIDI 和串行 CDC。该功能目前在rp2和 samd 上可用,将来会移植到其它硬件。

通过新的OpenAMP模块增加了对OpenAMP(非对称多处理)协议的支持。这允许MicroPython控制系统中的其他CPU核心,加载和启动进程,并通过终端与它们通信。此功能目前在 mimxrt 和 stm32 上可用。

添加了两个新的模块:vfstls。vfs模块包含所有与vfs(虚拟文件系统)相关的函数和类,如mount、umount和VfsFat。这些最初在os模块中,但在os中使用它们与CPython不兼容,因此它们被移到了自己的专用模块中。它们目前仍存在于 os 模块中,但最终会从中删除,因此建议从现在开始使用vfs模块。同样,新的tls模块是ssl模块的演变,因此ssl中的所有现有功能都已转移到tls模块。之所以这样做,是因为MicroPython的SSL接口与CPython的越来越不同,将 SSL/TLS功能转移到新的TLS模块中,为其提供了发展空间,并获得对嵌入式应用程序有用的新功能。通过ssl模块的纯Python实现,仍然保留了与普通Python的兼容性。新的tls模块中的一个新特性是能够注册证书验证回调。

其他添加包括deque对象上的更多方法,使其具有双端性并支持迭代,以及支持 struct.pack/struct.unpack 中的半浮点 'e' 格式。动态本机模块已经公开了一些额外的运行时方法,.mpy 子版本已经从 v6.2 增加到 v6.3(.mpy文件中的本机代码需要重新编译,但字节码没有,而且仍然兼容)。

对于冻结模块,进行了显著的代码大小优化。已经定义了一种新的内部 mp_proto_fun_t 类型,它允许字节码函数(与本机代码相反)存储在冻结代码中,而不需要 mp_raw_code_t 描述符结构的任何额外开销。所有使用冻结模块构建的固件的大小都将显著减小。通过添加删除qstr散列字节的选项,对于非常小的目标,代码大小也得到了进一步的改进。

在源代码内部,“STATIC” 宏定义已被删除。代码现在应该只使用“static”。如果您有使用“STATIC”的C/C++代码,那么将其替换为“STATIC”,或者提供您自己的#define将“STATIC”定义为“STATIC”。有关详细信息,请参阅

链接已隐藏,如需查看请登录或者注册


Mbedtls 已更新到3.5.1版本。网络接口常量,如IF_STA和SEC_WPA2,现在已经跨端口合并,因此它们都位于 WLAN 类级别,例如 network.WLAN。SEC_WPA2(为了向后兼容,保留了网络模块级别的现有常量,但从现在起应优先使用新常量)。

esp32 在BLE组件中发现了一些重要的错误修复,以在不崩溃的情况下进行去初始化,并增加BLE任务堆栈的大小。该端口还使用新的 I2S IDF 驱动程序,并支持 IDF 5.0.5和5.2。对于esp32-C3/S2/S3设备,支持通过machine.bootloader() 进入引导加载程序,以及 esp32.mcu_temperature()。

rp2 端口已添加新的 machine.USBDevice 动态USB驱动程序,并将固件性能优化应用于运行时和虚拟机的关键部分,使性能提高了约10%。现在可以通过代理阵列直接访问 PIO 和 SPI FIFO 的内存,线程、lightsleep和UART IRQ延迟的错误已经修复。

stm32端口集成了对新openamp模块的支持,该模块在所有 Arduino 板上都启用。Arduino板的固件现在冻结在额外的Arduino特定库代码中。已经修复了STM32H5和STM32H7 MCU上的内部闪存写入(组选择和写入缓冲区中最后一个字),对 SPI DMA 缓存错误的重要修复,STM32F7 MCU上 I2C4 的 I2C 时钟修复,以及STM32G4 MCU上 FDCAN 源时钟频率的修复。Mboot 增加了对新的原始文件系统的支持,以允许更简单、更健壮的固件更新。

webassembly 端口在结构上进行了重大修改,现在构建为JavaScript.mjs模块,导出用户友好的JavaScriptlevel API,其灵感来自Pyodide提供的API(这是在浏览器中运行的CPython版本)。这一变化的动机是需要在Pyscript中使用MicroPython作为引擎,Pyscript是浏览器中Python的平台。webassembly端口中的新功能包括Python和JavaScript之间的对象代理、与JavaScript命名空间接口的js模块、用于各种代理助手的jsffi模块、顶级异步代码、JavaScript驱动的异步支持、Python堆的自动增长、用于全局内存管理的JavaScript和Python最终确定的集成、更多的时间模块函数以及对构建变体的支持(遵循unix端口)。

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

 

   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%

 

这些代码大小变化的主要原因是:

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

自上一版本以来,所有端口的性能实际上都没有变化,除了rp2端口,它的性能提高了大约10%。

感谢所有为本次发布做出贡献的人:Amirreza Hamzavi、Andrew Leech、Angus Gratton、Brian Pugh、Carlosgg、Christian Walther、Damien George、Daniël van de Giessen、darc、Dash Peters、David Lechner、Felix Dörre、iabdalkader、IhorNehrutsa、Iksas、J.Neuschä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。

MicroPython是一个全球开源项目,其贡献来自以下时区:0800、0700、0600、-0500、-0300、+0000、+0100、+0200、+0330、+0400、+0900、+1000、+1100。

本次发布的工作部分由GitHub赞助商资助,部分由George Robotics、Espressif、Anaconda、Arduino、LEGO Education、OpenMV和Planet Innovation资助。

 

链接已隐藏,如需查看请登录或者注册

最新回复

又没哟这方面的详细教程?如果要是假如也许可能会不会大概率将要估计有的话,给推介几个。   详情 回复 发表于 2024-6-9 10:11
点赞 关注
 
 

回复
举报

1131

帖子

17

TA的资源

纯净的硅(高级)

沙发
 

那这样用micrpython写USB应该特别方便了。

点评

是的  详情 回复 发表于 2024-6-4 17:44
 
 
 

回复

1万

帖子

25

TA的资源

版主

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

是的

 
 
 

回复

685

帖子

0

TA的资源

纯净的硅(高级)

4
 

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

点评

espnow 比较方便,可以试试  详情 回复 发表于 2024-6-6 12:51
 
 
 

回复

1万

帖子

25

TA的资源

版主

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

espnow 比较方便,可以试试

 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

6
 

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

点评

官方教程其实基本够用,只是英文的。   其它的可以多翻翻以前帖子,内容也不少了,就是比较零散。  详情 回复 发表于 2024-6-9 11:33
 
 
 

回复

1万

帖子

25

TA的资源

版主

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

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

 

其它的可以多翻翻以前帖子,内容也不少了,就是比较零散。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
【EEWORLD模块整理】+tlc2543(A/D)

今年我用的模块资料 已经证实好用

FPGA DCM时钟管理单元的理解

看Xilinx的Datasheet会注意到Xilinx的FPGA没有PLL,其实DCM就是时间管理单元。 --------------------------------------------- ...

电烙铁的使用小技巧

本人原创——乃自己当时查阅的资料和自己的一点点经验而写成,如有错误请多指教! 首先要说明的是,使用电烙 ...

ubuntu下修改内核发生“ncurses libraries“错误(解决方法)

BSEC@bsec-server:~/kernel/Kernel$ make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC script ...

在屏幕上显示大写字母DMH的VGA控制器

本帖最后由 PuesueDream 于 2015-7-22 17:18 编辑 基于ise14.7平台,用Nexys3开发板弄了一个显示程序。程序包含六部分 首 ...

msp430f149波特率设置

本帖最后由 灞波儿奔 于 2020-1-10 23:14 编辑 TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的 ...

为什么给一个变量赋值0时,直接写=0,而给它赋值0xffffffff时要写成=0xffffffffu

为什么给一个变量赋值0时,直接写*ram=0即可,而给它赋值0xffffffff时要写成*ram=0xffffffffu, 以下是具体的代码 /****** ...

报名提醒:最后几小时,100套价值390元平头哥RISC-V生态开发板免费送~

最后几小时啦,想要的网友速速来~100套价值390元平头哥RISC-V生态开发板——RVB2601来袭,现在提交创意,即有机会免费 ...

在现代计算机上运行虚拟Mac Quadra 900

682909 macintosh.js 是一个模拟 1991 年 Macintosh Quadra 900 和摩托罗拉 CPU 的虚拟机,它完全用 JavaScript 编写(因此请 ...

反激电源辅助供电绕组串联电阻

看到很多反激电源辅助绕组串联电阻的,如下图电阻Rvcc,想问一下这个电阻的作用是什么?

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表