2022-12-09 02:44 AM
I've used BLE for a month now on the wb5mmg with the 1.14.1 firmware with the steval-proteus board. The setup in the .ioc for new projects was always the same:
Then I used the ST BLE Toolbox App to look at the services. It was never any trouble and worked already without much user config
Earlier this week I updated the Cube IDE to 1.11 and with it updated the firmware for the wb5 to 1.15.0.
After the update new projects created on the 1.15 firmware would not advertise.
APP_BLE_Init(void) (app_ble.c) was never called because the function where it was called in was registered as a Task but never set.
Function calls were as follows:
It is important to notice that projects created with firmare 1.14.1 and migrated to 1.15.0 did not have this issue and worked like before.
Just projects created on the 1.15.0 firmware showed this issue. I created mutliple (8) projects and tried different BLE configurations, all with the same issue.
It would have helped a lot if the new IDE version 1.11 would have been still able to change the firmware version of both new projects in the creation dialog and existing projects in the .ioc file in Project Manager.
In the end I deinstalled the IDE and downloaded the 1.10 to work with firmware 1.14.1. Now everything is working again.
2023-03-20 02:11 AM
Hi @Jtron.1,
Can you describe your issue and what is going wrong? Which stack are you using?
Best Regards
2023-03-20 03:12 AM
As I wrote above,
I am using use stm32wb5x_BLE_Stack_full_fw.bin: V1.15.0 and STM32Cube FW_WB V1.16.0, and STM32CubeMX version 6.8.0 for STM32WB5MMGHx, and I followed exactly the steps from this Videohttps://www.youtube.com/watch?v=i10X4Blr8ns
Just about 15 minutes ago I found the solution, but I don't know exactly understand the reason yet.
If I used the BLE_HeartRate linker file to replace the linker file from CubeMX generated after follow the video or the wiki page you provide to me, my custom app will work. The BLE_HeartRate source code is coming straightly from STM32WB example for STM32WB5MMGHx
These are the differences from the generated custom app linker file
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM1) + LENGTH(RAM1); /* end of RAM1 */
/* Generate a link error if heap and stack don't fit into RAM */
....
/* Initialized data sections goes into RAM, load LMA copy after code */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
*(.RamFunc) /* .RamFunc sections */
*(.RamFunc*) /* .RamFunc* sections */
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM1 AT> FLASH
...
.ARM.attributes 0 : { *(.ARM.attributes) }
MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
/* used by the startup to initialize .MB_MEM2 data */
_siMB_MEM2 = LOADADDR(.MB_MEM2);
.MB_MEM2 :
{
_sMB_MEM2 = . ;
*(.MB_MEM2) ;
_eMB_MEM2 = . ;
} >RAM_SHARED AT> FLASH
}
vs.
BLE_HeartRate
/* Highest address of the user mode stack */
_estack = 0x20030000; /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
...
/* Initialized data sections goes into RAM, load LMA copy after code */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM1 AT> FLASH
...
.ARM.attributes 0 : { *(.ARM.attributes) }
MAPPING_TABLE (NOLOAD) : { *(MAPPING_TABLE) } >RAM_SHARED
MB_MEM1 (NOLOAD) : { *(MB_MEM1) } >RAM_SHARED
MB_MEM2 (NOLOAD) : { _sMB_MEM2 = . ; *(MB_MEM2) ; _eMB_MEM2 = . ; } >RAM_SHARED
2023-03-21 10:56 PM
@Remy ISSALYS Can you please share with us or help me to understand why there are differences in the linker file one is generate from CubeMX and one provided by BLE_HeartRate example from STM32 repo?
2023-03-24 11:55 AM
Hello,
There is an extra dot in auto-generated linker script: *(.MB_MEM2) ; instead of *(MB_MEM2) ;
Due to this typo, the buffers that need to be in SRAM2 are not placed there, so your application doesn't work. For more details, see this post, it will be corrected in the next release.
Best Regards