STM32WB55 Jump to bootloader problem in P2pClient project
Hi
I have a strange problem with my p-nucleo board(MB1355C)
Using the example as reference DFU_Standalone (STM32Cube_FW_WB_V1.12.0\Projects\P-NUCLEO-WB55.Nucleo\Applications\USB_Device\DFU_Standalone)I am able to jump to bootloader and perform DFU update using CubeProgrammer
This is the jump code which is triggered by if SW1 is pressed. If I use the USB_USER connector and apply JP1 USB_MCU then I can see board as DFU Device in Device Manager (Windows 10)
void BootloaderInit()
{
__enable_irq();
HAL_RCC_DeInit();
HAL_DeInit();
SysTick->CTRL = SysTick->LOAD = SysTick->VAL = 0;
__HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();
const uint32_t p = (*((uint32_t *) 0x1FFF0000));
__set_MSP( p );
void (*SysMemBootJump)(void);
SysMemBootJump = (void (*)(void)) (*((uint32_t *) 0x1FFF0004));
SysMemBootJump();
while( 1 ) {}
}However if I apply the same logic in BLE_p2pClient (\STM32Cube_FW_WB_V1.12.0\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pClient) I got USD Device not recognised notification from Windows 10.
For testing I`m calling Bootloader_Init() before HAL_Int() in main.c just to see if any project specific configuration is causing an issue but nothinc changed. Still USB not detected.
According to AN2606 steps prior to jump are as follows which I believe I have done.
In addition to patterns described above, user can execute bootloader by performing a jump
to system memory from user code. Before jumping to bootloader user must:
• Disable all peripheral clocks
• Disable used PLL
• Disable interrupts
• Clear pending interruptsThis is the screenshot from Device Manager. Unknown USB device is the STM32 as you might guess.
I would appreciate if anyone has an idea on what`s going wrong here
Thanks
