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 c234a26954 mimxrt/modutime: Use extmod version of time module. 2 years ago
..
boards mimxrt/boards/MIMXRT1064_EVK: Fix board config to use internal flash. 2 years ago
hal mimxrt/Makefile: Fix internal flash configuration and build. 2 years ago
lwip_inc mimxrt: Re-Enable eth checksum creation by HW. 3 years ago
mbedtls mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
modules mimxrt/modules: Append /flash/lib to the default sys.path. 3 years ago
Makefile mimxrt/modutime: Use extmod version of time module. 2 years ago
README.md mimxrt/README: Add build and flashing instructions. 2 years ago
board_init.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years 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/mpconfigport: Allow configuring different network interfaces. 2 years 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
led.c mimxrt: Implement machine.Pin class. 4 years ago
led.h mimxrt: Implement machine.Pin class. 4 years ago
machine_adc.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_bitstream.c mimxrt: Fix cycle counter for time.ticks_cpu() and machine.bitstream(). 3 years ago
machine_i2c.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_i2s.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_led.c mimxrt: Enable ROM text compression. 2 years ago
machine_pin.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_pwm.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_rtc.c mimxrt/machine_rtc: Set the microsecond value to 0. 2 years ago
machine_sdcard.c mimxrt: Enable ROM text compression. 2 years ago
machine_spi.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_uart.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
machine_wdt.c py/obj: Convert make_new into a mp_obj_type_t slot. 2 years ago
main.c shared/runtime/pyexec: Don't allow Ctrl+C to interrupt frozen boot code. 2 years ago
mimxrt_flash.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
mimxrt_sdram.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
modmachine.c mimxrt: Fix the build for boards without ROM API. 2 years ago
modmachine.h mimxrt/machine_rtc: Start RTC at boot and set datetime if not set. 3 years 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
moduos.c mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
modutime.c mimxrt/modutime: Use extmod version of time module. 2 years ago
mpconfigport.h mimxrt/modutime: Use extmod version of time module. 2 years ago
mphalport.c ports: Implement simple write polling for stdout. 2 years ago
mphalport.h mimxrt/mphalport: Add a timeout to mp_hal_stdout_tx_strn(). 2 years ago
mpnetworkport.c mimxrt/eth: Add LAN support and integrate the network module. 3 years ago
network_lan.c mimxrt/mpconfigport: Allow configuring different network interfaces. 2 years ago
pendsv.c mimxrt/pendsv: Clean up PendSV code. 2 years ago
pendsv.h mimxrt/pendsv: Add MICROPY_BOARD_PENDSV_ENTRIES for board customisation. 2 years ago
pin.c mimxrt/machine_pin: Change pin drive constants to DRIVE_x naming. 3 years ago
pin.h mimxrt: Add support for MIMXRT1176 MCUs, and MIMXRT1170_EVK board. 2 years ago
qstrdefsport.h mimxrt: Add new, minimal port to NXP i.MX RT series CPUs. 5 years ago
sdcard.c mimxrt/sdcard: Remove obsolete code already excluded by preprocessor. 2 years ago
sdcard.h mimxrt/sdcard: Implement SDCard driver. 3 years 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