2025-12-09 2:51 AM - edited 2025-12-09 3:08 AM
Good morning everyone,
I need to apply the "Closed" product state to my device using the STM32H573VI.
I don't need TrustZone enabled and want to use a password for debug authentication.
I wanted to perform the operation via "code" using the HALs, but once I set the state to "Provisioning(0x17)" from "Open(0xED)," my firmware won't boot, and I can't even provision the *.obk file using the STM32CubeProgrammer.
bool ProductState::set(states newState)
{
FLASH_OBProgramInitTypeDef flashOptionBytes= {0};
HAL_StatusTypeDef ret {HAL_ERROR};
if(newState == states::Unknown) {
Log::msg("Invalid product state\n");
return false;
}
Log::msg("Setting product state to %s ...\n", toString(newState).c_str());
HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();
flashOptionBytes.OptionType = OPTIONBYTE_PROD_STATE;
flashOptionBytes.ProductState = (static_cast<uint32_t>(newState) << FLASH_OPTSR_PRODUCT_STATE_Pos);
Log::msg("Program state ...\n");
ret = HAL_FLASHEx_OBProgram(&flashOptionBytes);
if (ret == HAL_OK)
{
Log::msg("OB Launch ...\n");
ret = HAL_FLASH_OB_Launch();
if (ret != HAL_OK)
{
Log::msg("Error while execution OB_Launch : %d\n", ret);
}
}
else {
Log::msg("Error while setting OB Bank1 config state %s : %d\n", toString(newState).c_str(), ret);
}
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
return (ret == HAL_OK) ? true : false;
}I then tried to do the entire process using the STM32CubeProgrammer on another board.
I'we followed the video: STM32H5:Product state
- I flashed my application (a simple blinking LED) with IAR
- I changed the product state from "Open" to "Provisioning"
But no luck. Once the Provisioning state is set, I can't provide the *.obk file using the PROV dropdown.
Product state is 0x17 as correctly expected:
So both behaviours are equals using directly HALs drivers or STM32CubeProgrammer.
Can anyone please help me figure out what I'm doing wrong?
Thanks in advance for your help.
2025-12-09 4:02 AM
Hello @MattiaB ,
please connect in hotplug mode. You will be able to provision the board.
Then please check you can do a regression in this state before going further.
This will validate that the DA obk you provided is correct.
By the way, I would recommend having a look to the wiki How-to to get started with a new feature
Best regards
Jocelyn
2025-12-09 4:12 AM - edited 2025-12-09 4:15 AM
Hi @Jocelyn RICARD,
Also in hotplug mode I'm not able to provide the OBKey:
The STM32CubeProgrammer is the last downloadable: