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

DFU: Failed to open transport backend

Hi Everyone,

I'm working on adding DFU on my project and here is my setup:

  • Softdevice = 7.1.0
  • SDK = 6.1.0
  • DFU Bootloader = Keil compiled from SDK 6.1.0
  • MCP = 3.8.0.7
  • nRFgo = 1.17.1

If the application is compiled with Keil, then OTA DFU works fine. But if i compile the application with GCC, then i got the message shown on the topic title.

My question is, is it possible to use a Keil compiled DFU bootloader together with a GCC compiled application? If yes, what are the necessary things to be considered?

I almost gone through all the related topics but i still cannot make it work, i'm running out of ideas already, i hope someone can help me point me on the right patch, thank you in advance.

BR, Geo

  • Hi George, I've had similar bad luck with a Keil compiled bootloader and IAR compiled application. I do not recall what sort of error message was reported by the Android MCP I was using, and I never did debug this. I wound up porting the bootloader to IAR, I find that DFU works when application and bootloader are both built with the same tool chain, Keil or IAR.

  • Hi Matt, Thanks for your reply! I see, yes i also agree to build both with same tool chain which i confirmed via Keil. Because my application is already 33KB in size i need to use GCC for i cannot afford full version of Keil. How about your IAR, what is the size limit for the free version? Maybe its bigger than Keil?

  • I tried with a Keil compiled bootloader from SDK 6.1.0 and SoftDevice 7.1.0. I was able to upload the ble_app_hrs example application in SDK 6.1.0 both compiled with Keil and GCC. So it should be possible. However, I was using MCP 3.7.1, since the 3.8 version requires an init file, and as far as I know that is not compatible with the bootloader from SDK 6.1.0.

    You are sure the application compiled with GCC runs on the board without using the bootloader right?

    You can also check out this bootloader example: github.com/.../nrf51-dfu-bootloader-for-gcc-compiler. This is a bootloader based on SDK 6.0.0 that can be compiled using gcc.

    Maybe you should consider migrating to SDK 8, since the bootloader has been changed significantly since SDK 6?

  • Hi George, I don't believe there is a free version of IAR and the licensed version is also expensive. Based on Stian's results, it sounds like there should be no bootloader vs. application tool chain dependency. I needed to make changes to the bootloader, this was the primary reason for migrating to IAR. I was using the 7.2.0 SDK and bootloader, and the 7.1.0 Softdevice. I'm not sure how that might change tool chain dependence if at all.

  • Hi Stian, thanks for your reply. I see, i tried the ble_app_hrs but still the same result: the keil compiled works fine but the gcc compiled cannot proceed with OTA once the app is downloaded at first attempt through OTA. Actually im using MCP3.8 and SDK6.1.0 but it works fine if both bootloader and apps are compiled with Keil.

    Yes, actually im using the Nordic dev kit for now just to see if GCC app with DFU works.

    I also already tried that boot loader but still it can't, it has a different error though.

    OK that's what i'm planning for later test, i already downloaded SDK8, will update you for the progress, thanks again for the help.

Related