You need to try the following steps:
1. By marking the section (EEPROM section where bonding data is stored) as NOLOAD in the linker script.
2. Make sure both devices have the same number of devices configured in the bonding list.
Can you please let us know the problem when you treat both Stack and Application as different devices?
Thanks and regards
Hi! Thank you for your reply.
Well the problem is that the MAC address is the same. If iOS has previously connected to Application, and now tries to connect to Stack to do OTA, will fail to connect, because the bonding information is not valid. In this case user has to manually go and delete the bonding from Bluetooth settings on the phone.
From your explanation, as I understand NOLOAD should allow us to have the same variable on the same address without giving a linker error?
But I think there is another question needs to be answered: which address to use for bonding, Application (at the 3rd last row of the flash) or the Stack (last row of Stack)?
When I tried manually place any variable, even one uint32_t in the Stack project, just having it as a constant, I found that it impacts calculation of metadata end address. Then the Launcher always treats Stack as invalid application...