summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-04-09alif: Add support for pin alternate function selection.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/modmachine: Implement proper low-power modes.iabdalkader
Lightsleep current is around 23mA. Deepsleep current is sub 50uA. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/se_services: Use EUI extension for unique id.iabdalkader
The right service call to get UID is SERVICES_system_get_eui_extension which returns an 8 bytes UID. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Add 16-bit words swap flash setting.iabdalkader
The byte order (endianness) seems to be swapped when read in 8D-8D-8D in XIP mode, for most flashes, with the exception of MX which seems to swap half-words. This commit adds a flash setting to allow parts to enable half-word swap when data is written, to fix this issue. By default, only endianness is fixed. Tested with both MX and ISSI parts on AE3, flash test and simple file write/read. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Use OSPI in XIP mode only.iabdalkader
The OSPI controller supports concurrent direct/XIP accesses, there's no need to disable XIP on direct access. In addition to improving the performance, this change lays the groundwork for supporting access by the HP and HE cores simultaneously. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_ext: Optimize XIP speed.iabdalkader
This change increases XIP read speed to ~30Mbytes/s at 50MHz DDR: - Enable continuous mode. - Remove hard-coded settings. - Set XIP continuous mode timeout. The prefetch remains disabled. Although enabling the prefetch gives the best performance for the CPU in XIP mode, it must be disabled when the NPU accesses the OSPI flash. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Enable pull-up IO2/WP.iabdalkader
Leaving this pin low in combination with the default EM settings enables flash protection for the EM flash. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Add negative clock pin.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Configure dummy cycles.iabdalkader
The default dummy cycles may not match the actual flash frequency supported by a certain board. For example, the MX chip uses 20 dummy cycles by default which supports up to 200MHz DDR, but the maximum frequency supported by the AE3 board is 50MHz DDR. So the dummy cycles for this board can be as low as 6. It's important to set the correct dummy cycles, as it results in doubling the XIP read speed, in the case of the AE3 board. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Support flash device auto-detection in runtime.iabdalkader
This commit enables detecting the flash device in runtime, and uses the settings of the detected device instead of board-defined flash settings. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Fix XIP for 8-bit instructions (ISSI).iabdalkader
Disable XIP instruction DDR for 8-bit instructions. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/mpmetalport: Add Open-AMP MPU region.iabdalkader
Define an MPU region for Open-AMP and remove hard-coded attribute. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/mpu: Define constants for MPU regions.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/ospi_flash: Enter XIP mode when flash is idle.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/ospi_flash: Generalise flash driver to support MX chips.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/mpu: Add custom MPU_Load_Regions function.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/mpconfigport: Select SysTick on HE core.Damien George
UTIMER is used by the HP. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/system_tick: Implement optional ARM SysTick support for systick.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/system_tick: Implement optional LPTIMER support for systick.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/irq: Define more IRQ priorities.iabdalkader
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif: Implement Open-AMP port backend.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif: Support running the port on the HE core.iabdalkader
The same MicroPython firmware is built for the HE but with slightly different options, for example no USB. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif: Support building the port for HE or HP or both cores.iabdalkader
With this new Makefile you can build the following: make BOARD=MY_BOARD MCU_CORE=M55_HP # build HP firmware/ToC. make BOARD=MY_BOARD MCU_CORE=M55_HE # build HE firmware/ToC. make BOARD=MY_BOARD MCU_CORE=M55_DUAL # build HE+HP firmware + ToC. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/mcu: Add ToC config for dual images.iabdalkader
Note that 128K at the beginning of MRAM is reserved for future bootloaders. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/machine_adc: Add basic ADC support.Damien George
ADC12 information has been added to pin struct. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/usbd: Implement proper USB serial number.Damien George
Using SE services to get the SoC unique id. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/modmachine: Implement machine.unique_id(), fix machine.reset().Damien George
They both use SE services. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/modalif: Add alif.info() function.Damien George
Calls the SE services to print information about the SoC. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/mpconfigport: Enable MICROPY_PY_RANDOM_SEED_INIT_FUNC.Damien George
Uses the SE services to provide a random seed. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/mpconfigport: Enable os.urandom().Damien George
Uses the SE services to provide random numbers. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/se_services: Add SE services interface.Damien George
Includes services to get random numbers, reset SoC, get unique-id, dump SoC info, and CPU control services. Signed-off-by: Damien George <damien@micropython.org> Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-09alif/modmachine: Enable machine.Timer.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/system_tick: Integrate soft timer.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/mphalport: Enable efficient events and implement quiet timing.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif/system_tick: Use a UTIMER for system ticks and timing.Damien George
Includes an implementation of `system_tick_wfe_with_timeout_us()`. Signed-off-by: Damien George <damien@micropython.org>
2025-04-09alif: Add initial port to Alif Ensemble MCUs.Damien George
This commit adds the beginning of a new alif port with support for Alif Ensemble MCUs. See https://alifsemi.com/ Supported features of this port added by this commit: - UART REPL. - TinyUSB support, for REPL and MSC. - Octal SPI flash support, for filesystem. - machine.Pin support. General notes about the port: - It uses make, similar to other bare-metal ports here. - The toolchain is the standard arm-none-eabi- toolchain. - Flashing a board can be done using either the built-in serial bootloader, or JLink (both supported here). - There are two required submodules (one for drivers/SDK, one for security tools), both of which are open source and on GitHub. - No special hardware or software is needed for development, just a board connected over USB. OpenMV have generously sponsored the development of this port. Signed-off-by: Damien George <damien@micropython.org> Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-08alif/tinyusb_port: Implement SOF event.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-08alif/tinyusb_port: Disable USB IRQ on deinit.iabdalkader
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-08alif/tinyusb_port: Add Alif TinyUSB DCD driver.Damien George
From https://github.com/alifsemi/alif_vscode-tinyusb.git, commit c79f39361d334ee44f44fed30c56e70dbb368649 Signed-off-by: Damien George <damien.p.george@gmail.com> Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-08lib/alif-security-toolkit: Add new submodule for Alif Security Toolkit.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-08lib/alif_ensemble-cmsis-dfp: Add new submodule for Alif SDK v1.3.2.Damien George
Signed-off-by: Damien George <damien@micropython.org>
2025-04-08top: Add "ser" to codespell exclusion list.Damien George
This word appears in the upcoming alif port. Signed-off-by: Damien George <damien@micropython.org>
2025-04-08extmod/extmod.mk: Switch from drivers/cyw43/cywbt to lib/cyw43-drivers.Damien George
The cyw43-driver now provides the Bluetooth initialisation code, making `drivers/cyw43/cywbt.c` obsolete. To use the new code a port must enable the `CYW43_ENABLE_BLUETOOTH_OVER_UART` option. Some ports have yet to migrate to the new code, so in the meantime they can explicitly add the old source to their source list and continue to use it without change. Signed-off-by: Damien George <damien@micropython.org>
2025-04-08extmod/extmod.mk: Add cyw43_spi.c to list of sources.Damien George
This file is part of the updated cyw43-driver. It will only be used if `CYW43_USE_SPI` is enabled. Signed-off-by: Damien George <damien@micropython.org>
2025-04-08rp2/rp2_flash: Configure optimal flash timings.Mike Bell
Configure flash timings dynamically to match the system clock. Reconfigure timings after flash writes. Changes are: - ports/rp2/main.c: Set default flash timings. - ports/rp2/modmachine.c: Configure optimal flash timings on freq change. - ports/rp2/rp2_flash.c: Reconfigure flash when leaving critical section. Signed-off-by: Phil Howard <github@gadgetoid.com>
2025-04-08rp2/rp2_flash: Support flash writes from PSRAM.Mike Bell
Add a 256 byte (FLASH_PAGE_SIZE) SRAM copy buffer to allow copies from PSRAM to flash. This would otherwise hardfault since PSRAM is disabled when doing a write to flash. Changes are: - ports/rp2/rp2_flash.c: Add 256 byte (flash page size) SRAM copy buffer for PSRAM to flash copies. - ports/rp2/rp2_flash.c: Invalidate the XIP cache to purge any PSRAM data before critical flash operations. Co-authored-by: Phil Howard <github@gadgetoid.com> Co-authored-by: Angus Gratton <angus@redyak.com.au> Signed-off-by: Phil Howard <github@gadgetoid.com>
2025-04-08rp2/mpconfigport: Configure heap for PSRAM.Phil Howard
PSRAM will be used exclusively if MICROPY_GC_SPLIT_HEAP == 0, it will be added to RAM if MICROPY_GC_SPLIT_HEAP == 1, and the system will fall back to RAM only if it's not detected. Due to the size of PSRAM, GC stack was overflowing and causing the GC to scan through the entire memory pool. This caused noticable slowdowns during GC. Increase the stack from 256 to 4096 bytes to avoid overflow and increase the stack entry type size to accomodate 8MB+ PSRAM. Changes are: - ports/rp2/mpconfigport.h: Make split-heap optional and enable by default. - ports/rp2/mpconfigport.h: Increase GC stack entry type to uint32_t. - ports/rp2/mpconfigport.h: Raise GC stack size. Co-authored-by: Kirk Benell <kirk.benell@sparkfun.com> Signed-off-by: Phil Howard <github@gadgetoid.com>
2025-04-08rp2: Add support for PSRAM with auto-detection.Phil Howard
Performs a best-effort attempt to detect attached PSRAM, configure it and *add* it to the MicroPython heap. If PSRAM is not present, should fall back to use internal RAM. Introduce two new port/board defines: - MICROPY_HW_ENABLE_PSRAM to enable PSRAM. - MICROPY_HW_PSRAM_CS_PIN to define the chip-select pin (required). Changes are: - ports/rp2/rp2_psram.[ch]: Add new PSRAM module. - ports/rp2/main.c: Add optional PSRAM support. - ports/rp2/CMakeLists.txt: Include rp2_psram.c. - ports/rp2/mpconfigport.h: Add MICROPY_HW_ENABLE_PSRAM. - ports/rp2/modmachine.c: Reconfigure PSRAM on freq change. Co-authored-by: Kirk Benell <kirk.benell@sparkfun.com> Co-authored-by: Mike Bell <mike@mercuna.com> Signed-off-by: Phil Howard <phil@gadgetoid.com>
2025-04-08tools/mpremote: Allow .img for ROMFS file and validate ROMFS image.iabdalkader
Currently the tool allows writing an invalid ROMFS image, with a bad header or images smaller than minimum size, and only checks the image extension. This commit allows deploying a ROMFS with either a ".img" or ".romfs" extension (in the future support may be added for other extensions that have different semantics, eg a manifest), and validates the image header before writing. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-04-07tools/gen-cpydiff.py: Fail CPython diff generation if output matches.Angus Gratton
Previously this information was recorded in a "status" field of the result, but nothing ever parsed this result which led to non-differences not being removed. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>