1.. _mimxrt1050_evk:
2
3NXP MIMXRT1050-EVK
4##################
5
6Overview
7********
8
9The i.MX RT1050 is a new processor family featuring NXP's advanced
10implementation of the ARM Cortex-M7 Core. It provides high CPU performance and
11real-time response.
12
13The i.MX RT1050 provides various memory interfaces, including SDRAM, Raw NAND
14FLASH, NOR FLASH, SD/eMMC, Quad SPI, HyperBus and a wide range of other
15interfaces for connecting peripherals, such as WLAN, Bluetooth™, GPS, displays,
16and camera sensors. As with other i.MX processors, i.MX RT1050 also has rich
17audio and video features, including LCD display, basic 2D graphics, camera
18interface, SPDIF, and I2S audio interface.
19
20.. image:: mimxrt1050_evk.jpg
21   :align: center
22   :alt: MIMXRT1050-EVK
23
24Hardware
25********
26
27- MIMXRT1052DVL6A MCU (600 MHz, 512 KB TCM)
28
29- Memory
30
31  - 256 KB SDRAM
32  - 64 Mbit QSPI Flash
33  - 512 Mbit Hyper Flash
34
35- Display
36
37  - LCD connector
38  - Touch connector
39
40- Ethernet
41
42  - 10/100 Mbit/s Ethernet PHY
43
44- USB
45
46  - USB 2.0 OTG connector
47  - USB 2.0 host connector
48
49- Audio
50
51  - 3.5 mm audio stereo headphone jack
52  - Board-mounted microphone
53  - Left and right speaker out connectors
54
55- Power
56
57  - 5 V DC jack
58
59- Debug
60
61  - JTAG 20-pin connector
62  - OpenSDA with DAPLink
63
64- Sensor
65
66  - FXOS8700CQ 6-axis e-compass
67  - CMOS camera sensor interface
68
69- Expansion port
70
71  - Arduino interface
72
73- CAN bus connector
74
75For more information about the MIMXRT1050 SoC and MIMXRT1050-EVK board, see
76these references:
77
78- `i.MX RT1050 Website`_
79- `i.MX RT1050 Datasheet`_
80- `i.MX RT1050 Reference Manual`_
81- `MIMXRT1050-EVK Website`_
82- `MIMXRT1050-EVK User Guide`_
83- `MIMXRT1050-EVK Schematics`_
84
85External Memory
86===============
87
88This platform has the following external memories:
89
90+--------------------+------------+-------------------------------------+
91| Device             | Controller | Status                              |
92+====================+============+=====================================+
93| IS42S16160J        | SEMC       | Enabled via device configuration    |
94|                    |            | data block, which sets up SEMC at   |
95|                    |            | boot time                           |
96+--------------------+------------+-------------------------------------+
97| S26KS512SDPBHI020  | FLEXSPI    | Enabled via flash configurationn    |
98|                    |            | block, which sets up FLEXSPI at     |
99|                    |            | boot time.                          |
100+--------------------+------------+-------------------------------------+
101
102Supported Features
103==================
104
105The mimxrt1050_evk board configuration supports the hardware features listed
106below.  For additional features not yet supported, please also refer to the
107:ref:`mimxrt1064_evk` , which is the superset board in NXP's i.MX RT10xx family.
108NXP prioritizes enabling the superset board with NXP's Full Platform Support for
109Zephyr.  Therefore, the mimxrt1064_evk board may have additional features
110already supported, which can also be re-used on this mimxrt1050_evk board:
111
112+-----------+------------+-------------------------------------+
113| Interface | Controller | Driver/Component                    |
114+===========+============+=====================================+
115| NVIC      | on-chip    | nested vector interrupt controller  |
116+-----------+------------+-------------------------------------+
117| SYSTICK   | on-chip    | systick                             |
118+-----------+------------+-------------------------------------+
119| DISPLAY   | on-chip    | eLCDIF. Tested with                 |
120|           |            | :ref:`rk043fn02h_ct`, and           |
121|           |            | :ref:`rk043fn66hs_ctg` shields      |
122+-----------+------------+-------------------------------------+
123| GPIO      | on-chip    | gpio                                |
124+-----------+------------+-------------------------------------+
125| I2C       | on-chip    | i2c                                 |
126+-----------+------------+-------------------------------------+
127| SDHC      | on-chip    | disk access                         |
128+-----------+------------+-------------------------------------+
129| SPI       | on-chip    | spi                                 |
130+-----------+------------+-------------------------------------+
131| UART      | on-chip    | serial port-polling;                |
132|           |            | serial port-interrupt               |
133+-----------+------------+-------------------------------------+
134| ENET      | on-chip    | ethernet                            |
135+-----------+------------+-------------------------------------+
136| USB       | on-chip    | USB device                          |
137+-----------+------------+-------------------------------------+
138| ADC       | on-chip    | adc                                 |
139+-----------+------------+-------------------------------------+
140| GPT       | on-chip    | gpt                                 |
141+-----------+------------+-------------------------------------+
142| TRNG      | on-chip    | entropy                             |
143+-----------+------------+-------------------------------------+
144| FLEXSPI   | on-chip    | flash programming                   |
145+-----------+------------+-------------------------------------+
146
147The default configuration can be found in
148:zephyr_file:`boards/nxp/mimxrt1050_evk/mimxrt1050_evk_defconfig`
149
150Other hardware features are not currently supported by the port.
151
152Connections and IOs
153===================
154
155The MIMXRT1050 SoC has five pairs of pinmux/gpio controllers.
156
157+---------------+-----------------+---------------------------+
158| Name          | Function        | Usage                     |
159+===============+=================+===========================+
160| GPIO_AD_B0_00 | LPSPI1_SCK      | SPI                       |
161+---------------+-----------------+---------------------------+
162| GPIO_AD_B0_01 | LPSPI1_SDO      | SPI                       |
163+---------------+-----------------+---------------------------+
164| GPIO_AD_B0_02 | LPSPI3_SDI/LCD_RST| SPI/LCD Display         |
165+---------------+-----------------+---------------------------+
166| GPIO_AD_B0_03 | LPSPI3_PCS0     | SPI                       |
167+---------------+-----------------+---------------------------+
168| GPIO_AD_B0_05 | GPIO            | SD Card                   |
169+---------------+-----------------+---------------------------+
170| GPIO_AD_B0_09 | GPIO/ENET_RST   | LED                       |
171+---------------+-----------------+---------------------------+
172| GPIO_AD_B0_10 | GPIO/ENET_INT   | GPIO/Ethernet             |
173+---------------+-----------------+---------------------------+
174| GPIO_AD_B0_11 | GPIO            | Touch Interrupt           |
175+---------------+-----------------+---------------------------+
176| GPIO_AD_B0_12 | LPUART1_TX      | UART Console              |
177+---------------+-----------------+---------------------------+
178| GPIO_AD_B0_13 | LPUART1_RX      | UART Console              |
179+---------------+-----------------+---------------------------+
180| GPIO_AD_B1_00 | LPI2C1_SCL      | I2C                       |
181+---------------+-----------------+---------------------------+
182| GPIO_AD_B1_01 | LPI2C1_SDA      | I2C                       |
183+---------------+-----------------+---------------------------+
184| GPIO_AD_B1_06 | LPUART3_TX      | UART BT HCI               |
185+---------------+-----------------+---------------------------+
186| GPIO_AD_B1_07 | LPUART3_RX      | UART BT HCI               |
187+---------------+-----------------+---------------------------+
188| GPIO_AD_B1_11 | ADC             | ADC1 channel 0            |
189+---------------+-----------------+---------------------------+
190| WAKEUP        | GPIO            | SW0                       |
191+---------------+-----------------+---------------------------+
192| GPIO_B0_00    | LCD_CLK         | LCD Display               |
193+---------------+-----------------+---------------------------+
194| GPIO_B0_01    | LCD_ENABLE      | LCD Display               |
195+---------------+-----------------+---------------------------+
196| GPIO_B0_02    | LCD_HSYNC       | LCD Display               |
197+---------------+-----------------+---------------------------+
198| GPIO_B0_03    | LCD_VSYNC       | LCD Display               |
199+---------------+-----------------+---------------------------+
200| GPIO_B0_04    | LCD_DATA00      | LCD Display               |
201+---------------+-----------------+---------------------------+
202| GPIO_B0_05    | LCD_DATA01      | LCD Display               |
203+---------------+-----------------+---------------------------+
204| GPIO_B0_06    | LCD_DATA02      | LCD Display               |
205+---------------+-----------------+---------------------------+
206| GPIO_B0_07    | LCD_DATA03      | LCD Display               |
207+---------------+-----------------+---------------------------+
208| GPIO_B0_08    | LCD_DATA04      | LCD Display               |
209+---------------+-----------------+---------------------------+
210| GPIO_B0_09    | LCD_DATA05      | LCD Display               |
211+---------------+-----------------+---------------------------+
212| GPIO_B0_10    | LCD_DATA06      | LCD Display               |
213+---------------+-----------------+---------------------------+
214| GPIO_B0_11    | LCD_DATA07      | LCD Display               |
215+---------------+-----------------+---------------------------+
216| GPIO_B0_12    | LCD_DATA08      | LCD Display               |
217+---------------+-----------------+---------------------------+
218| GPIO_B0_13    | LCD_DATA09      | LCD Display               |
219+---------------+-----------------+---------------------------+
220| GPIO_B0_14    | LCD_DATA10      | LCD Display               |
221+---------------+-----------------+---------------------------+
222| GPIO_B0_15    | LCD_DATA11      | LCD Display               |
223+---------------+-----------------+---------------------------+
224| GPIO_B1_00    | LCD_DATA12      | LCD Display               |
225+---------------+-----------------+---------------------------+
226| GPIO_B1_01    | LCD_DATA13      | LCD Display               |
227+---------------+-----------------+---------------------------+
228| GPIO_B1_02    | LCD_DATA14      | LCD Display               |
229+---------------+-----------------+---------------------------+
230| GPIO_B1_03    | LCD_DATA15      | LCD Display               |
231+---------------+-----------------+---------------------------+
232| GPIO_B1_04    | ENET_RX_DATA00  | Ethernet                  |
233+---------------+-----------------+---------------------------+
234| GPIO_B1_05    | ENET_RX_DATA01  | Ethernet                  |
235+---------------+-----------------+---------------------------+
236| GPIO_B1_06    | ENET_RX_EN      | Ethernet                  |
237+---------------+-----------------+---------------------------+
238| GPIO_B1_07    | ENET_TX_DATA00  | Ethernet                  |
239+---------------+-----------------+---------------------------+
240| GPIO_B1_08    | ENET_TX_DATA01  | Ethernet                  |
241+---------------+-----------------+---------------------------+
242| GPIO_B1_09    | ENET_TX_EN      | Ethernet                  |
243+---------------+-----------------+---------------------------+
244| GPIO_B1_10    | ENET_REF_CLK    | Ethernet                  |
245+---------------+-----------------+---------------------------+
246| GPIO_B1_11    | ENET_RX_ER      | Ethernet                  |
247+---------------+-----------------+---------------------------+
248| GPIO_B1_12    | GPIO            | SD Card                   |
249+---------------+-----------------+---------------------------+
250| GPIO_B1_14    | USDHC1_VSELECT  | SD Card                   |
251+---------------+-----------------+---------------------------+
252| GPIO_B1_15    | BACKLIGHT_CTL   | LCD Display               |
253+---------------+-----------------+---------------------------+
254| GPIO_EMC_40   | ENET_MDC        | Ethernet                  |
255+---------------+-----------------+---------------------------+
256| GPIO_EMC_41   | ENET_MDIO       | Ethernet                  |
257+---------------+-----------------+---------------------------+
258| GPIO_AD_B0_09 | ENET_RST        | Ethernet                  |
259+---------------+-----------------+---------------------------+
260| GPIO_AD_B0_10 | ENET_INT        | Ethernet                  |
261+---------------+-----------------+---------------------------+
262| GPIO_SD_B0_00 | USDHC1_CMD/LPSPI1_SCK | SD Card/SPI         |
263+---------------+-----------------+---------------------------+
264| GPIO_SD_B0_01 | USDHC1_CLK/LPSPI1_PCS0 | SD Card/SPI        |
265+---------------+-----------------+---------------------------+
266| GPIO_SD_B0_02 | USDHC1_DATA0/LPSPI1_SDO | SD Card/SPI       |
267+---------------+-----------------+---------------------------+
268| GPIO_SD_B0_03 | USDHC1_DATA1/LPSPI1_SDI | SD Card/SPI       |
269+---------------+-----------------+---------------------------+
270| GPIO_SD_B0_04 | USDHC1_DATA2    | SD Card                   |
271+---------------+-----------------+---------------------------+
272| GPIO_SD_B0_05 | USDHC1_DATA3    | SD Card                   |
273+---------------+-----------------+---------------------------+
274| GPIO_AD_B1_02 | 1588_EVENT2_OUT | 1588                      |
275+---------------+-----------------+---------------------------+
276| GPIO_AD_B1_03 | 1588_EVENT2_IN  | 1588                      |
277+---------------+-----------------+---------------------------+
278
279.. note::
280        In order to use the SPI peripheral on this board, resistors R278,
281        R279, R280, and R281 must be populated with zero ohm resistors
282
283System Clock
284============
285
286The MIMXRT1050 SoC is configured to use SysTick as the system clock source,
287running at 600MHz.
288
289When power management is enabled, the 32 KHz low frequency
290oscillator on the board will be used as a source for the GPT timer to
291generate a system clock. This clock enables lower power states, at the
292cost of reduced resolution
293
294Serial Port
295===========
296
297The MIMXRT1050 SoC has eight UARTs. ``LPUART1`` is configured for the console,
298``LPUART3`` for the Bluetooth Host Controller Interface (BT HCI), and the
299remaining are not used.
300
301USB
302===
303
304The RT1050 SoC has two USB OTG (USBOTG) controllers that supports both
305device and host functions through its micro USB connectors.
306Only USB device function is supported in Zephyr at the moment.
307
308Programming and Debugging
309*************************
310
311.. note::
312   Newer revisions of this board use :ref:`lpc-link2-onboard-debug-probe`,
313   while older revisions use the :ref:`opensda-onboard-debug-probe`.
314   Schematic revisions A/A1 use the K20 OpenSDA probe, and B/B1 use the
315   LPC-Link2 LPC4322 probe.
316
317This board supports 3 debug host tools. Please install your preferred host
318tool, then follow the instructions in `Configuring a Debug Probe
319(Schematic A/A1)`_ or `Configuring a Debug Probe (Schematic B/B1)`_,
320depending on board schematic revision to configure the board appropriately.
321
322* :ref:`linkserver-debug-host-tools` (Default, NXP Supported)
323* :ref:`jlink-debug-host-tools` (NXP Supported)
324* :ref:`pyocd-debug-host-tools` (Not supported by NXP)
325
326Once the host tool and board are configured, build and flash applications
327as usual (see :ref:`build_an_application` and :ref:`application_run` for more
328details).
329
330Configuring a Debug Probe (Schematic A/A1)
331==========================================
332
333For the RT1050 Schematic Rev A, J32/J33 are the SWD isolation jumpers, SW4 is
334the reset button, and J21 is the 20 pin JTAG/SWD header.
335
336.. include:: ../../common/opensda-debug.rst
337   :start-after: nxp-opensda-probes
338
339
340Configuring a Debug Probe (Schematic B/B1)
341==========================================
342
343For the RT1050 Schematic Rev B, J47/J48 are the SWD isolation jumpers, J42 is
344the DFU mode jumper, and J21 is the 20 pin JTAG/SWD header.
345
346.. include:: ../../common/rt1xxx-lpclink2-debug.rst
347   :start-after: rt1xxx-lpclink2-probes
348
349Configuring a Console
350=====================
351
352Regardless of your choice in debug probe, we will use the OpenSDA
353microcontroller as a usb-to-serial adapter for the serial console. Check that
354jumpers J30 and J31 are **on** (they are on by default when boards ship from
355the factory) to connect UART signals to the OpenSDA microcontroller.
356
357Connect a USB cable from your PC to J28.
358
359Use the following settings with your serial terminal of choice (minicom, putty,
360etc.):
361
362- Speed: 115200
363- Data: 8 bits
364- Parity: None
365- Stop bits: 1
366
367Flashing
368========
369
370Here is an example for the :ref:`hello_world` application.
371
372.. zephyr-app-commands::
373   :zephyr-app: samples/hello_world
374   :board: mimxrt1050_evk
375   :goals: flash
376
377Open a serial terminal, reset the board (press the SW4 button), and you should
378see the following message in the terminal:
379
380.. code-block:: console
381
382   ***** Booting Zephyr OS v1.14.0-rc1 *****
383   Hello World! mimxrt1050_evk
384
385Debugging
386=========
387
388Here is an example for the :ref:`hello_world` application.
389
390.. zephyr-app-commands::
391   :zephyr-app: samples/hello_world
392   :board: mimxrt1050_evk
393   :goals: debug
394
395Open a serial terminal, step through the application in your debugger, and you
396should see the following message in the terminal:
397
398.. code-block:: console
399
400   ***** Booting Zephyr OS v1.14.0-rc1 *****
401   Hello World! mimxrt1050_evk
402
403Troubleshooting
404===============
405
406If the debug probe fails to connect with the following error, it's possible
407that the boot header in HyperFlash is invalid or corrupted. The boot header is
408configured by :kconfig:option:`CONFIG_NXP_IMXRT_BOOT_HEADER`.
409
410.. code-block:: console
411
412   Remote debugging using :2331
413   Remote communication error.  Target disconnected.: Connection reset by peer.
414   "monitor" command not supported by this target.
415   "monitor" command not supported by this target.
416   You can't do that when your target is `exec'
417   (gdb) Could not connect to target.
418   Please check power, connection and settings.
419
420You can fix it by erasing and reprogramming the HyperFlash with the following
421steps:
422
423#. Set the SW7 DIP switches to ON-ON-ON-OFF to prevent booting from HyperFlash.
424
425#. Reset by pressing SW4
426
427#. Run ``west debug`` or ``west flash`` again with a known working Zephyr
428   application.
429
430#. Set the SW7 DIP switches to OFF-ON-ON-OFF to boot from HyperFlash.
431
432#. Reset by pressing SW4
433
434Board Revisions
435***************
436
437The original MIMXRT1050-EVK (rev A0) board was updated with a newer
438MIMXRT1050-EVKB (rev A1) board, with these major hardware differences:
439
440- SoC changed from MIMXRT1052DVL6\ **A** to MIMXRT1052DVL6\ **B**
441- Hardware bug fixes for: power, interfaces, and memory
442- Arduino headers included
443
444For more details, please see the following `NXP i.MXRT1050 A0 to A1 Migration Guide`_.
445
446Current Zephyr build supports the new MIMXRT1050-EVKB
447
448.. _MIMXRT1050-EVK Website:
449   https://www.nxp.com/products/microcontrollers-and-processors/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1050-evaluation-kit:MIMXRT1050-EVK
450
451.. _MIMXRT1050-EVK User Guide:
452   https://www.nxp.com/webapp/Download?colCode=IMXRT1050EVKBHUG
453
454.. _MIMXRT1050-EVK Schematics:
455   https://www.nxp.com/webapp/Download?colCode=MIMXRT1050-EVK-DESIGNFILES
456
457.. _i.MX RT1050 Website:
458   https://www.nxp.com/products/microcontrollers-and-processors/arm-based-processors-and-mcus/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1050-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1050
459
460.. _i.MX RT1050 Datasheet:
461   https://www.nxp.com/docs/en/data-sheet/IMXRT1050CEC.pdf
462
463.. _i.MX RT1050 Reference Manual:
464   https://www.nxp.com/docs/en/reference-manual/IMXRT1050RM.pdf
465
466.. _OpenSDA J-Link MIMXRT1050-EVK-Hyperflash Firmware:
467   https://www.segger.com/downloads/jlink/OpenSDA_MIMXRT1050-EVK-Hyperflash
468
469.. _NXP i.MXRT1050 A0 to A1 Migration Guide:
470   https://www.nxp.com/docs/en/nxp/application-notes/AN12146.pdf
471
472.. _Enable QSPI flash support in SEGGER JLink:
473   https://wiki.segger.com/i.MXRT1050#QSPI_flash
474