-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge micropython v1.23.0 #9611
Conversation
The legacy I2S "shim" is removed and replaced by the new I2S driver. The new driver fixes a bug where mono audio plays only in one channel. Application code size is reduced by 2672 bytes with this change. Tested on ESP32, ESP32+spiram, ESP32-S3 using example code from https://github.com/miketeachman/micropython-i2s-examples Signed-off-by: Mike Teachman <[email protected]>
Signed-off-by: Daniël van de Giessen <[email protected]>
Signed-off-by: Daniël van de Giessen <[email protected]>
The new IDF v5.2 deprecated the task cleanup callback we use, so support for the new option has been implemented in the previous commit. This also requires a change in the sdkconfig, via a new variable ${SDKCONFIG_IDF_VERSION_SPECIFIC} which is used in all mpconfigboard.cmake files to include an extra sdkconfig file based on the IDF version in use. Signed-off-by: Daniël van de Giessen <[email protected]>
Currently only the Arduino Nano ESP32 defines a machine.bootloader handler for ESP32. All other boards will intentionally hang. There is no error message, nor is a NotImplementedError raised. There's no indication if Micropython has crashed, or if the bootloader was entered but USB is not working, which is a real problem the ESP32 bootloader has. It's not possible escape from this hang with ^C or any other means besides physical access to the reset pin or the ability to cycle power. Change this to only define an implementation of machine.bootloader() when there is a handler for it. Signed-off-by: Trent Piepho <[email protected]>
On these targets it's possible to enter the bootloader by setting a bit in an RTC register before resetting. Structure it in a way that a board can still provide a custom bootloader handler. The handler here will be the default if none is provided, for any board based on the supported targets. Signed-off-by: Trent Piepho <[email protected]>
Prior to this commit, the pin defined for power would be used by the esp_idf driver to reset the PHY. That worked, but sometimes the MDIO configuration started before the power was fully settled, leading to an error. With the change in this commit, the power for the PHY is independently enabled in network_lan.c with a 100ms delay to allow the power to settle. A separate define for a reset pin is provided, even if the PHY reset pin is rarely connected. Fixes issue micropython#14013. Signed-off-by: robert-hh <[email protected]>
If the `timeout_char` parameter is not given, we should still configure the UART to ensure the UART is always initialized consistently. So the default of 0 gets applied correctly, or if, for example, the baudrate was changed the char timeout isn't still based on the old baudrate causing weird behaviour, etc. Signed-off-by: Daniël van de Giessen <[email protected]>
Added a 4MiB flash partitioning variant for ESP32S3: adds support for 4MiB discrete flash boards or ESP32-S3FH4R2 with embedded 4MiB flash based ones. Tested on the waveshare ESP32-S3 Mini w/ESP32-S3FH4R2. Signed-off-by: Stanislav Ponomarev <[email protected]>
Followup to 2345c1a. Signed-off-by: Damien George <[email protected]>
Activate the NIC on calls to connect() or config() if it's not already active. This change makes the NINA NIC more in line with CYW43 and other NICs, which allow configuring the NIC before or after it is activated. Signed-off-by: iabdalkader <[email protected]>
If no security mode is provided, use WPA for station and WEP for AP. Note only WEP is supported in AP mode. Signed-off-by: iabdalkader <[email protected]>
Signed-off-by: iabdalkader <[email protected]>
Enabled by default. Signed-off-by: Damien George <[email protected]>
Enabled by default. Signed-off-by: Damien George <[email protected]>
Disabled by default, but enabled on all boards that previously had `MICROPY_PY_MACHINE_BARE_METAL_FUNCS` enabled. Signed-off-by: Damien George <[email protected]>
`BLE().config(addr_mode=...)` is not safe to call if the NimBLE stack is not yet active (because it tries to acquire mutexes which should be initialized first). Signed-off-by: Daniël van de Giessen <[email protected]>
Signed-off-by: Kwabena W. Agyeman <[email protected]>
This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <[email protected]>
Previously USB was always enabled, but this created some conflicts when adding guards to other files on other ports. Note the configuration with USB disabled hasn't been tested and probably won't build or run without further work. Signed-off-by: Angus Gratton <[email protected]>
This new machine-module driver provides a "USBDevice" singleton object and a shim TinyUSB "runtime" driver that delegates the descriptors and all of the TinyUSB callbacks to Python functions. This allows writing arbitrary USB devices in pure Python. It's also possible to have a base built-in USB device implemented in C (eg CDC, or CDC+MSC) and a Python USB device added on top of that. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <[email protected]>
This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <[email protected]>
This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <[email protected]>
OpenAMP framework provides a standard inter processor communications infrastructure for RTOS and bare metal environments. There are 3 major components in OpenAMP: libmetal, remoteproc and RPMsg. libmetal provides abstraction of the low-level underlying hardware, remoteproc is used for processor Life Cycle Management (LCM) like loading firmware, starting, stopping a core etc., and RPMsg is a bus infrastructure that enables Inter Processor Communications (IPC) between different cores. Signed-off-by: iabdalkader <[email protected]>
libmetal provides an abstraction of the underlying hardware, to support other OpenAMP components. Signed-off-by: iabdalkader <[email protected]>
Add a MicroPython platform for libmetal, based on the generic platform. The MicroPython platform uses common mp_hal_xxx functions and allows ports to customize default configurations for libmetal. Signed-off-by: Jim Mussared <[email protected]> Signed-off-by: iabdalkader <[email protected]>
Signed-off-by: iabdalkader <[email protected]>
So there's only one location that does the ioctl(MP_STREAM_SEEK) call. Signed-off-by: Damien George <[email protected]>
Signed-off-by: iabdalkader <[email protected]>
This module implements OpenAMP's basic initialization and shared resources support, and provides support for OpenAMP's RPMsg component, by providing an `endpoint` type (a logical connection on top of RPMsg channel) which can be used to communicate with the remote core. Signed-off-by: iabdalkader <[email protected]>
3644384
to
50f0101
Compare
There is a big difference in build size, like 1800 bytes for Feather M4, which is causing some build failures. I'll investigate that. |
Most of that was due to the new |
There were upstream changes to how frozen .mpy's were stored, and the results are impressive. CPX has almost 900 more free bytes. That was so large I was worried something was wrong with the frozen code, but I can import and use the CPX frozen modules. |
f8de84b
to
49fca3f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One typo I spotted. Good otherwise.
Co-authored-by: Scott Shawcroft <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
In this merge, I did further
CIRCUITPY-CHANGE
annotations, to try to use that marker almost everywhere.This was a straightforward merge.
frozen/Adafuit_CircuitPython_asyncio
right now is pointing to branch, not a release, in that library. https://github.com/adafruit/Adafruit_CircuitPython_asyncio/tree/v1.22-merge. I need to test the changes in the branch to make sure they work with 9.1.x before I make a library release.