AnsweredAssumed Answered

Help with application jump to system memory boot

Question asked by eamonn on Mar 16, 2012
Latest reply on Apr 23, 2012 by Clive One

Hello, I’m trying to force my device (STM32F417) into system memory boot without physically setting the boot pins (cannot access them) and resetting the board i.e. jump to it from my application when the user requests and then re-flash using USB and the DfuSe application. 

Where I stuck is when the user send a reprogram command over the USB the following code is ran:

      SysMemBootJump = (void (*)(void)) (*((uint32_t *) 0x1FFF0004));

      hw_DeInit();

      SysTick->CTRL = 0;

      SysTick->LOAD = 0;

      SysTick->VAL = 0;

      RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

      __set_PRIMASK(1);

      __set_MSP(0x20001000);

      SysMemBootJump();

      while(1);

but the DfuSe application doesn’t detect the device. And after a period of time >10secs the device will restart.

Can anyone help or give me direction as to the possible issue.

Re-flashing using IAP isn’t really an option as the user cannot reset the board easily and all GPIO pins are taken therefore cannot detect a re-flash is required on restart.

Cheers for any help you can give.

Outcomes