- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello
I'm working through the OTA Fixed Stack Bootloadable project but cannot compile it. Here are the errors:
I've tried adding the "extern" keyword to the prototype in OTA_Mandatory.h with no effect. Here is an example of one of them:
extern CYBLE_API_RESULT_T CyBle_StoreBondingData(uint8 isForceWrite);
Any assistance would be helpful.
PS: There is an identical post but the OP mentioned she couldn't resolve the issue.
Solved! Go to Solution.
- Labels:
-
PSoC 4 MCU
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello @shge_4395051 ,
It is required to add the BLE Stack apis and General BLE APIs in the linker script, and other APIs usage will depends on your application. In the example project, inside BLE component, services like HID, DIS, BAS and scan parameter are added, so these service APIs are included in the linker script.
You can refer to the PSoC 4 BLE and PRoC BLE - Over-The-Air (OTA) Device Firmware Upgrade (DFU) Guide for more information on different BLE Bootloaders. You can refer to the Advantages and Disadvantages of all these OTA upgrades.
For example, in case of FixedStack OTA, BLE stack is part of the bootloader and cannot be upgraded (including the BLE profiles) via OTA. Whereas in Upgradable stack OTA, there is a Flexibility of updating both BLE stack and application image.
Thanks,
P Yugandhar.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you gone through the documentation provided with the code example and made changes accordingly. Please check if you are not missing anything.
Thanks & Regards
Pratiksha V
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Pratiksha
I have read through the included documentation and implemented the instructions to the best of my ability.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello @shge_4395051 ,
Please refer to the below attached BLE_OTA_FixedStack project and compare with your project.
If you are still facing the issue, then please share your project for debugging at our end.
Thanks,
P Yugandhar.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yugandhar,
Thanks for sending this example. I was able to compile and perform an OTA upgrade using it. However, here are the obstacles with my own code (or at least I think these are the issues). When reading through page 10 of the BLE OTA Fixed Stack Bootloader and Bootloadable (1.40), you are instructed to follow some guidelines. Here are steps 5 through 8:
5. Add code that uses the added BLE API service in the BLE_OTA_FixedStack_Bootloadable project.
6. Add all the used BLE APIs to the OTAMandatory.h file as extern declarations in the BLE_OTA_FixedStack_Bootloadable project.
7. If APIs are to be used from the bootloadable project:
a. For the GCC compiler, add those APIs to the section with KEEP instructions in the linker script of the bootloader project.
b. For the MDK compiler and for the IAR, the same procedure is performed with the linker command line arguments of the bootloader project.
c. If the services are removed, the APIs should also be removed.
8. Add all the used BLE types and defines to the OTAMandatory.h file of the BLE_OTA_FixedStack_Bootloadable project.
The challenge I'm facing is which APIs to include in my OTAmandatory.h file from step 6 and how to add the APIs to the linker script (in step 7) and then add KEEP statements to them. In the simple example you sent, there are 193 APIs with KEEP statements.
I'm glad you got back to me on this but I really feel I'm not going to get this to work. Perhaps I should pursue the "upgradable stack" option. In your opinion, is this easier to implement?
thanks
Shawn
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello @shge_4395051 ,
It is required to add the BLE Stack apis and General BLE APIs in the linker script, and other APIs usage will depends on your application. In the example project, inside BLE component, services like HID, DIS, BAS and scan parameter are added, so these service APIs are included in the linker script.
You can refer to the PSoC 4 BLE and PRoC BLE - Over-The-Air (OTA) Device Firmware Upgrade (DFU) Guide for more information on different BLE Bootloaders. You can refer to the Advantages and Disadvantages of all these OTA upgrades.
For example, in case of FixedStack OTA, BLE stack is part of the bootloader and cannot be upgraded (including the BLE profiles) via OTA. Whereas in Upgradable stack OTA, there is a Flexibility of updating both BLE stack and application image.
Thanks,
P Yugandhar.