diff --git a/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst b/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst new file mode 100644 index 00000000000..5745d304837 --- /dev/null +++ b/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst @@ -0,0 +1,147 @@ +========== +Teensy-4.x +========== + +The `Teensy 4.0 `_ and `Teensy 4.1 `_ +are development boards from PJRC. Both boards use i.MX RT1060 MCU, feature several I/Os pins and on-board LED. + +Features +======== + +- Processor + - MIMXRT1062DVL6A processor +- Memory + - 1 MB RAM memory + - 2 MB Flash (Teensy 4.0) + - 8 MB Flash (Teensy 4.1) + - 1 SDIO (4 bit) native SD +- Connectivity + - Micro USB host + - CAN transceivers + - UART, SPI, I2C + - PWM output pins + - 10/100 Mb Ethernet (Teensy 4.1 only) + - Digital audio in/out + +LEDs +==== + +There are two LED status indicators located on the Teensy-4.x board. +The functions of these LEDs include: + +- RED LED (loading status) + - dim: ready + - bright: writing + - blink: no USB +- USER LED (D3) + +Only a single LED, D3, is under software control. + +This LED is not used by the board port unless CONFIG_ARCH_LEDS is +defined. In that case, the usage by the board port is defined in +include/board.h and src/imxrt_autoleds.c. The LED is used to encode +OS-related events as follows: + +================ ======================= ===== +SYMBOL Meaning LED +================ ======================= ===== +LED_STARTED NuttX has been started OFF +LED_HEAPALLOCATE Heap has been allocated OFF +LED_IRQSENABLED Interrupts enabled OFF +LED_STACKCREATED Idle stack created ON +LED_INIRQ In an interrupt N/C +LED_SIGNAL In a signal handler N/C +LED_ASSERTION An assertion failed N/C +LED_PANIC The system has crashed FLASH +================ ======================= ===== + +Thus if the LED is statically on, NuttX has successfully booted and is, +apparently, running normally. If the LED is flashing at approximately +2Hz, then a fatal error has been detected and the system has halted. + +Configurations +============== + +nsh-4.0 +------- + +Configures the NuttShell (nsh) located at examples/nsh for Teensy 4.0. +This NSH configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. NutShells then +runs on USB console. + +nsh-4.1 +------- + +Configures the NuttShell (nsh) located at examples/nsh for Teensy 4.1. +This NSH configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. NutShells then +runs USB console. + +can-4.1 +------- + +This is an nsh configuration (see above) for Teensy-4.x with added support of +CAN driver. All FlexCANs (CAN1, CAN2, CAN3) are chosen as default. FlexCAN3 +is FD capable. Please note that device driver name if counted from zero. +That means for CAN1 -> can0, CAN2 -> can1 and CAN3 -> can2 + +Bitrate and sample point can be also changed at System type peripheral selection, +basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver +for imxrt runs at 80 MHz clock frequency. + +The configuration also includes CAN utilities as candump and cansend. + +This configuration can be easily changed to work with Teensy 4.0 by +selecting ``CONFIG_TEENSY_40=y``. + +This configuration runs over LPUART1 (pins 24 and 25 on Teensy). Communication +over USB console can be turn on, but it couses problems with FlexCAN. + +netnsh-4.1 +---------- + +This configuration is similar to the nsh configuration except that is +has networking enabled, both IPv4 and IPv6. This NSH configuration is +focused on network-related testing. + +This configuration cannot be changed to Teensy 4.0 as this board does +not have Ethernet capability. + +sd-4.1 +------ + +This is an nsh configuration (see above) for Teensy-4.x with added support of +connecting micro SD card. + +You can mount micro SD card by: + +.. code-block:: console + + $ mount -t vfat /dev/mmcsd0 /mnt + +This configuration cannot be changed to Teensy 4.0 as this board does +not have micro SD card slot. + +lcd-4.1 +------- + +This is an nsh configuration (see above) for Teensy-4.x with added support of +connecting LCD TFT display with ST7789 controller. You can run framebuffer demo +by starting "fb" in console. The LCD display is connected via SPI4. + +This configuration can be easily changed to work with Teensy 4.0 by +selecting ``CONFIG_TEENSY_40=y``. + + +Flash +===== + +Teensy 4.x boards does not have debugger therefore external firmware has to be used to load NuttX. +`Teensy Loader `_ can be installed and then NuttX can be loaded by: + +.. code-block:: console + + $ teensy_loader_cli --mcu=TEENSY41 -v -w nuttx.hex + +For Teensy 4.0 board, switch ``--mcu=TEENSY41`` to ``--mcu=TEENSY40``. diff --git a/Documentation/platforms/arm/imxrt/index.rst b/Documentation/platforms/arm/imxrt/index.rst new file mode 100644 index 00000000000..ab39387dcd8 --- /dev/null +++ b/Documentation/platforms/arm/imxrt/index.rst @@ -0,0 +1,191 @@ +======= +i.MX RT +======= + +The i.MX RT series of chips from NXP Semiconductors is based around an ARM Cortex-M7 core running +at 500 MHz, 600 MHz or 1 GHz based on particular MCUs + +Suported MCUs +============= + +The following list includes MCUs from i.MX RT series and indicates whether they are supported in NuttX + +====== ======= ============== ================= +MCU Support Core Frequency +====== ======= ============== ================= +RT500 No Cortex-M33 200 MHz +RT600 No Cortex-M33 300 MHz +RT1010 No Cortex-M7 500 MHz +RT1015 No Cortex-M7 500 MHz +RT1020 Yes Cortex-M7 500 MHz +RT1024 No Cortex-M7 500 MHz +RT1050 Yes Cortex-M7 600 MHz +RT1060 Yes Cortex-M7 600 MHz +RT1064 Yes Cortex-M7 600 MHz +RT1170 No Cortex-M7 + M4 1 GHz + 400 MHz +====== ======= ============== ================= + +Data and Instruction Cache +========================== + +MCUs i.MX RT1010 and higher have separated caches for instructions and data. Data cache is initially +set as write-through but can be changed to write-back via Kconfig. While write-back gives better +performance than write-through, it is not supported for all peripherals in NuttX yet. Write-back data +cache can not be selected while running Ethernet or serial port over USB. + +Peripheral Support +================== + +The following list indicates peripherals supported in NuttX: + +========== ======= +Peripheral Support +========== ======= +ACMP No +ADC Yes +CAN Yes +CSI No +DAC No +eLCDIF Yes +ENC Yes +ENET Yes +FlexIO No +GPIO Yes +I2S Yes +PWM No +SAI No +SPDIF No +SPI Yes +UART Yes +USB Yes +========== ======= + +ACMP +---- + +The circout for comparing two analog input voltages designed to operate across the full +range of supply voltage (rail-to-rail operation). + +ADC +--- + +ADC driver with the successive approximation analog/digital convertor. The lower-half of +this driver is initialize by calling :c:func:`imxrt_adcinitialize`. + +CAN +--- + +FlexCAN driver is supported in MCUs i.MX RT1020 and higher. i.MX RT106x have both classical +CAN and also one CAN FD while i.MX RT1170 have 3 CAN FD peripherals. FlexCAN driver in imxrt +works beyond SocketCAN driver layout. The lower-half of this driver is initialize by +calling :c:func:`imxrt_cannitialize()`. + +There is an booting option that automatically provides initialization of network interface +in the early stages of booting and therefore calling :c:func:`imxrt_cannitialize()` via +board specific logic is not neccessary. This however works only when there is only one +interface in the chip. For running more interfaces (like CAN and Ethernet), network late +initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call +lower-half part of drivers. + +CSI +--- + +CMOS Sensor interface which enables the chip to connect directly to external CMOS image sensors. + +DAC +--- + +Digital/analog convertor for external signal is only supported in i.MX RT1170 MCU. It is 12 bit +lower power, general purpose DAC. + +eLCDIF +------ + +The enhanced Liquid Crystal Display interface (LCDIF) is a general purpose display controller. + +ENC +--- + +The enhanced quadrature encoder/decoder module supported in i.MX RT1015 and higher. The lower-half +of this driver is initialize by calling :c:func:`imxrt_qeinitialize`. + +ENET +---- + +Ethernet driver supported in i.MX RT1020 and higher. The lower-half of this driver is initialize +by calling :c:func:`imxrt_netnitialize`. + +There is an booting option that automatically provides initialization of network interface +in the early stages of booting and therefore calling :c:func:`imxrt_cannitialize()` via +board specific logic is not neccessary. This however works only when there is only one +interface in the chip. For running more interfaces (like CAN and Ethernet), network late +initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call +lower-half part of drivers. + +FlexIO +------ + +A configurable module providing a range of functionality like emulation of a variety of +serial/parallel communication protocols, flexible 16-bit timers or programmable logic blocks. +This module is supported in i.MX RT1010 and higher. + +GPIO +---- + +Pins can be configured using :c:func:`imxrt_config_gpio` function. Writing to pins is +done by :c:func:`imxrt_gpio_write` function and reading is done by :c:func:`imxrt_gpio_read`. + +MCUs i.MX RT1060 and higher includes both standard speed GPIOs (1-5) and high speed +GPIOS (6-9). Regular and high speed GPIO share the same pins (GPIO1 is with GPIO6 etc), +therefore IOMUXC_GPR_GPR26-29 registers are used to determine what modue is used for the +GPIO pins. + + +I2C +--- + +Inter-Integrated Circout module supporting an interface to an I2C bus as master and/or +as a slave. The lower-half of this driver is initialize by calling :c:func:`imxrt_i2cbus_initialize`. + +PWM +--- + +Pulse width modulator supported in i.MX RT1010 and higher. + +SAI +--- + +Synchronous audio interface provided by I2C module. Supported in i.MX RT1015 and higher. + +SPDIF +----- + +Sony/Philips digital interface audio block. It is a stereo transciever that allows the +processor to receive and transmit digital audio. Supported in i.MX RT1010 and higher. + +SPI +--- + +Serial Peripheral interface module that supports an interface to an SPI bus as a master +and/or a slave. The lower-half of this driver is initialize by calling :c:func:`imxrt_lpsibus_initialize`. + +UART +---- + +Universal Asynchronous Receiver/Transmitter module. UART is initialized automatically during +MCU boot. + +USB +--- + +Console communication over USB is supported via CDC-ACM. Only USB Device is currently supported +for i.MX RT in NuttX + +Supported Boards +================ + +.. toctree:: + :glob: + :maxdepth: 1 + + boards/*/* diff --git a/boards/arm/imxrt/teensy-4.x/README.txt b/boards/arm/imxrt/teensy-4.x/README.txt deleted file mode 100644 index b6e9374ddd3..00000000000 --- a/boards/arm/imxrt/teensy-4.x/README.txt +++ /dev/null @@ -1,183 +0,0 @@ -README -====== - - This README file provides information about the port of NuttX to the Teensy 4.x board. This board features the - MIMXRT1062DVL6A MCU. Some of the features of this board include: - - o Processor - - - MIMXRT1062DVL6A processor - - o Memory - - - 1 Mb RAM memory - - 2 Mb QSPI Flash - - 1 SDIO (4 bit) native SD - - o Connectivity - - - Micro USB host - - CAN transceivers - - 41 digital pins - - 14 analog pins, 2 ADCs on chip - -Contents -======== - - o LEDs - o Configurations - - Configuration sub-directories - -LEDs and buttons -================ - - LEDs - ---- - - There are two LED status indicators located on the Teensy-4.x board. - The functions of these LEDs include: - - - RED LED (loading status) - - dim: ready - - bright: writing - - blink: no USB - - USER LED (D3) - - Only a single LED, D3, is under software control. - - This LED is not used by the board port unless CONFIG_ARCH_LEDS is - defined. In that case, the usage by the board port is defined in - include/board.h and src/imxrt_autoleds.c. The LED is used to encode - OS-related events as follows: - - ------------------- ----------------------- ------ - SYMBOL Meaning LED - ------------------- ----------------------- ------ - LED_STARTED NuttX has been started OFF - LED_HEAPALLOCATE Heap has been allocated OFF - LED_IRQSENABLED Interrupts enabled OFF - LED_STACKCREATED Idle stack created ON - LED_INIRQ In an interrupt N/C - LED_SIGNAL In a signal handler N/C - LED_ASSERTION An assertion failed N/C - LED_PANIC The system has crashed FLASH - - Thus if the LED is statically on, NuttX has successfully booted and is, - apparently, running normally. If the LED is flashing at approximately - 2Hz, then a fatal error has been detected and the system has halted. - -Configurations -============== - - Information Common to All Configurations - ---------------------------------------- - Each Teensy-4.x configuration is maintained in a sub-directory and - can be selected as follow: - - tools/configure.sh [OPTIONS] teensy-4.x: - - Where typical options are -l to configure to build on Linux or -c to - configure for Cygwin under Linux. 'tools/configure.sh -h' will show - you all of the options. - - Before building, make sure the PATH environment variable include the - correct path to the directory than holds your toolchain binaries. - - And then build NuttX by simply typing the following. At the conclusion of - the make, the nuttx binary will reside in an ELF file called, simply, nuttx. - - make - - The that is provided above as an argument to the tools/configure.sh - must be is one of the following. - - NOTES: - - 1. These configurations use the mconf-based configuration tool. To - change any of these configurations using that tool, you should: - - a. Build and install the kconfig-mconf tool. See nuttx/README.txt - see additional README.txt files in the NuttX tools repository. - - b. Execute 'make menuconfig' in nuttx/ in order to start the - reconfiguration process. - - 2. All of these configurations are set up to build under Windows using the - "GNU Tools for ARM Embedded Processors" that is maintained by ARM - (unless stated otherwise in the description of the configuration). - - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm - - That toolchain selection can easily be reconfigured using - 'make menuconfig'. Here are the relevant current settings: - - Build Setup: - CONFIG_HOST_WINDOWS=y : Window environment - CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows - - System Type -> Toolchain: - CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain - -Configuration sub-directories ------------------------------ - - nsh-4.0: - - Configures the NuttShell (nsh) located at examples/nsh for Teensy 4.0. - This NSH configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. NutShells then - runs on USB console. - - nsh-4.1: - - Configures the NuttShell (nsh) located at examples/nsh for Teensy 4.1. - This NSH configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. NutShells then - runs USB console. - - can-4.1: - - This is an nsh configuration (see above) for Teensy-4.x with added support of - CAN driver. All FlexCANs (CAN1, CAN2, CAN3) are chosen as default. FlexCAN3 - is FD capable. Please note that device driver name if counted from zero. - That means for CAN1 -> can0, CAN2 -> can1 and CAN3 -> can2 - - Bitrate and sample point can be also changed at System type peripheral selection, - basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver - for imxrt runs at 80 MHz clock frequency. - - The configuration also includes CAN utilities as candump and cansend. - - This configuration can be easily changed to work with Teensy 4.0 by - selecting CONFIG_TEENSY_40=y. - - This configuration runs over LPUART1 (pins 24 and 25 on Teensy). Communication - over USB console can be turn on, but it couses problems with FlexCAN. - - netnsh-4.1: - - This configuration is similar to the nsh configuration except that is - has networking enabled, both IPv4 and IPv6. This NSH configuration is - focused on network-related testing. - - This configuration cannot be changed to Teensy 4.0 as this board does - not have Ethernet capability. - - sd-4.1 - - This is an nsh configuration (see above) for Teensy-4.x with added support of - connecting micro SD card. - - You can mount micro SD card by "mount -t vfat /dev/mmcsd0 /mnt" - - This configuration cannot be changed to Teensy 4.0 as this board does - not have micro SD card slot. - - lcd-4.1 - - This is an nsh configuration (see above) for Teensy-4.x with added support of - connecting LCD TFT display with ST7789 controller. You can run framebuffer demo - by starting "fb" in console. The LCD display is connected via SPI4. - - This configuration can be easily changed to work with Teensy 4.0 by - selecting CONFIG_TEENSY_40=y.