PSOC OTA fixed Stack Bootloadable project not compiling

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
shge_4395051
Level 4
Level 4
25 sign-ins 25 replies posted First solution authored

Hello

I'm working through the OTA Fixed Stack Bootloadable project but cannot compile it.  Here are the errors:

shge_4395051_0-1663106735158.png

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.  

https://community.infineon.com/t5/PSoC-4/BLE-OTA-Fixed-Stack-with-Use-of-BLE-API-service-in-the-boot...

0 Likes
1 Solution

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.

View solution in original post

0 Likes
5 Replies
PratikshaV
Moderator
Moderator
Moderator
100 solutions authored 5 likes given 250 sign-ins

Hi @shge_4395051

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

0 Likes
shge_4395051
Level 4
Level 4
25 sign-ins 25 replies posted First solution authored

Hello Pratiksha 

I have read through the included documentation and implemented the instructions to the best of my ability.

0 Likes
lock attach
Attachments are accessible only for community members.

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. 

0 Likes

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

0 Likes

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.

0 Likes