Configure and compile NuttX to the board: you can go legacy way with makefile or new way with CMake

Legacy way:

$ ./tools/configure.sh arcx-socket-grid:nsh
$ make -j
LD: nuttx
Memory region         Used Size  Region Size  %age Used
           flash:       94744 B        64 MB      0.14%
            sram:        6588 B       512 KB      1.26%
            itcm:           0 B       128 KB      0.00%
            dtcm:           0 B       128 KB      0.00%
CP: nuttx.hex

CMake way:

$ cmake -B build -DBOARD_CONFIG=arcx-socket-grid:nsh -GNinja
-- Configuring done (0.3s)
-- Generating done (0.1s)
-- Build files have been written to: /home/alan/nuttxspace/nuttx/build

$ cmake --build build
[7/9] Linking C executable nuttx
Memory region         Used Size  Region Size  %age Used
           flash:       94748 B        64 MB      0.14%
            sram:        6572 B       512 KB      1.25%
            itcm:           0 B       128 KB      0.00%
            dtcm:           0 B       128 KB      0.00%
[9/9] Generating System.map

Now we need to flash the board, then set the boot pins to 1001:

Then use OpenOCD or JLinkExe to flash the firmware:

J-Link>con
Please specify device / core. <Default>: CORTEX-M33
Type '?' for selection dialog
Device>?
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed>
Device "MIMXRT1052XXXXB" selected.


Connecting to target via SWD
Found SW-DP with ID 0x0BD11477
DPIDR: 0x0BD11477
CoreSight SoC-400 or earlier
Scanning AP map to find all available APs
AP[1]: Stopped AP scan as end of AP map has been reached
AP[0]: AHB-AP (IDR: 0x04770041, ADDR: 0x00000000)
Iterating through AP map to find AHB-AP to use
AP[0]: Core found
AP[0]: AHB-AP ROM base: 0xE00FD000
CPUID register: 0x411FC271. Implementer code: 0x41 (ARM)
Cache: L1 I/D-cache present
Found Cortex-M7 r1p1, Little endian.
FPUnit: 8 code (BP) slots and 0 literal slots
CoreSight components:
ROMTbl[0] @ E00FD000
[0][0]: E00FE000 CID B105100D PID 000BB4C8 ROM Table
ROMTbl[1] @ E00FE000
[1][0]: E00FF000 CID B105100D PID 000BB4C7 ROM Table
ROMTbl[2] @ E00FF000
[2][0]: E000E000 CID B105E00D PID 000BB00C SCS-M7
[2][1]: E0001000 CID B105E00D PID 000BB002 DWT
[2][2]: E0002000 CID B105E00D PID 000BB00E FPB-M7
[2][3]: E0000000 CID B105E00D PID 000BB001 ITM
[1][1]: E0041000 CID B105900D PID 001BB975 ETM-M7
[1][2]: E0042000 CID B105900D PID 004BB906 CTI
[0][1]: E0040000 CID B105900D PID 000BB9A9 TPIU-M7
[0][2]: E0043000 CID B105F00D PID 001BB101 TSG
I-Cache L1: 32 KB, 512 Sets, 32 Bytes/Line, 2-Way
D-Cache L1: 32 KB, 256 Sets, 32 Bytes/Line, 4-Way
Memory zones:
  Zone: "Default" Description: Default access mode
Cortex-M7 identified.

Flashing:

J-Link>loadbin nuttx.hex, 0
'loadbin': Performing implicit reset & halt of MCU.
ResetTarget() start
Core did not halt on flash image verification. Assuming faulty flash settings.
Halting target manually.
ResetTarget() end - Took 320ms
Device specific reset executed.
AfterResetTarget() start
AfterResetTarget() end - Took 665us
Downloading file [nuttx.hex]...
J-Link: Flash download: Bank 0 @ 0x60000000: 1 range affected (262144 bytes)
J-Link: Flash download: Total: 3.502s (Prepare: 0.141s, Compare: 0.921s, Erase: 0.960s, Program: 0.483s, Verify: 0.926s, Restore: 0.069s)
J-Link: Flash download: Program speed: 529 KB/s
O.K.
J-Link>

Now you need to change the boot pins to 1010 test the serial communication to NSH:

NuttShell (NSH) NuttX-12.10.0
nsh> uname -a
NuttX 12.10.0 7934a7dffd-dirty Jul 29 2025 13:10:03 arm arcx-socket-grid
nsh> ?
help usage:  help [-v] [<cmd>]

    .           cp          expr        mkdir       rmdir       umount      
    [           cmp         false       mkrd        set         unset       
    ?           dirname     fdinfo      mount       sleep       uptime      
    alias       df          free        mv          source      usleep      
    unalias     dmesg       help        pidof       test        watch       
    basename    echo        hexdump     printf      time        xd          
    break       env         kill        ps          true                          
    cat         exec        pkill       pwd         truncate                      
    cd          exit        ls          rm          uname                         
                                                                                  
Builtin Apps:                                                                     
    dd     nsh    sh                                                              
nsh> free                                                                         
      total       used       free    maxused    maxfree  nused  nfree name        
     253500       5652     247848       6008     247848     21      1 Umem        
nsh> ls /dev                                                                      
/dev:                                                                             
 console                                                                          
 null                                                                             
 ttyS0                                                                            
 zero                                                                             
nsh>