nRF51 SDK - S110 SoftDevice
|
The following sections describe some common errors that you might encounter when creating a DFU bootloader and their solutions.
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.
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
.
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.
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.
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.
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.