micropython/ports/mimxrt
iabdalkader 87d821ab49 mimxrt: Add support for OpenAMP.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2024-03-29 17:59:29 +11:00
..
boards mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
hal
lwip_inc
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
Makefile mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
README.md
board_init.c
cyw43_configport.h mimxrt: Fix header include guard names. 2024-02-15 09:45:14 +11: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
eth.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
eth.h
fatfs_port.c
flash.c
flash.h
help.c
irq.h
led.c
led.h
machine_adc.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_bitstream.c
machine_i2c.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_i2s.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11: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 all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_pwm.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_rtc.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11: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 all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
machine_uart.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11: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,stm32: Set the security mode for the default WiFi AP. 2024-03-28 12:51:50 +11: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
modmachine.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modmachine.h
modmimxrt.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modmimxrt.h
modos.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
modtime.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mpbthciport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mpbthciport.h
mpconfigport.h mimxrt: Define the MICROPY_HW_ENABLE_USBDEV macro. 2024-03-15 13:37:42 +11:00
mphalport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mphalport.h ports: Move MICROPY_PY_LWIP_ENTER/REENTER/EXIT defns to mphalport.h. 2024-01-05 15:40:06 +11:00
mpmetalport.c mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
mpmetalport.h mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
mpnetworkport.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
mpnimbleport.c
mpnimbleport.h
mpremoteprocport.c mimxrt: Add support for OpenAMP. 2024-03-29 17:59:29 +11:00
network_lan.c all: Remove the "STATIC" macro and just use "static" instead. 2024-03-07 14:20:42 +11:00
pendsv.c
pendsv.h mimxrt: Fix header include guard names. 2024-02-15 09:45:14 +11:00
pin.c
pin.h
qstrdefsport.h
sdcard.c
sdcard.h
sdio.c
sdio.h
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