MicroPython今天升级到 v1.12版本。改进了mpy格式,支持本机代码和新的JavaScript移植。
在此版本中,mpy文件格式已更新到v4,并进行了一些重大改进:mpy文件大小平均减少了约35%,mpy文件的加载时间减少了约40%,并且它们现在支持保存native, viper 和 inline assembler代码(或从任何其他来源生成的机器代码)。mpy文件的大小减少是通过在编码时添加qstr窗口以重用过去的qstr、直接将qstr打包到字节码中以及通过定义静态qstr集来实现的。
一些VM操作码也进行了更改,以修复在对finally块执行break/continue时的错误,并进行了一些简化。特别是POP_BLOCK和POP_EXCEPT操作码被POP_EXCEPT_JUMP替换。
大多数大写宏已转换为小写,以生成更一致的C API,包括所有MP_OBJ_IS_xxx和MP_xxx_SLOT_IS_FILLED宏。
默认的PYTHON makefile变量现在从“PYTHON”更改为“python3”,但是python2仍然通过“make PYTHON=python2”支持。
mpy-cross编译器支持新的mpy版本4,并有新的命令行选项:“-march=”选择native emitter,“–version”打印MicroPython版本和mpy版本。此外,mpy-tool.py还支持冻结本机代码。
已经实现了一个用于外部用户C模块的模块系统,并在新的“文档/开发”部分提供了相关文档。
添加了一个新的“javascript”移植,通过Emscripten将javascript作为机器目标。这允许将MicroPython作为node.js中的应用程序运行,并在浏览器中运行。(以及其他功能)。
所有裸机移植都进行了以下改进:machine.sleep() 现在是machine.lightsleep(),并且lightsleep()和deepsleep()现在都接受一个可选参数,即最大睡眠时间(以毫秒为单位)。这些版本现在还允许使用常规方法冻结boot.py和main.py。并且添加了新的I2C方法i2c.writevto(addr,vect),该方法可用于一次将一个元组/缓冲区列表全部写入I2C设备。
现在,stm32移植具有完全集成的以太网MAC驱动程序(请参见network.LAN类),使用lwIP来实现TCP / IP协议栈,并且套接字变得更加稳定。增加了对 F413 MCU的支持。还有一些面向用户的较小更改:
- machine.UART(和pyb.UART)现在默认为timeout = 0(以前为1000ms),这使UART具有非阻塞性。
- 现在可以使用uos.dupterm配置USB REPL,并且默认情况下,在执行boot.py之前,将pyb.USB_VCP(0)放入dupterm slot1中。要禁用默认的REPL,请使用:uos.dupterm(None,1)。
- pyb.DAC(id) 现在只会在第一次调用DAC时将其复位;要兼容旧的方式,请通过bits参数,例如:pyb.DAC(id,bits)。
- pyb.DAC.noise() 和pyb.DAC.triangle(() 现在以全比例输出。
- 如果缺少boot.py,系统将不会重新创建(仅在文件系统损坏或恢复出厂设置时才创建)。
对于esp32移植,构建过程已更新,可以更好地与ESP IDF配合,现在使用sdkconfig来配置功能。现在默认情况下启用双核模式,SPIRAM处于内存映射模式,因此所有这些都可用于MicroPython,支持更改CPU频率,并且WDT现在会尽快重置设备(如果超时) 。
发表评论