micropython/ports/mimxrt
Kwabena W. Agyeman 64ad676424 mimxrt/boards: Define missing SNVS pins for all processors.
Signed-off-by: "Kwabena W. Agyeman" <kwagyeman@live.com>
2023-10-17 22:51:42 +11:00
..
boards mimxrt/boards: Define missing SNVS pins for all processors. 2023-10-17 22:51:42 +11:00
hal mimxrt/hal: Make flash clock frequency configurable. 2023-08-15 23:45:22 +10:00
lwip_inc
mbedtls mimxrt/mbedtls: Enable certificate validity time validation. 2023-09-29 23:09:48 +10:00
modules
Makefile mimxrt/machine_rtc: Improve the RTC init at boot. 2023-10-02 11:35:00 +11:00
README.md
board_init.c mimxrt/irq: Move all IRQ related definitions to dedicated header. 2023-09-01 00:02:19 +10:00
cyw43_configport.h extmod/modnetwork: Forward if.config(hostname) to network.hostname. 2023-10-04 12:39:51 +11:00
dma_manager.c
dma_manager.h
eth.c extmod/modnetwork: Forward if.config(hostname) to network.hostname. 2023-10-04 12:39:51 +11:00
eth.h
fatfs_port.c
flash.c mimxrt/flash: Separate low level driver code from flash object. 2023-05-09 15:18:36 +10: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: Move all IRQ related definitions to dedicated header. 2023-09-01 00:02:19 +10:00
led.c mimxrt/led: Fix LED init call from main, and simplify led_init. 2023-10-09 17:10:45 +11:00
led.h mimxrt/led: Add support for up to four LEDs. 2023-05-23 10:54:23 +10:00
machine_adc.c
machine_bitstream.c
machine_i2c.c
machine_i2s.c ports: In machine_i2s.c, rename uasyncio to asyncio. 2023-06-19 18:36:54 +10:00
machine_led.c mimxrt/led: Add support for up to four LEDs. 2023-05-23 10:54:23 +10:00
machine_pin.c mimxrt: Integrate support for WiFi via the CYW43 driver. 2023-08-31 23:40:49 +10:00
machine_pwm.c mimxrt/machine_pwm: Fix freq change, PWM print, and error checks. 2023-06-01 12:25:34 +10:00
machine_rtc.c mimxrt/machine_rtc: Improve the RTC init at boot. 2023-10-02 11:35:00 +11:00
machine_sdcard.c mimxrt: Remove SDCARD Makefile config option. 2023-09-29 23:09:14 +10:00
machine_spi.c mimxrt/machine_spi: Ignore transfers with len=0. 2023-05-09 16:14:40 +10:00
machine_uart.c mimxrt/machine_uart: Set the UART clock to a fixed 40MHz value. 2023-09-29 23:43:25 +10:00
machine_wdt.c
main.c mimxrt/led: Fix LED init call from main, and simplify led_init. 2023-10-09 17:10:45 +11:00
mimxrt_flash.c mimxrt/flash: Separate low level driver code from flash object. 2023-05-09 15:18:36 +10:00
mimxrt_sdram.c mimxrt/mimxrt_sdram: Allow boards to override the default SDRAM config. 2023-09-29 23:08:48 +10:00
modmachine.c all: Use MP_REGISTER_EXTENSIBLE_MODULE for overrideable built-ins. 2023-06-08 17:54:21 +10:00
modmachine.h mimxrt/machine_uart: Add a helper function to change the baudrate. 2023-09-05 10:54:49 +10:00
modmimxrt.c
modmimxrt.h
modos.c all: Rename *umodule*.c to remove the "u" prefix. 2023-06-08 17:54:17 +10:00
modtime.c all: Rename *umodule*.c to remove the "u" prefix. 2023-06-08 17:54:17 +10:00
mpbthciport.c mimxrt/mpbthciport: Allow disabling UART flow control for BLE. 2023-10-02 11:31:24 +11:00
mpbthciport.h mimxrt: Integrate Bluetooth support with NimBLE bindings. 2023-08-31 23:42:10 +10:00
mpconfigport.h mimxrt: Remove SDCARD Makefile config option. 2023-09-29 23:09:14 +10:00
mphalport.c all: Rename mp_umodule*, mp_module_umodule* to remove the "u" prefix. 2023-06-08 17:54:04 +10:00
mphalport.h mimxrt/irq: Move all IRQ related definitions to dedicated header. 2023-09-01 00:02:19 +10:00
mpnetworkport.c mimxrt: Integrate support for WiFi via the CYW43 driver. 2023-08-31 23:40:49 +10: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
network_lan.c mimxrt/mpconfigport: Allow configuring different network interfaces. 2023-04-11 17:20:29 +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: Integrate support for WiFi via the CYW43 driver. 2023-08-31 23:40:49 +10:00
pin.c
pin.h mimxrt/machine_pin: Extend pin configuration functions. 2023-08-31 23:36:20 +10:00
qstrdefsport.h
sdcard.c mimxrt: Remove SDCARD Makefile config option. 2023-09-29 23:09:14 +10:00
sdcard.h
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
systick.h
ticks.c
ticks.h
tusb_config.h
tusb_port.c

README.md

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