nRF51 SDK - S110 SoftDevice
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Troubleshooting

The following sections describe some common errors that you might encounter when creating a DFU bootloader and their solutions.

No Algorithm found for: 10001014H - 10001017H

The following error message is displayed in Keil when programming the DFU bootloader:

No Algorithm found for: 10001014H - 10001017H
Partial Erase Done (areas with no algorithms skipped!)
No Algorithm found for: 10001014H - 10001017H

Cause: You attempted to use the default J-Link target driver to flash the DFU bootloader to the device. This does not work, because in addition to flashing the bootloader, the bootloader start address must be written to the UICR register. The default J-Link driver cannot do this.

Solution: Use the external tool nrfjprog.exe instead of the default J-Link driver. You can configure the tool that is used for flash programming on the Utilities tab of the project options in Keil.

Failed to execute "nrfjprog.exe"

The following error message is displayed in Keil when programming the DFU bootloader:

Error: failed to execute "nrfjprog.exe"

Cause: The external tool nrfjprog.exe that is required to flash the DFU bootloader to the device cannot be found in the Windows PATH variable.

Solution: Add the path to nrfjprog.exe to the Windows PATH variable, or add the full path to nrfjprog.exe on the Utilities tab of the project options in Keil. The tool is delivered with the nRF51 MDK, which is required to use the SDK. The default path to nrfjprog.exe is C:\Program Files (x86)\Nordic Semiconductor\nrf51\bin\nrfjprog.exe.

Error L6406E: No space in execution regions

The following error message is displayed in Keil when compiling the DFU bootloader:

linking...
.\_build\nrf51422_xxac.axf: Error: L6406E: No space in 
execution regions with .ANY selector matching \c .....

Cause: The size of the compiled bootloader project exceeds the size that is configured in the project settings. This problem can occur if you modify the example code so that the resulting image becomes much bigger, or if you modify the project settings that define the memory areas on the IC.

Solution: Try using a higher optimization level (-O3), or increase the code area for the DFU bootloader as described in Relocating the bootloader.

DFU bootloader stops working after changing the start address

After changing the start address of the bootloader and flashing the image to the device again, the bootloader stops working.

Cause: Flashing the image to the device at a different memory location does not correctly set the pointer to the start address that is stored in the UICR register. Therefore, the pointer might point to the wrong start address, and there is no bootloader at this location.

Solution: Erase the device. This will delete the start address that is stored in the UICR register. Then program the SoftDevice and the DFU bootloader again. See Relocating the bootloader for more information.

Uploaded application does not run

You uploaded an application, but the application does not run when the device is reset.

Cause: The application cannot be started because it does not start at the expected start address.

Solution: Compile the application with the correct start address. For example, the correct start address for the S110 SoftDevice v7.0.0 is 0x00016000. For the S310 SoftDevice v0.9.0, the correct start address is 0x00020000. To determine the correct start address for the SoftDevice you are using, check the SoftDevice Specification (SDS). See Memory layout for more information.

Access to the port 'COMxx' is denied

When performing a Device Firmware Update using the IronPython script, the following error is reported:

[EXCEPTION] Access to the port 'COMxx' is denied.

Cause: The script cannot access the device at the specified address, either because you specified an incorrect address or because the device is in use by another application.

Solution: Make sure that the specified address is correct and close other applications that might use the device, for example, the Master Control Panel.