circuitpython/ports/mimxrt
Yilin Sun 053aade741 mimxrt/boards: Re-generate MIMXRT1052 clock config files.
These were regenerated by the NXP Config tool for v2.11.

The board_init update was needed to ensure CLOCK_SetMode() is run
at the appropriate time during startup.

Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
2025-08-25 10:48:17 +10:00
..
boards mimxrt/boards: Re-generate MIMXRT1052 clock config files. 2025-08-25 10:48:17 +10:00
hal mimxrt/hal/qspi_nor_flash_config: Use a safe common CS timing. 2025-03-25 12:40:41 +11:00
lwip_inc extmod/lwip-include: Factor common lwIP config into lwipopts_common.h. 2025-01-29 12:36:27 +11:00
mbedtls all: Update bindings, ports and tests for mbedtls v3.5.1. 2024-01-30 11:08:46 +11:00
modules ports: Use vfs module instead of os. 2024-02-07 13:25:09 +11:00
board_init.c mimxrt/boards: Re-generate MIMXRT1052 clock config files. 2025-08-25 10:48:17 +10:00
cyw43_configport.h extmod,alif,mimxrt,rp2,stm32: Create common cyw43 driver config header. 2025-05-08 15:32:05 +10:00
dma_manager.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
dma_manager.h mixmrt/machine_i2s: Add I2S protocol support. 2022-03-30 14:12:40 +11:00
eth.c mimxrt: Restructure nxp_sdk to match official mcux-sdk. 2025-08-25 10:48:16 +10:00
eth.h mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2022-11-17 14:11:50 +11:00
fatfs_port.c mimxrt/sdcard: Implement SDCard driver. 2021-09-07 20:45:33 +02:00
flash.c mimxrt/hal: Set the flexspi flash CLK frequency on boot. 2025-02-10 11:32:26 +11:00
flash.h mimxrt/flash: Separate low level driver code from flash object. 2023-05-09 15:18:36 +10:00
help.c ports: Standardise docs link in help text. 2023-06-02 11:48:46 +10:00
irq.h mimxrt/irq: Add CSI IRQ. 2025-02-07 22:39:32 +11:00
led.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 2023-11-03 14:18:54 +11:00
led.h mimxrt/led: Add support for up to four LEDs. 2023-05-23 10:54:23 +10:00
machine_adc.c mimxrt/machine_adc: Add ADC.read_uv() method. 2025-03-25 12:38:00 +11:00
machine_bitstream.c mimxrt: Fix cycle counter for time.ticks_cpu() and machine.bitstream(). 2021-10-25 15:50:44 +11:00
machine_i2c.c mimxrt/machine_i2c_target: Support I2C target mode. 2025-08-01 23:03:17 +10:00
machine_i2c.h mimxrt/machine_i2c_target: Support I2C target mode. 2025-08-01 23:03:17 +10:00
machine_i2c_target.c mimxrt/machine_i2c_target: Support I2C target mode. 2025-08-01 23:03:17 +10:00
machine_i2s.c mimxrt: Restructure nxp_sdk to match official mcux-sdk. 2025-08-25 10:48:16 +10:00
machine_led.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_pin.c mimxrt/machine_pin: Clear IRQ flag when enabling or disabling IRQ. 2024-08-20 12:06:25 +10:00
machine_pwm.c mimxrt: Restructure nxp_sdk to match official mcux-sdk. 2025-08-25 10:48:16 +10:00
machine_rtc.c mimxrt: Restructure nxp_sdk to match official mcux-sdk. 2025-08-25 10:48:16 +10:00
machine_sdcard.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_spi.c mimxrt: Enable default devices for I2C, SPI and UART. 2025-03-25 12:44:20 +11:00
machine_uart.c mimxrt/machine_uart: Enable CTS SION so it can be read. 2025-04-22 12:39:01 +10:00
machine_wdt.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
main.c mimxrt/machine_i2c_target: Support I2C target mode. 2025-08-01 23:03:17 +10:00
Makefile mimxrt: Restructure nxp_sdk to match official mcux-sdk. 2025-08-25 10:48:16 +10:00
mimxrt_flash.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mimxrt_sdram.c mimxrt/mimxrt_sdram: Fix pin config and comments. 2024-08-20 12:05:59 +10:00
modmachine.c all: Rename the "NORETURN" macro to "MP_NORETURN". 2025-05-13 10:36:47 +10:00
modmachine.h extmod/modmachine: Clean up decls of machine types to use common ones. 2023-10-26 16:20:53 +11:00
modmimxrt.c mimxrt: Add optional MSC support. 2025-02-10 12:52:45 +11:00
modmimxrt.h mimxrt: Add optional MSC support. 2025-02-10 12:52:45 +11:00
modos.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modtime.c extmod/modtime: Move tuple creation to common localtime implementation. 2025-08-15 12:09:13 +10:00
mpbthciport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mpbthciport.h mimxrt: Integrate Bluetooth support with NimBLE bindings. 2023-08-31 23:42:10 +10:00
mpconfigport.h py/mpconfig: Enable CRYPTOLIB, HASHLIB_MD5, HASHLIB_SHA1 if SSL enabled. 2025-08-19 21:10:00 +10:00
mphalport.c mimxrt/mphalport: Refactor to use shared TinyUSB CDC functions. 2024-05-31 19:47:25 +10:00
mphalport.h shared/tinyusb: Wake main task if needed at end of USB ISR. 2024-10-07 11:06:57 +11:00
mpmetalport.c mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
mpmetalport.h mimxrt/mpmetalport: Use mp_event_handle_nowait() for metal_poll. 2024-08-08 18:02:21 +10:00
mpnetworkport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mpnimbleport.c mimxrt: Integrate Bluetooth support with NimBLE bindings. 2023-08-31 23:42:10 +10:00
mpnimbleport.h mimxrt: Integrate Bluetooth support with NimBLE bindings. 2023-08-31 23:42:10 +10:00
mpremoteprocport.c mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
msc_disk.c mimxrt: Add optional MSC support. 2025-02-10 12:52:45 +11:00
network_lan.c esp32,mimxrt,stm32: Implement ipconfig() for more network interfaces. 2024-06-04 12:45:01 +10:00
pendsv.c mimxrt/irq: Move all IRQ related definitions to dedicated header. 2023-09-01 00:02:19 +10:00
pendsv.h mimxrt: Fix header include guard names. 2024-02-15 09:45:14 +11:00
pin.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 2023-11-03 14:18:54 +11:00
pin.h mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 2023-11-03 14:18:54 +11:00
qstrdefsport.h mimxrt: Add new, minimal port to NXP i.MX RT series CPUs. 2020-03-11 15:34:13 +11:00
README.md mimxrt/README: Add build and flashing instructions. 2022-11-17 14:21:59 +11:00
sdcard.c all: Upgrade codespell to v2.4.1. 2025-02-25 16:11:33 +11:00
sdcard.h mimxrt/sdcard: Implement SDCard driver. 2021-09-07 20:45:33 +02:00
sdio.c mimxrt/sdio: Add support for the 117x series. 2023-09-29 23:08:41 +10:00
sdio.h mimxrt/sdio: Add SDIO driver. 2023-08-31 23:39:34 +10:00
systick.c mimxrt/machine_timer: Use soft-timer implementation for machine.Timer. 2022-10-27 14:09:29 +11:00
systick.h mimxrt/eth: Add LAN support and integrate the network module. 2021-10-25 15:14:26 +11:00
ticks.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2022-11-17 14:11:50 +11:00
ticks.h mimxrt: Improve ticks and sleep functions using GPT. 2021-05-18 22:36:32 +10:00
usbd.c mimxrt: Switch to shared TinyUSB descriptor. 2024-12-10 10:29:21 +11:00

Port of MicroPython to NXP iMX RT 10xx

Currently supports Teensy 4.0, Teensy 4.1, and the MIMXRT1010_EVK, MIMXRT1020_EVK, MIMXRT1050_EVK, MIMXRT1060_EVK and MIMXRT1064_EVK boards.

Features:

  • REPL over USB VCP
  • machine.ADC
  • machine.I2C
  • machine.LED
  • machine.Pin
  • machine.PWM
  • machine.RTC
  • machine.SDCard
  • machine.SPI
  • machine.Signal
  • machine.SoftI2C
  • machine.SoftSPI
  • machine.Timer
  • machine.UART
  • LFS2 file system at the internal Flash
  • SDCard support (not on MIMXRT1010_EVK)
  • Ethernet (not on Teensy 4.0 and MIMXRT1010_EVK)

Known issues:

TODO:

  • More peripherals (Counter, I2S, CAN, etc)
  • More Python options

Build Instructions

Before building the firmware for a given board the MicroPython cross-compiler must be built; it will be used to pre-compile some of the built-in scripts to bytecode. The cross-compiler is built and run on the host machine, using:

$ make -C mpy-cross

This command should be executed from the root directory of this repository. All other commands below should be executed from the ports/mimxrt/ directory.

An ARM compiler is required for the build, along with the associated binary utilities. The default compiler is arm-none-eabi-gcc, which is available for Arch Linux via the package arm-none-eabi-gcc, for Ubuntu via instructions here, or see here for the main GCC ARM Embedded page. The compiler can be changed using the CROSS_COMPILE variable when invoking make.

In addition newlib is required which is available for Arch Linux via the package arm-none-eabi-newlib, for Ubuntu/Debian install package libnewlib-arm-none-eabi

Next, the board to build must be selected. Any of the board names of the subdirectories in the boards/ directory is a valid board. The board name must be passed as the argument to BOARD= when invoking make.

All boards require certain submodules to be obtained before they can be built. The correct set of submodules can be initialised using (with SEEED_ARCH_MIX as an example of the selected board):

$ make BOARD=SEEED_ARCH_MIX submodules

Then to build the board's firmware run:

$ make BOARD=SEEED_ARCH_MIX

The above command should produce binary images in the build-SEEED_ARCH_MIX/ subdirectory (or the equivalent directory for the board specified).

Flashing

Deploy the firmware following the instructions here https://docs.micropython.org/en/latest/mimxrt/tutorial/intro.html#deploying-the-firmware