334|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

回复
举报

1098

帖子

17

TA的资源

纯净的硅(高级)

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

点评

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

回复

1万

帖子

25

TA的资源

版主

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

是的


回复

629

帖子

0

TA的资源

纯净的硅(中级)

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

点评

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

回复

1万

帖子

25

TA的资源

版主

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

espnow 比较方便,可以试试


回复

34

帖子

0

TA的资源

一粒金砂(中级)

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

点评

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

回复

1万

帖子

25

TA的资源

版主

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

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

 

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


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

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
成就单片机高手---不得不看

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想 出来 再参考别人的提示,你就知道自己和别人思路 ...

2010全国电子设计竞赛-TI杯6省邀请赛 C题赛区一等奖论文

813397813398813399813400813401813402813403813404813405813406813407813408

430G2553电子音乐,两只老虎,荷塘月色

程序特点: 1:程序使用430launchpad+ccs5,不需要附加任何电路,不需要外晶振一片2553就好,只要一个喇叭或耳机接P2.4和P2.1即可(太 ...

LPC810串口控制八位数码管,labview上位机

似乎很久没有发帖了,看着EEworld的活动办得风声水起,也赶过来凑凑热闹。前阵子NXP送板子,想到如此小气的公司居然也送板子,未 ...

使用AD14创建异形PCB板

前段时间同事需要按照AutoCAD的尺寸做一个PCB板。AD14支持导入DWG文件,于是选择了直接导入文件的方式来获得PCB板的外形尺寸。Au ...

【平头哥Sipeed LicheeRV 86 Panel测评】十三、利用TCP封装HTTP包请求天气信息

本帖最后由 sonicfirr 于 2022-4-19 20:21 编辑 Linux还真是逐步熟悉中,现在才了解到Linux即没有原生的GUI,也没有应用层协 ...

ADX122驱动-凭空捏造

之前的章节里面我们写了adx112的驱动,adx122的驱动咱们还没写过,adx122是adx112的升级版本,升级成了20bit,并且内部自带恒流 ...

全志R128 SDK HAL 模块开发指南——CSI

# CSI 介绍sunxi 平台RTOS 上CSI_JPEG 驱动hal 的一般使用方法及调试接口,为开发与调试提供参考。 ## 模块介绍 ### SE ...

用全志XR806开发板轻松连上华为云实现物联网

## 二.从华为云官方仓库拉取连接平台所用的sdk 阅读华为云官方的开发手册,下载sdk一气呵成,值得吐槽的一点是官方的sdk竟然去年 ...

软件开发工程师的工作内容

软件开发,通俗说就是写程序,就是把一串一串的命令组合起来,让它来替我们完成某种特定任务。软件开发工程师就是从事软件开发相 ...

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

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
快速回复 返回顶部 返回列表