Documentation: added documentation for i.MX RT series and Teensy 4.x board
Signed-off-by: Michal Lenc <michallenc@seznam.cz>
This commit is contained in:
parent
9c8c2b0db2
commit
0719976722
147
Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst
Normal file
147
Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst
Normal file
@ -0,0 +1,147 @@
|
||||
==========
|
||||
Teensy-4.x
|
||||
==========
|
||||
|
||||
The `Teensy 4.0 <https://www.pjrc.com/store/teensy40.html>`_ and `Teensy 4.1 <https://www.pjrc.com/store/teensy41.html>`_
|
||||
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 <https://www.pjrc.com/teensy/loader_cli.html>`_ 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``.
|
191
Documentation/platforms/arm/imxrt/index.rst
Normal file
191
Documentation/platforms/arm/imxrt/index.rst
Normal file
@ -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/*/*
|
@ -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:<subdir>
|
||||
|
||||
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 <subdir> 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.
|
Loading…
Reference in New Issue
Block a user