.. _target-mimxrt595-evk:

-------------
mimxrt595-evk
-------------
The NXP MIMXRT595-EVK_ evaluation board is a demonstration target for on-device
Pigweed development

.. _MIMXRT595-EVK: https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt595-evaluation-kit:MIMXRT595-EVK

Configuring
===========
Step 1: Download SDK
--------------------
To configure this Pigweed target you will first need to download an NXP
`MCUXpresso SDK`_ for your device and unpack it within your project source tree.

.. _MCUXpresso SDK: https://mcuxpresso.nxp.com/en/welcome

Step 2: Create SDK source set
-----------------------------
You'll next need to create a source set based on the downloaded SDK, and set
the ``pw_third_party_mcuxpresso_SDK`` build arg to the name of the source set
you create. See :ref:`module-pw_build_mcuxpresso` for more details.

Alternatively to get started you can start with the basic project template by
setting the ``pw_target_mimxrt595_evk_MANIFEST`` build arg to the location of
the manifest file within the unpacked SDK, and then setting the
``pw_third_party_mcuxpresso_SDK`` to the ``sample_sdk`` source set within the
Pigweed target directory.

.. code-block:: sh

   $ gn args out
   # Modify and save the args file to use the sample SDK.
   pw_target_mimxrt595_evk_MANIFEST = "//third_party/mcuxpresso/sdk/EVK-MIMXRT595_manifest_v3_8.xml"
   pw_third_party_mcuxpresso_SDK = "//targets/mimxrt595_evk:sample_sdk"

Building
========
Once configured, to build for this Pigweed target, simply build the top-level
"mimxrt595" Ninja target.

.. code-block:: sh

   $ ninja -C out mimxrt595

Running and Debugging
=====================
First Time Setup
----------------
The MIMXRT595-EVK comes with an integrated Link2 debug probe that can operate in
either CMSIS-DAP or SEGGER J-Link mode. CMSIS-DAP is how the board will likely
come by default, but J-Link is the mode that is currently known to work, so
you'll need to flash the Link2 with the correct firmware.

1. Download and install the LPCScrypt_ utility from the NXP website.

2. Place a jumper over **JP1** (not **J1**). If you're having trouble locating
   this, it's in the top-right of the board in a block of four jumpers closest
   to the USB ports.

3. Connect a USB cable into the top-right USB port (**J40**) and your computer.

4. Run ``scripts/boot_lpcscrypt`` from the LPCScrypt installation.

5. Run ``scripts/program_JLINK`` from the LPCScrypt installation, press the
   *SPACE* key to update the firmware.

6. Unplug the USB cable and remove the **JP1** jumper.

Now is also a good time to download and install the J-Link_ package from the
SEGGER website.

.. _LPCScrypt: https://www.nxp.com/design/microcontrollers-developer-resources/lpcscrypt-v2-1-2:LPCSCRYPT
.. _J-Link: https://www.segger.com/downloads/jlink/

General Setup
-------------
Each time you prepare the MIMXRT595-EVK for use, you'll need to do a few steps.
You don't need to repeat these if you leave everything setup and don't
disconnect or reboot.

1. Ensure the **SW7** DIP switches are set to Off-Off-On (boot from QSPI Flash).

2. Connect a USB cable into the top-right USB port (**J40**) and your computer.

3. Start the J-Link GDB Server and leave this running:

   .. code-block:: sh

      JLinkGDBServer -select USB -device MIMXRT595S -endian little -if SWD -speed 4000 -noir

On Linux, you may need to install the `libncurses5` library to use the tools:

.. code-block:: sh

   sudo apt install libncurses5

Running and Debugging
---------------------
Use ``arm-none-eabi-gdb`` to load an executable into the target, debug, and run
it.

.. code-block::
   :emphasize-lines: 1,6,10,12,20

   (gdb) target remote :2331
   Remote debugging using :2331
   warning: No executable has been specified and target does not support
   determining executable automatically.  Try using the "file" command.
   0x08000000 in ?? ()
   (gdb) file out/mimxrt595_evk_debug/obj/pw_status/test/status_test.elf
   A program is being debugged already.
   Are you sure you want to change the file? (y or n) y
   Reading symbols from out/mimxrt595_evk_debug/obj/pw_status/test/status_test.elf...
   (gdb) monitor reset
   Resetting target
   (gdb) load
   Loading section .flash_config, size 0x200 lma 0x8000400
   Loading section .vector_table, size 0x168 lma 0x8001000
   Loading section .code, size 0xb34c lma 0x8001180
   Loading section .ARM, size 0x8 lma 0x800c4d0
   Loading section .static_init_ram, size 0x3c8 lma 0x800c4d8
   Start address 0x080048d0, load size 47748
   Transfer rate: 15542 KB/sec, 6821 bytes/write.
   (gdb) monitor reset
   Resetting target

You can now set any breakpoints you wish, and ``continue`` to run the
executable.

To reset the target use ``monitor reset``.

To load an updated version of the same file, after resetting the target,
use ``load`` and a second ``monitor reset`` as shown above.

To debug a new file, use ``file`` before ``load``.

Debug console is available on the USB serial port, e.g. ``/dev/ttyACM0``
(Linux) or ``/dev/tty.usbmodem*`` (Mac).
