2021-10-12 08:20 PM
I was trying to flash my STM32WB Nucleo board with the latest (v1.2.0) FUS image using the CubeProgrammer. However, it fails with the following error.
14:15:16 : Old Firmware delete ...
14:15:16 : Warning: Option Byte: nSWboot0, value: 0x0, was not modified.
14:15:16 : Warning: Option Byte: nboot0, value: 0x1, was not modified.
14:15:16 : Warning: Option Byte: nboot1, value: 0x1, was not modified.
14:15:16 : Warning: Option Bytes are unchanged, Data won't be downloaded
14:15:16 : Succeeded to set nSWboot0=0 nboot1=1 nboot0=1
14:15:16 : Memory Programming ...
14:15:16 : Opening and parsing file: 0x495_FUS_Operator.bin
14:15:16 : File : 0x495_FUS_Operator.bin
14:15:16 : Size : 8 KBytes
14:15:16 : Address : 0x08000000
14:15:16 : Erasing memory corresponding to segment 0:
14:15:16 : Erasing internal memory sectors [0 1]
14:15:16 : Download in Progress:
14:15:17 : File download complete
14:15:17 : Time elapsed during download operation: 00:00:00.267
14:15:17 : Application is running, Please Hold on...
14:15:24 : Reconnecting...
14:15:24 : Reconnected !
14:15:24 : Error: FUS_STATE_ERR_UNKNOWN
I tried "Start FUS" and "Read FUS infos" and got this:
It indicates that the FUS Version is v0.0.0.0, which looks quite weird! Besides, the option byte reading of the MCU is:
-------------------------------------------------------------------
STM32CubeProgrammer v2.8.0
-------------------------------------------------------------------
ST-LINK SN : 066FFF3736324D5043233624
ST-LINK FW : V2J38M27
Board : P-NUCLEO-WB55
Voltage : 3.26V
SWD freq : 4000 KHz
Connect mode: Normal
Reset mode : Software reset
Device ID : 0x495
Revision ID : Rev Y
Device name : STM32WB5x
Flash size : 1 MBytes
Device type : MCU
Device CPU : Cortex-M4
BL Version : 0xd5
Debug in Low Power mode enabled
UPLOADING OPTION BYTES DATA ...
Bank : 0x00
Address : 0x58004020
Size : 96 Bytes
██████████████████████████████████████████████████ 100%
Bank : 0x01
Address : 0x58004080
Size : 8 Bytes
██████████████████████████████████████████████████ 100%
OPTION BYTES BANK: 0
Read Out Protection:
RDP : 0xAA (Level 0, no protection)
BOR Level:
BOR_LEV : 0x0 (BOR Level 0 reset level threshold is around 1.7 V)
User Configuration:
nBOOT0 : 0x1 (nBOOT0=1 Boot from main Flash)
nBOOT1 : 0x1 (Boot from code area if BOOT0=0 otherwise system Flash)
nSWBOOT0 : 0x0 (BOOT0 taken from the option bit nBOOT0)
SRAM2RST : 0x0 (SRAM2 erased when a system reset occurs)
SRAM2PE : 0x1 (SRAM2 parity check disable)
nRST_STOP : 0x1 (No reset generated when entering the Stop mode)
nRST_STDBY : 0x1 (No reset generated when entering the Standby mode)
nRSTSHDW : 0x1 (No reset generated when entering the Shutdown mode)
WWDGSW : 0x1 (Software window watchdog)
IWGDSTDBY : 0x1 (Independent watchdog counter running in Standby mode)
IWDGSTOP : 0x1 (Independent watchdog counter running in Stop mode)
IWDGSW : 0x1 (Software independent watchdog)
IPCCDBA : 0x0 (0x0)
Security Configuration Option bytes - 1:
ESE : 0x1 (Security enabled)
PCROP Protection:
PCROP1A_STRT : 0x1FE (0x80FF000)
PCROP1A_END : 0x0 (0x8000800)
PCROP_RDP : 0x0 (PCROP zone is kept when RDP is decreased)
PCROP1B_STRT : 0x1FE (0x80FF000)
PCROP1B_END : 0x0 (0x8000800)
Write Protection:
WRP1A_STRT : 0xFF (0x80FF000)
WRP1A_END : 0x0 (0x8000000)
WRP1B_STRT : 0xFF (0x80FF000)
WRP1B_END : 0x0 (0x8000000)
OPTION BYTES BANK: 1
Security Configuration Option bytes - 2:
SFSA : 0xF6 (0x80F6000)
FSD : 0x0 (System and Flash secure)
DDS : 0x1 (CPU2 debug access disabled)
C2OPT : 0x1 (SBRV will address Flash)
NBRSD : 0x0 (SRAM2b is secure)
SNBRSA : 0x10 (0x2003C000)
BRSD : 0x1 (SRAM2a is non-secure)
SBRSA : 0x0 (0x20030000)
SBRV : 0x3D800 (0x20000000)
Could someone please kindly advise why I am getting this error ((FUS_STATE_ERR_UNKNOWN) and how I can solve this issue? Thanks in advance!
2022-01-14 10:25 AM
WB FW V1.10.2 is an old version now as the most recent one is v1.13.1.
I would definitely recommend to try this version and check again.
Ok no issue regarding the stack size.
Are you using the latest CubeProgrammer version v 2.8.1?
This version has some additional features to trigger the FUS and read the FUS version whatever programming port is used.
2022-01-14 10:26 AM
>FUS version: first stm32wb5x_FUS_fw_1_0_2.bin, after - stm32wb5x_FUS_fw.bin from FW_WB V1.10.1. addr: 0x0807A000.
Was the update of stm32wb5x_FUS_fw_1_0_2.bin OK?
So the issue is with stm32wb5x_FUS_fw.bin?
Try the one which is part of WB FW v 1.13.
2022-01-14 10:38 AM
Ok, I'll try the new v1.13.1.
CubeProgrammer version - v 2.9.0
Thanks!
2022-01-16 04:03 AM
>Was the update of stm32wb5x_FUS_fw_1_0_2.bin OK?
No, this is the sequence I was aiming for.
The problem cannot be related to the library version.
I get an error FUS_STATE_ERR_UNKNOWN with any operation with FUS - fwdelete, read fuse infos, start FUS. The strangest thing is that USB DFU does not work on these chips yet. Is there a possible manufacturing error that the necessary firmware was not loaded into the chips?
2022-01-16 08:44 AM
USB DFU works if the 3 option bytes are properly set:
•nBOOT0 = N/A
•nBOOT1 = 1 (Checked = Use SysMemBL)
•nSWBOOT0 = 1 = Checked (Taken from pin)
•Set PH3/BOOT0 pin to High.
Could you check this?
2022-01-16 08:45 AM
Did you trigger "START FUS" button with CubeProgrammer and then read the version?
2022-01-16 08:47 AM
I've checked it many times. Moreover, on boards with WB55CG everything works without problems.
2022-01-16 08:52 AM
At any operation with FUS, including "Start FUS" I get an error:
FUS_STATE_ERR_UNKNOWN