v3.8.0

v3.8.0 อัปเดตแกนหลักเป็น MicroPython 1.13 แช่แข็งไลบรารีช่วยเหลือจำนวนมากลงในเฟิร์มแวร์ เพิ่มการรองรับ Portenta Ethernet (พร้อมตัวอย่างการเชื่อมต่อเครือข่าย) รองรับ HDMI CEC ในโมดูล lcd กำหนดค่าบอดเรต/จุดสุ่มตัวอย่างสำหรับ pyb.CAN และแก้ไขปัญหาการใช้พลังงานต่ำและ HAL บน H7 จำนวนมาก โมดูล time / utime ถูกรวมเข้าด้วยกัน และ DMA ของ pyb.DAC บน F4 ถูกปิดใช้งาน — อ่านการเปลี่ยนแปลงที่อาจทำให้โค้ดเสียหายด้านล่าง

จุดเด่น

  • MicroPython 1.13 — แกนหลัก MicroPython ที่รวมมาได้รับการอัปเดตแล้ว

  • ไลบรารีที่แช่แข็งuasyncio, mqtt, rpc, rtsp, modbus, bno055, pid, ssd1306 และอื่น ๆ ถูกแช่แข็งไว้ในเฟิร์มแวร์แล้ว

  • Portenta Ethernet — รองรับ Ethernet พร้อมตัวอย่าง HTTP / SSL / peer-to-peer

  • HDMI CEC — API สำหรับ CEC ใหม่ในโมดูล lcd (Pure Thermal)

  • pyb.CAN — กำหนด bit timing จากคีย์เวิร์ด baudrate / sampling_point

  • การเปลี่ยนแปลงที่ทำให้โค้ดเสียหาย: โมดูล time / utime ถูกรวมเข้าด้วยกัน และฟังก์ชัน DMA ของ pyb.DAC บน F4 ถูกปิดใช้งาน — ดูการเปลี่ยนแปลงที่ทำให้โค้ดเสียหาย

ฟีเจอร์ใหม่

  • Frozen manifestuasyncio, mqtt, rpc, rtsp, modbus, bno055, mutex, pid, ssd1306, tb6612 และ vl53l1x ถูกแช่แข็งไว้ในเฟิร์มแวร์บน OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta แล้ว

  • Portenta Ethernet — เปิดใช้งาน Ethernet พร้อมตัวอย่าง http_client, http_client_ssl และ peer_to_peer

  • HDMI CEC — เพิ่ม HDMI CEC API ในโมดูล lcd (Pure Thermal)

  • pyb.CAN — คอนสตรักเตอร์ / init() ตอนนี้ดึง bit timing จากคีย์เวิร์ด baudrate และ sampling_point (รูปแบบ prescaler แบบ manual ยังคงใช้งานได้) และอัปเดตตัวอย่าง CAN ตามนั้น

การเปลี่ยนแปลงและการปรับปรุงอื่น ๆ

  • แบนเนอร์ REPL ตอนนี้แสดงสตริงเวอร์ชัน HAL และตัวอย่าง Audio FFT ได้รับการอัปเดตสำหรับ API ulab เวอร์ชันใหม่

การแก้ไขบัก

กล้องและเซนเซอร์:

  • แก้ไขความถี่สัญญาณนาฬิกา OV2640 และการปรับขนาดความถี่ PCLK ของ OV5640 บนอุปกรณ์ STM32H7 rev Y; กู้คืนบัส I2C สำหรับ FIR จากสถานะ arbitration-lost โดยการส่งพัลส์ SCL และลองเริ่ม AMG8833 ใหม่เมื่อ F7 soft-reset

พลังงานและตัวจับเวลา:

  • แก้ไขการเข้าสู่โหมดพลังงานต่ำ (stop/standby) ของ H7 — การปรับแรงดันสำหรับ rev V การเปิดใช้งาน oscillator/PLL อีกครั้งเมื่อตื่น SDRAM แบบพลังงานต่ำพร้อมการเก็บข้อมูล DRAM การปิดใช้งาน Systick เมื่อเข้า stop และการเปิดใช้งาน DBGMCU เฉพาะในบิลด์ debug แก้ไขสถานะ HAL ของ machine.Timer หลังการอัปเดต H7 HAL และย้อนกลับการเปลี่ยนลำดับความสำคัญของ IRQ สำหรับการอ่าน/เขียน SD

จอแสดงผลและการเชื่อมต่อ:

  • แก้ไขการกำหนดค่าขนาดข้อมูล 8/16 บิตของ F4 SPI LCD (ค่า MCU_SERIES define ผิด) คืนค่าข้อผิดพลาดเมื่อเริ่มต้น WINC1500 SPI bus ล้มเหลวแทนที่จะดำเนินการต่อแบบเงียบ และใช้ static SPI handle เพื่อหลีกเลี่ยงความขัดแย้งของ WINC1500 SPI bus แก้ไขบัก GC-collect ของ MicroPython

ระบบ:

  • unittests.py จะไม่ทำเครื่องหมายว่า suite ล้มเหลวเมื่อการทดสอบถูกปิดใช้งานหรือไม่พร้อมใช้งาน และลบตัวอย่าง camera_lcd ของ Thermopile-shield ที่เสียออก

ฮาร์ดแวร์และการรองรับบอร์ด

  • OpenMV Pure Thermal — บอร์ดได้รับการอัปเดตและเปลี่ยนชื่อ (OPENMVPURETHERMALOPENMVPT) พร้อม HDMI CEC

  • OpenMV 2 — เปิดใช้งานไดรเวอร์กล้อง OV2640

  • Arduino Portenta H7 — รองรับ Ethernet

การเปลี่ยนแปลง API ที่ทำให้โค้ดเสียหาย

การเปลี่ยนแปลง API ที่มองเห็นได้โดยผู้ใช้ระหว่าง v3.7.0 และ v3.8.0 ขอบเขต: Python C-modules ใน modules/ และ Python libraries ใน scripts/libraries/

การเปลี่ยนแปลงแต่ละรายการได้รับการระบุด้วยผลกระทบ:

  • minor — API แคบ ส่งผลกระทบเฉพาะสคริปต์ที่ใช้งาน

  • behavior — API เดิม ผลลัพธ์ต่างกัน ตรวจสอบสคริปต์ที่ปรับแต่งแล้วอีกครั้ง

การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบในลำดับนั้น หากคุณต้องการพอร์ตโค้ด ให้ข้ามไปที่ รายการตรวจสอบการย้าย ที่ท้ายเอกสาร แต่ละ commit hash เชื่อมโยงไปยัง diff บน GitHub

รวมโมดูล time / utime (minor)

โมดูล time และ utime ถูกรวมเข้าด้วยกัน และคลาส clock ของ OpenMV ถูกย้ายไปยัง utime ตัวอย่างที่รวมมาทั้งหมดได้รับการอัปเดตเป็น import utime / clock = utime.clock() สคริปต์ที่พึ่งพา import time สำหรับคลาส clock ควรนำเข้า utime แทน

Commits: 20587f308

ปิดใช้งานฟังก์ชัน DMA ของ pyb.DAC บน F4 (minor)

บนบอร์ดที่ใช้ F4 ฟังก์ชันของ pyb.DAC ที่ต้องใช้ DMA ถูกปิดใช้งาน เนื่องจาก F4 heap อยู่ใน CCM ซึ่งไม่สามารถเข้าถึง DMA ได้ สคริปต์ F4 ที่ใช้การเขียน DAC DMA-buffer ต้องหลีกเลี่ยงฟังก์ชันเหล่านั้น

Commits: d61f236f2

อัปเดต MicroPython เป็น 1.13 (behavior)

แกนหลัก MicroPython ที่รวมมาได้รับการอัปเดตเป็น 1.13 พฤติกรรมของไลบรารีมาตรฐานและภาษาเป็นไปตาม upstream MicroPython 1.13 ตรวจสอบสคริปต์ที่พึ่งพาพฤติกรรมเฉพาะเวอร์ชันของ micropython / โมดูลมาตรฐานอีกครั้ง

Commits: fb0a5e26d

ความถี่ที่รองรับของ cpufreq ขึ้นอยู่กับ revision (behavior)

เพิ่มความถี่ CPU เพิ่มเติมและทำให้รับรู้ silicon revision: cpufreq.get_supported_frequencies() ตอนนี้คืนรายการที่ขึ้นอยู่กับ revision บน H7 (50/100/200/400 MHz บน rev X/Y, 60/120/240/480 MHz บน rev V) สคริปต์ที่ hard-code ความถี่จากรายการคงที่เดิมควร query รายการที่รองรับในขณะ runtime

Commits: 825dd0742

รายการตรวจสอบการย้าย

สำหรับการพอร์ตที่ราบรื่นไปยัง v3.8.0 งานทั่วไปคือ:

  1. เปลี่ยน import time เป็น import utime ในที่ที่คุณใช้คลาส clock (การรวม time/utime)

  2. บนบอร์ด F4 หยุดใช้ฟังก์ชัน DMA-buffer ของ pyb.DAC (การเปลี่ยนแปลง F4 DAC)

  3. ตรวจสอบสคริปต์ที่พึ่งพาพฤติกรรมเฉพาะเวอร์ชัน MicroPython กับ 1.13 อีกครั้ง (การอัปเกรด MicroPython) และ query cpufreq.get_supported_frequencies() ในขณะ runtime แทนการ hard-code (การเปลี่ยนแปลง cpufreq)

สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่มีการเปลี่ยนแปลง