You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Damien George b5449b0f09 extmod/mbedtls: Enable certificate time/date validation by default. 11 months ago
..
boards mimxrt/boards/OLIMEX_RT1010: Adjust the UART pin assignment. 1 year ago
hal mimxrt/hal: Make flash clock frequency configurable. 1 year ago
lwip_inc mimxrt: Re-Enable eth checksum creation by HW. 3 years ago
mbedtls extmod/mbedtls: Enable certificate time/date validation by default. 11 months ago
modules mimxrt/modules: Append /flash/lib to the default sys.path. 3 years ago
Makefile extmod/modmachine: Factor ports' machine module dict to common code. 11 months ago
README.md mimxrt/README: Add build and flashing instructions. 2 years ago
board_init.c mimxrt/irq: Move all IRQ related definitions to dedicated header. 1 year ago
cyw43_configport.h extmod/modnetwork: Forward if.config(hostname) to network.hostname. 1 year ago
dma_manager.c mixmrt/machine_i2s: Add I2S protocol support. 3 years ago
dma_manager.h mixmrt/machine_i2s: Add I2S protocol support. 3 years ago
eth.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 1 year ago
eth.h mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
fatfs_port.c mimxrt/sdcard: Implement SDCard driver. 3 years ago
flash.c mimxrt/flash: Separate low level driver code from flash object. 2 years ago
flash.h mimxrt/flash: Separate low level driver code from flash object. 2 years ago
help.c ports: Standardise docs link in help text. 1 year ago
irq.h mimxrt/irq: Move all IRQ related definitions to dedicated header. 1 year ago
led.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 1 year ago
led.h mimxrt/led: Add support for up to four LEDs. 1 year ago
machine_adc.c extmod/machine_adc: Factor ports' ADC Python bindings to common code. 1 year ago
machine_bitstream.c mimxrt: Fix cycle counter for time.ticks_cpu() and machine.bitstream(). 3 years ago
machine_i2c.c extmod/modmachine: Consolidate mem, i2c and spi headers to modmachine.h. 1 year ago
machine_i2s.c extmod/machine_i2s: Factor comments, some enums and macros. 1 year ago
machine_led.c mimxrt/led: Add support for up to four LEDs. 1 year ago
machine_pin.c mimxrt: Integrate support for WiFi via the CYW43 driver. 1 year ago
machine_pwm.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 1 year ago
machine_rtc.c extmod/modmachine: Clean up decls of machine types to use common ones. 1 year ago
machine_sdcard.c mimxrt: Remove SDCARD Makefile config option. 1 year ago
machine_spi.c extmod/modmachine: Consolidate mem, i2c and spi headers to modmachine.h. 1 year ago
machine_uart.c extmod/modmachine: Clean up decls of machine types to use common ones. 1 year ago
machine_wdt.c extmod/machine_wdt: Factor ports' WDT Python bindings to common code. 1 year ago
main.c mimxrt/machine_rtc: Add RTC alarm/wakeup functionality. 1 year ago
mimxrt_flash.c mimxrt/flash: Separate low level driver code from flash object. 2 years ago
mimxrt_sdram.c mimxrt/mimxrt_sdram: Allow boards to override the default SDRAM config. 1 year ago
modmachine.c extmod/modmachine: Provide common implementation of disable/enable_irq. 11 months ago
modmachine.h extmod/modmachine: Clean up decls of machine types to use common ones. 1 year ago
modmimxrt.c mimxrt/modmachine: Move dht_readinto() to the machine module. 2 years ago
modmimxrt.h mimxrt: Add flash storage support with VFS and littlefs filesystem. 3 years ago
modos.c all: Rename *umodule*.c to remove the "u" prefix. 1 year ago
modtime.c all: Rename *umodule*.c to remove the "u" prefix. 1 year ago
mpbthciport.c mimxrt/mpbthciport: Allow disabling UART flow control for BLE. 1 year ago
mpbthciport.h mimxrt: Integrate Bluetooth support with NimBLE bindings. 1 year ago
mpconfigport.h ports: Move definitions of ATOMIC_SECTION macros to mphalport.h. 11 months ago
mphalport.c all: Rename mp_umodule*, mp_module_umodule* to remove the "u" prefix. 1 year ago
mphalport.h ports: Move definitions of ATOMIC_SECTION macros to mphalport.h. 11 months ago
mpnetworkport.c mimxrt: Integrate support for WiFi via the CYW43 driver. 1 year ago
mpnimbleport.c mimxrt: Integrate Bluetooth support with NimBLE bindings. 1 year ago
mpnimbleport.h mimxrt: Integrate Bluetooth support with NimBLE bindings. 1 year ago
network_lan.c mimxrt/mpconfigport: Allow configuring different network interfaces. 2 years ago
pendsv.c mimxrt/irq: Move all IRQ related definitions to dedicated header. 1 year ago
pendsv.h mimxrt: Integrate support for WiFi via the CYW43 driver. 1 year ago
pin.c mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 1 year ago
pin.h mimxrt/boards/make-pins.py: Update to use tools/boardgen.py. 1 year ago
qstrdefsport.h mimxrt: Add new, minimal port to NXP i.MX RT series CPUs. 5 years ago
sdcard.c mimxrt: Remove SDCARD Makefile config option. 1 year ago
sdcard.h mimxrt/sdcard: Implement SDCard driver. 3 years ago
sdio.c mimxrt/sdio: Add support for the 117x series. 1 year ago
sdio.h mimxrt/sdio: Add SDIO driver. 1 year ago
systick.c mimxrt/machine_timer: Use soft-timer implementation for machine.Timer. 2 years ago
systick.h mimxrt/eth: Add LAN support and integrate the network module. 3 years ago
ticks.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
ticks.h mimxrt: Improve ticks and sleep functions using GPT. 4 years ago
tusb_config.h ports: Update to build with new tinyusb. 4 years ago
tusb_port.c mimxrt/usb: Change macro name MICROPY_HW_USB_STR_MANUF. 2 years ago

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