2020-07-17 03:39 AM
Greetings,
I have my STM32WB55RGV6 connected to my computer through USB using the ST-LINK port on the board. When trying to flash the coprocessor to run an example application from the WB firmware package, I cannot even erase the previous firmware.
Using the commands from the attached link results in an error to erase the firmware, with message FUS_STATE_ERR_UNKNOWN. I have no problems flashing the main processor with binaries using this tool or armKEIL, but for some reason I cannot get the hang of this. I have even tried following the release notes addresses for programming but nothing seemed to work.
Does anybody have a solution for this issue?
Thank you for your attention, I have added some screenshots below to make my issue easier to understand.
1- Initial Connection using st-link
2- attempting to erase firmware
3- attempting to flash FUS firmware
4 and 5 - Attempting to flash BLE full stack firmware
Pedro Casanova
Solved! Go to Solution.
2020-08-19 04:38 AM
So just to recap, this nucleo is so old it wont work with the latest FUS? I will need to get a new one to work correctly.
2020-07-17 03:42 AM
The guide I use is from this page, for some reason the link is not working: https://www.st.com/en/development-tools/stm32cubeprog.html
2020-07-30 05:56 AM
The link is working fine for me.
Regarding the issue, I recommend to set the RDP option byte to 0xBB (level 1) and then 0XAA (Level 0) with the PCROP_RDP set to 1. this triggers a mass erase of the user flash memory except the FUS area protected by the SFSA pointer.
2020-08-18 04:55 AM
I'm having the same problem of Error: FUS_STATE_ERR_UNKNOWN every time I try to program the FUS or stack on the STM32WB. My P-NUCLEO-WB55 dev board is one of the originals from March 2019 could this be the issue?
Thanks
2020-08-18 05:21 AM
Which port are you using to program the NUCLEO board?
Could you download the option bytes?
Using the USB port, could you check the value at 0x20030030?
Can you detail the sequence of commands you are using?
2020-08-18 06:21 AM
I have being programming the NUCLEO through SWD.
Yes i'm using the STM32CubeProgrammer GUI and i have successfully written the option byte RDP and PCROP_RDP as you have previously suggested however with still no success.
I have checked the values with SWD and they are all zero. Does this need to be done with USB?
I'm using the firmware upgrade section of the GUI to upgrade stm32wb5x_FUS_fw_1_0_2.bin at start address 0x080EC000 and stm32wb5x_BLE_Stack_full_fw.bin to start address 0x080CB000
I'm not sure what else to try.
Thanks
2020-08-18 06:59 AM
When using the SWD port, the Device Info Table (DIT) is not located at the same address as the one use with the USB port.
When using UART/USB port, the DIT is located at 0x20030024. hence the FUS version is expected at address 0x20030030.
When using SWD port, the DIT is located ar 0x20030890. Hence the FUS version is expected at address 0x2003089C but only when the FUS is still active.
This is why you see all these zeroes in 0x20030024.
Now display the OB screen with all the option bytes, especially the user configuration and the security configuration.
You may get errors when trying to update a FUS which version is already the one installed.
2020-08-18 07:15 AM
The OB screen
I'm not sure of the version of FUS. Is there a way to tell with the GUI?
Thanks
2020-08-18 07:23 AM
The picture is not readable.
What is the value of SFSA and SBRV options bytes?
You cannot read the FUS version using the SWD port in GUI mode.
Display the memory section starting from 0x20030890.
2020-08-18 07:46 AM
Sorry thought it would of given you the option to download and zoom-in.
The values:
SFSA - 0xd4
SBRV - 0x35000
The memory from 0x2003089
Thanks