2017-04-04 06:07 AM
I am facing a very strange problem, we first assemble 3 prototype boards of a project that uses the STM32F407IGT6 everything worked perfectly, we have developed 3 firmware for this project:
1 - Bootloader: Checks if necessary to update the application firmware jumps to firmware 2 or else jumps to firmware application
2 - Update Application: updates the application firmware
3 - Application
After all the tests and the approved project we realized the purchase of a small batch of our supplier (50 units).
To our surprise when we were to write the firmware many does not boot the firmware of the application or better loads the bootloader makes the jump to the application, but there is an error (stackoverflow) when it will execute the following in the last line:
LDR R0, = SystemInit
BLX R0
LDR R0, = __ main
BX R0
I could not find what is causing this error, we decided to replace the STM32F407 with one that we bought from Digikey, to our surprise it worked and we did it in 10 more equipments all worked.
Someone could help us, because I can not understand what is happening and now that it should be a line product we can not have to be replacing the microcontroller of all equipment.
I wonder if you have a solution for this or if someone has already had this kind of problem?
Thank you,
Giovani
2017-04-04 09:56 AM
Picture with the values of the registers before executing the statement
BX R0.
2017-04-04 10:06 AM
there is an error (stackoverflow)
What do you mean by this?
JW
2017-04-04 11:29 AM
In 4 boards the unique one that works VCAP1 and VCAP2 voltage is 1,270V their IDCODE are the same:
DEV_ID =0X0413REV_ID =0X1007Voltage on VCAP1, VCAP2 of the others boards is 1,260V
2017-04-04 12:17 PM
Perhaps a Hard Fault?
Review the ID Code/Stepping of the failing part. External markings would be helpful to pin down differences.
Look at DBGMCU->IDCODE
Check regulator VOS and Overdrive settings, voltages on VCAP pins