Using nRF54L15-DK from the command line?

I first tried nrfjprog which didn't work, but I know that's being retired so that wasn't entirely surprising. After that I moved on to testing 'nrfutil', specifically the 'device' sub-module, but was also unable to get it working correctly.

Currently I have installed:
- nrfutil v7.5.0
- nrfutil-device v2.3.6
- nRF Connect for Desktop v5.1.0
- Programmer App v4.4.2
- JLink v7.94i

When I run the command 'nrfutil device recover' or 'nrfutil device erase' to test, I encounter the following error:
'''
X Failed to recover XXXXXXXXXX, [Probe] Device error: Unknown device: Unknown part number 0x0000001c and revision 0x00000001
Error: One or more recover tasks failed:
* XXXXXXXXXX: [Probe] Device error: Unknown device: Unknown part number 0x0000001c and revision 0x00000001 , code: Generic
'''
Where 'XXXXXXXXXX' does accurately match the serial number on my devkit.


Using the programming GUI is not an option for my final use case, but in the spirit of troubleshooting I also tried using the Programmer App (part of nRF Connect for Desktop). It appears it was able to successfully 'erase' (no error and the default blink stopped), but attempting a 'Read' operation from the Programmer (v4.4.2), I encounter an error:
'''
Error: Failed with exit code 1. One or more batch tasks failed: - [Probe] The fw-read operation is not supported, code: Generic. Message: Batch task fw-read failed, [Probe] The fw-read operation is not supported.
'''

This basic sanity testing was all just trying to perform basic operations on the DevKit itself from the command line, but eventually I will need to use the DEBUG OUT port to target an external custom PCB. My next question will be whether the nRF54L15-DK is capable of functioning as a debugger for an older nRF52833 based design? I hope to move to the new nRF54L15 ASAP, but even then there will be a while where we have both devices in circulation and would like to avoid needing to swap DevKits all the time.

Parents
  • Maybe try this 3-step sequence from the command line:

    // nrf54L15 UICR Arm Cortex-M33
    // ============================
    // To program a hex file:
    // In \Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build
    nrfjprog --recover
    nrfjprog --memwr 0x00FFD080 --val 0x00000003
    nrfjprog --program blinky_pca10156.hex --chiperase --verify -r --log
    // Example:
    //    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --recover
    //    Recovering device. This operation might take 30s.
    //    Erasing user code and UICR flash areas.
    //    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --memwr 0x00FFD080 --val 0x00000003
    //    Parsing parameters.
    //    Writing.
    //    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --program blinky_pca10156.hex --chiperase --verify -r --log
    //    [ #################### ]   0.263s | Erase file - Done erasing
    //    [ #################### ]   0.197s | Program file - Done programming
    //    [ #################### ]   0.072s | Verify file - Done verifying
    //    Applying system reset.
    //    Run.
    

  • With nrfjprog (running 'nrfjprog --recover' as the most basic test), I get a different error:
    ```
    ERROR: nrfjprog could not identify the target device. This may be due to an  
    ERROR: invalid family argument, a problem with your device, or nrfjprog may
    ERROR: not yet support your device.
    ERROR: Please check the family argument passed, or upgrade nrfjprog to a more
    ERROR: recent version.
    NOTE: For additional output, try running again with logging enabled (--log).
    NOTE: Any generated log error messages will be displayed.
    ```

    Adding --log ('nrfjprog --recover --log') I get a bit more info:
    ```
    ERROR: [  nRFXX] - Family identification failed.
    ERROR: nrfjprog could not identify the target device. This may be due to an  
    ERROR: invalid family argument, a problem with your device, or nrfjprog may
    ERROR: not yet support your device.
    ERROR: Please check the family argument passed, or upgrade nrfjprog to a more
    ERROR: recent version.
    ```

    I'm running nrfjprog version 10.15.3 external, though this may be out of date. When I looked to see about updating it there are messages about it retiring so I focused on trying to get nrfutil updated and working.

    Should I be trying to get nrfjprog updated and working, or is nrfutil the future and what I should focus on?

  • I used nrfjprog version 10.24.2; I think that is required for the nRF54 which can be downloaded from Segger as the latest release.

    nrfjprog version: 10.24.2 external
    JLinkARM.dll version: 7.94e

    Also don't miss the BOOTCOMP step after the recover

    nrfjprog --memwr 0x00FFD080 --val 0x00000003
    
    // Set BOOTCONF (UICR offset 0x80) = 0x00000003
    // nrfjprog --memrd 0x00FFD000
    // nrfjprog --memrd 0x00FFD080
    // nrfjprog --memrd 0xE000E000
    // nrfjprog --memrd 0xE000ED00                     /* 410FD214 __CM33_REV=r0p4 SCB Offset: 0x000 CPUID Base Register */
    // nrfjprog --memwr 0x00FFD080 --val 0x00000003    /* Set BOOTCONF (UICR offset 0x80) = 0x00000003 */
    // Memory mapping of Core Hardware
    //  SCS_BASE            (0xE000E000UL)                System Control Space Base Address
    //  ITM_BASE            (0xE0000000UL)                ITM Base Address
    //  DWT_BASE            (0xE0001000UL)                DWT Base Address
    //  TPI_BASE            (0xE0040000UL)                TPI Base Address
    //  CoreDebug_BASE      (0xE000EDF0UL)                Core Debug Base Address
    //  SysTick_BASE        (SCS_BASE +  0x0010UL)        SysTick Base Address
    //  NVIC_BASE           (SCS_BASE +  0x0100UL)        NVIC Base Address
    //  SCB_BASE            (SCS_BASE +  0x0D00UL)        System Control Block Base Address
    

Reply
  • I used nrfjprog version 10.24.2; I think that is required for the nRF54 which can be downloaded from Segger as the latest release.

    nrfjprog version: 10.24.2 external
    JLinkARM.dll version: 7.94e

    Also don't miss the BOOTCOMP step after the recover

    nrfjprog --memwr 0x00FFD080 --val 0x00000003
    
    // Set BOOTCONF (UICR offset 0x80) = 0x00000003
    // nrfjprog --memrd 0x00FFD000
    // nrfjprog --memrd 0x00FFD080
    // nrfjprog --memrd 0xE000E000
    // nrfjprog --memrd 0xE000ED00                     /* 410FD214 __CM33_REV=r0p4 SCB Offset: 0x000 CPUID Base Register */
    // nrfjprog --memwr 0x00FFD080 --val 0x00000003    /* Set BOOTCONF (UICR offset 0x80) = 0x00000003 */
    // Memory mapping of Core Hardware
    //  SCS_BASE            (0xE000E000UL)                System Control Space Base Address
    //  ITM_BASE            (0xE0000000UL)                ITM Base Address
    //  DWT_BASE            (0xE0001000UL)                DWT Base Address
    //  TPI_BASE            (0xE0040000UL)                TPI Base Address
    //  CoreDebug_BASE      (0xE000EDF0UL)                Core Debug Base Address
    //  SysTick_BASE        (SCS_BASE +  0x0010UL)        SysTick Base Address
    //  NVIC_BASE           (SCS_BASE +  0x0100UL)        NVIC Base Address
    //  SCB_BASE            (SCS_BASE +  0x0D00UL)        System Control Block Base Address
    

Children
No Data
Related