Cannot consistently flash my custom nrf5340 board and logging does not always work either

I am having problems flashing my custom board with a nrf5340 chip. Sometimes it works, sometimes it does not, but more often than not it doesn't work and I cannot figure out why. It also doesn't log consistently.

First, I do a pristine build with code which has worked. Then I try and flash and see this in the console:

-- west flash: using runner nrfjprog
-- runners.nrfjprog: reset after flashing requested
-- runners.nrfjprog: Flashing file: /Users/********/Projects/GitHub/********/blinky_custom_board/build_customboard/merged.hex
[ #################### ]   4.274s | Erase file - Done erasing                                                          
[error] [ Client] - Encountered error -102: Command program_file executed for 1237 milliseconds with result -102       
[error] [  nRF53] - The write access failed, but no cause could be determined.
[error] [  nRF53] - It may be due to an unaligned access, accessing a nonexistent memory, or a communication issue.
[error] [  nRF53] - Failed while performing Write operation on target address 114516. 
-102: An unknown error.
[error] [  nRF53] - Failed while reading device information.
[error] [ Worker] - An unknown error.
ERROR: JLinkARM DLL reported an error. Try again. If error condition
ERROR: persists, run the same command again with argument --log, contact Nordic
ERROR: Semiconductor and provide the generated log.log file to them.
NOTE: For additional output, try running again with logging enabled (--log).
NOTE: Any generated log error messages will be displayed.
FATAL ERROR: command exited with status 33: nrfjprog --program /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged.hex --sectorerase --verify -f NRF53 --coprocessor CP_APPLICATION --snr *********


I have run it from the command line as well and get the log (as it recommends). It was recommeded that I try recover so I ran this command: nrfjprog --recover --log and saw this in the terminal:

Recovering device. This operation might take 30s.
Erasing user code and UICR flash areas.
Writing image to disable ap protect.

I try to reflash from the VS Code Add-In where it command exited with status 33:

-- west flash: using runner nrfjprog
-- runners.nrfjprog: reset after flashing requested
-- runners.nrfjprog: Flashing file: /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged.hex
[ #################### ]   4.384s | Erase file - Done erasing                                                          
[error] [ Client] - Encountered error -102: Command program_file executed for 1617 milliseconds with result -102       
[error] [  nRF53] - The write access failed, but no cause could be determined.
[error] [  nRF53] - It may be due to an unaligned access, accessing a nonexistent memory, or a communication issue.
[error] [  nRF53] - Failed while performing Write operation on target address 114516. 
-102: An unknown error.
[error] [  nRF53] - Failed while reading device information.
[error] [ Worker] - An unknown error.
ERROR: JLinkARM DLL reported an error. Try again. If error condition
ERROR: persists, run the same command again with argument --log, contact Nordic
ERROR: Semiconductor and provide the generated log.log file to them.
NOTE: For additional output, try running again with logging enabled (--log).
NOTE: Any generated log error messages will be displayed.
FATAL ERROR: command exited with status 33: nrfjprog --program /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged.hex --sectorerase --verify -f NRF53 --coprocessor CP_APPLICATION --snr *********

 Sometimes I get this with a command exited with status 25:

-- west flash: using runner nrfjprog
-- runners.nrfjprog: reset after flashing requested
-- runners.nrfjprog: Flashing file: /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged_CPUNET.hex
[ #################### ]   7.998s | Erase file - Done erasing                                                          
[ #################### ]   2.513s | Program file - Done programming                                                    
[error] [ Client] - Encountered error -160: Command verify_file executed for 1017 milliseconds with result -160        
[error] [  nRF53] - Failed while performing Verify operation on target address 16925778. 
-160: Data does not match in address range [0x01000000 - 0x01024451] (Network Flash)
Expected byte value 0xF8 but read 0xF0 at address 0x01001A43.
[error] [  nRF53] - Failed while verifying device. -160: Data does not match in address range [0x01000000 - 0x01024451] (Network Flash)
Expected byte value 0xF8 but read 0xF0 at address 0x01001A43.
[error] [ Worker] - Data does not match in address range [0x01000000 - 0x01024451] (Network Flash)
Expected byte value 0xF8 but read 0xF0 at address 0x01001A43.
ERROR: Write verify failed.
NOTE: For additional output, try running again with logging enabled (--log).
NOTE: Any generated log error messages will be displayed.
FATAL ERROR: command exited with status 25: nrfjprog --program /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged_CPUNET.hex --sectorerase --verify -f NRF53 --coprocessor CP_NETWORK --snr *********

I run this but it doesn't seem to work:

nrfjprog --recover --log

Twice after trying this for a while and gtiving it a break I will flash it and it will take. I don't see the logging but eventually that starts as well.

My prj.conf looks like this:

CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_LOG=y

#Bluetooth Settings
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="Hello_World_Blinky"
#CONFIG_DEBUG_OPTIMIZATIONS=y
#CONFIG_DEBUG_THREAD_INFO=y

#Segger RTT Settings
CONFIG_LOG_MODE_IMMEDIATE=n
CONFIG_USE_SEGGER_RTT=y
CONFIG_RTT_CONSOLE=y
CONFIG_LOG_BACKEND_RTT=y
CONFIG_UART_CONSOLE=n
#CONFIG_PRINTK=y
#CONFIG_LOG_PRINTK=y
CONFIG_LOG_INFO_COLOR_GREEN=y
CONFIG_DEBUG_OPTIMIZATIONS=y
CONFIG_LOG_BACKEND_RTT_MODE_BLOCK=y
CONFIG_LOG_BUFFER_SIZE=4096
CONFIG_LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE=128
CONFIG_LOG_BLOCK_IN_THREAD=y


CONFIG_CONSOLE=y
CONFIG_LOG_BACKEND_UART=n

My sysboot.conf:

SB_CONFIG_NETCORE_HCI_IPC=y

Parents Reply Children
  • Thanks for confirming. 

    I'm not sure I solved the problem because I have another problem, but I do seem to be able to flash it consistently. However, my ble_enable now gives me a -11.

    -11 corresponds to -EAGAIN ("try again") and it usually indicates that the host is unable to communicate with the Bluetooth controller on the network core. Does the terminal log show that both cores are being programmed? I.e., merged.hex and merged_CPUNET.hex

  • It doesn't look like it. This seems to be the command I see:

    west flash -d /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard --domain blinky_custom_board --dev-id *********

    Previously it looked like:

    -- west flash: using runner nrfjprog
    -- runners.nrfjprog: reset after flashing requested
    -- runners.nrfjprog: Flashing file: /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged_CPUNET.hex

    and at the end it had:

    /Users/*********/Projects/GitHub/*********/blinky_custom_board/build_customboard/merged.hex --sectorerase --verify -f NRF53 --coprocessor CP_APPLICATION --snr *********

    I must have changed something accidentially in the configuration or something.

  • It is only programming the application core because of the "--domain blinky_custom_board " argument passed to west flash. To ensure both cores are programmed, you must select the "build context" before clicking on "Flash"

  • Ok. Thank you.

    Back to the main issue, it seemed to flash this time. Let me try a few times and on the other board.

Related