No longer able to program custom nRF52840 over SWD. No idcode detected

I had been able to program my custom nRF52840 just fine until I wanted to change partitions. I erased everything and now am unable to communicate with the board at all. I get "Failed to connect to target. No idcode detected. Please check connection and Target Interface Type."

When I try to recover the board, I get:

>nrfjprog --recover --family NRF52 --log
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: Unable to connect to a debugger.
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "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.

I'm using an nRF52840 DK to program the boards and it has no problem programming other boards. Not sure what I need to do to get the custom boards working again.

  • Hi

    What did you change your partitions from and to? Have you tried switching back? Regular issues with programming custom boards is that they're not powered correctly (the DK only supports programming devices that run at 3V), and the custom boards need to be powered separately. It could also be that they're not connected correctly to the DK, but I assume they are since you have been able to already

    Best regards, 

    Simon

    PS: The Holiday season is upon us, which will leave the Nordic support team understaffed until January 3rd, 2022. This means that delayed replies will occur during this time. Sorry about the inconvenience and happy Holiday

  • It's powered fine as I was able to program it just fine up until it was erased. The same probably is happening with two boards. Here is the new partition scheme:

    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x000000000 0x0000C000>;
    		};
    		slot0_partition: partition@c000 {
    			label = "image-0";
    			reg = <0x0000C000 0x00067000>;
    		};
    		slot1_partition: partition@73000 {
    			label = "image-1";
    			reg = <0x00073000 0x00067000>;
    		};
    		scratch_partition: partition@da000 {
    			label = "image-scratch";
    			reg = <0x000da000 0x0001e000>;
    		};
    
    		/*
    		 * The flash starting at 0x000f8000 and ending at
    		 * 0x000fffff is reserved for use by the application.
    		 */
    
    		/*
    		 * Storage partition will be used by FCB/LittleFS/NVS
    		 * if enabled.
    		 */
    		storage_partition: partition@f8000 {
    			label = "storage";
    			reg = <0x000f8000 0x00008000>;
    		};
    	};
    

    This is the old scheme:

    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x000000000 0x0000C000>;
    		};
    		slot0_partition: partition@c000 {
    			label = "image-0";
    			reg = <0x0000C000 0x000069000>;
    		};
    		slot1_partition: partition@75000 {
    			label = "image-1";
    			reg = <0x00075000 0x000069000>;
    		};
    		scratch_partition: partition@de000 {
    			label = "image-scratch";
    			reg = <0x000de000 0x0001e000>;
    		};
    
    		storage_partition: partition@fc000 {
    			label = "storage";
    			reg = <0x000fc000 0x00004000>;
    		};
    	};
    

    Not sure how to change it back since when I try to connect to target, it throws the "idcode" error. Any other way to recover the board?

  • Hello,

    Are you able to reprogram the Dev Kit?

    Have you tried the following?   "nrfjprog --recover -f nrf52" using nRFjprog?  

    I just tried and it worked on my dev kit. 

    i am using nrfjprog version: 10.15.0 external

    Also, have you updated your Segger software / firmware to the latest version?

    Have you messured the voltage on the VTG ?

  • I am using nrfjprog version 10.15.1 external. I am able to program the DK just fine. I get the same result with the following: nrfjprog --recover -f nrf52

    >nrfjprog --recover -f nrf52 --log
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: Unable to connect to a debugger.
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "An unknown error.".
    ERROR: [SeggerBackend] - JLinkARM.dll reported "-1", "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.

  • Hi again

    Seeing as you're able to program the DK as intended, but not the custom board, something seems to have damaged or erased the UICR of these external boards.

    As Jay suggests, have you measured the voltage on VTG before and after an erase, as the REG0 voltage might have switched to 1.8V after an UICR erase. How to recover from this is explained in our nRF52840 Dongle programming tutorial? And have you updated the SEGGER/J-Link software to the latest available version?

    Can you also try printing and uploading a log as the nrfjprog suggests "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."

    Best regards,

    Simon

Related