This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

bootloader_util_arm.c file is not working in nRF51_SDK_10.0.0

When I am trying to use that file for Firmware Over the Air update feature in my application code then program compilation and all is working fine but when I am trying to load that program from Keil tool directly then I am getting following error message for writing the Flash memory:

No Algorithm found for: 10001014H - 10001017H
Partial Erase Done (areas with no algorithms skipped!)
No Algorithm found for: 10001014H - 10001017H
Partial Programming Done (areas with no algorithms skipped!)
Partial Verify OK (areas with no algorithms skipped!)
Flash Load finished at 15:12:02

And if I am trying to load that hex file from nRFGoStudio software then I am getting separate section for bootloader at left window side as I have not loaded bootloader and still it's coming up.

And while in SDK8.0.0, if I am trying to load same program with bootloader_util_arm.c file included then I am not getting that Keil error message and bootloader section in nRFGoStudio software as well. All things are working fine in SDK8.0.0.

So please can anyone tell me like what functions are changed from SDK8.0.0 to SDK10.0.0 for bootloader_util_arm.c for FOTA capability? And for dfu capable firmware if I have to include another file instead of whatever I am using then please let me know.

Thanks a lot in advance!

  • The bootloader examples stores its own start address @ 0x100010014 (UICR.BOOTLOADERADDR), and is required for the bootloader to be executed on startup, more details can be found in the MBR and bootloader chapter in the softdevice specification.

    However, the Jlink Flash algorihm used in Keil for nRF51 doesn't support writing to this particular section of flash. That's why the bootloader projects are configured to use nrfjprog instead of the jlink driver as with the other examples. The "Programming the dfu bootloader" section here shows the changes needed to use nrjprog. You can also use nrfgo studio / nrfjprog outside of Keil.

    And if I am trying to load that hex file from nRFGoStudio software then I am getting separate section for bootloader at left window side as I have not loaded bootloader and still it's coming up.

    nrfgo studio determines if a bootloader is present or not by reading the UICR.BOOTLOADERADDR register. So if the register hasn't been cleared the bootloader will show even though the actual FW may not be there.

  • I am using s110 soft device only. So I don't think so I have to use nrfjprog.exe to load my program. So my main question is that, why I am not facing any problem when I am using SDKv8.0.0? But when I am starting to use SDK10.0.0 for DFU purpose, I am inviting these kind of problems. So what is the main difference between SDK8.0.0 and SDK10.0.0 in bootloader_util_arm.c file?

  • You need both Softdevice and bootloader to support DFU. You will get the same error as shown in the log above in SDK 8.0.0 if you use the target driver in Keil. This error is unrelated to the bootloader_util_arm.c file. Note that it's named bootloader_util.c in SDK 10.0.0 since it also supports GCC and IAR compilers. Please try with a clean copy of SDK 10.0.0, then program the s110 v.8.0.0 and bootloader example to and see if it still doesn't work.

  • Hello Berg,

    When I am trying to load my program with SDK 8.0.0 using target driver of Keil and I am not getting any kind of errors as of with SDK 10.0.0 . So there should be some change between these 2 SDKs in the bootloader_util_arm.c file as when I am simply replacing this file in SDK 10.0.0 with SDK 8.0.0 version's file then it's working totally fine. I have checked this many times.

Related