mimxrt595-evk#
The NXP MIMXRT595-EVK evaluation board is a demonstration target for on-device Pigweed development
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.
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 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.
$ 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_13.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.
$ 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.
Download and install the LPCScrypt utility from the NXP website.
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.
Connect a USB cable into the top-right USB port (J40) and your computer.
Run
scripts/boot_lpcscrypt
from the LPCScrypt installation.Run
scripts/program_JLINK
from the LPCScrypt installation, press the SPACE key to update the firmware.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.
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.
Ensure the SW7 DIP switches are set to Off-Off-On (boot from QSPI Flash).
Connect a USB cable into the top-right USB port (J40) and your computer.
Start the J-Link GDB Server and leave this running:
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:
sudo apt install libncurses5
Running and Debugging#
Use arm-none-eabi-gdb
to load an executable into the target, debug, and run
it.
(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).