tree: d193a486ad1ba7073deed5ee297d643cd6bb7530 [path history] [tgz]
  1. boards/
  2. hal/
  3. lwip_inc/
  4. mbedtls/
  5. modules/
  6. board_init.c
  7. cyw43_configport.h
  8. dma_manager.c
  9. dma_manager.h
  10. eth.c
  11. eth.h
  12. fatfs_port.c
  13. flash.c
  14. flash.h
  15. help.c
  16. irq.h
  17. led.c
  18. led.h
  19. machine_adc.c
  20. machine_bitstream.c
  21. machine_i2c.c
  22. machine_i2c.h
  23. machine_i2c_target.c
  24. machine_i2s.c
  25. machine_led.c
  26. machine_pin.c
  27. machine_pwm.c
  28. machine_rtc.c
  29. machine_sdcard.c
  30. machine_spi.c
  31. machine_uart.c
  32. machine_wdt.c
  33. main.c
  34. Makefile
  35. mimxrt_flash.c
  36. mimxrt_sdram.c
  37. modmachine.c
  38. modmachine.h
  39. modmimxrt.c
  40. modmimxrt.h
  41. modos.c
  42. modtime.c
  43. mpbthciport.c
  44. mpbthciport.h
  45. mpconfigport.h
  46. mphalport.c
  47. mphalport.h
  48. mpmetalport.c
  49. mpmetalport.h
  50. mpnetworkport.c
  51. mpnimbleport.c
  52. mpnimbleport.h
  53. mpremoteprocport.c
  54. msc_disk.c
  55. network_lan.c
  56. pendsv.c
  57. pendsv.h
  58. pin.c
  59. pin.h
  60. qstrdefsport.h
  61. README.md
  62. sdcard.c
  63. sdcard.h
  64. sdio.c
  65. sdio.h
  66. systick.c
  67. systick.h
  68. ticks.c
  69. ticks.h
  70. usbd.c
ports/mimxrt/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