cancel
Showing results for 
Search instead for 
Did you mean: 

Error when installing secure firmware image to STM32U585

abhkr241
Associate II

Hello,

I generated an SFI image for STM32U585 based on my application.  here is the details:

Firmware information:

abhkr241_1-1736985173277.png

SFI image details:

abhkr241_0-1736985052857.png

However, when I try to install this image, it fails with the error:
15:12:04:987 : PROGRAMMING OPTION BYTES AREA ...
  15:12:05:267 : Database: Config 11 is active.
  15:12:05:267 : Warning: Option Byte: TZEN, value: 0x1, was not modified.
  15:12:05:267 : Warning: Option Byte: nBoot0, value: 0x0, was not modified.
  15:12:05:267 : Warning: Option Byte: nSWBoot0, value: 0x0, was not modified.
  15:12:05:267 : Warning: Option Bytes are unchanged, Data won't be downloaded
  15:12:05:267 : Time elapsed during option Bytes configuration: 00:00:00.280
  15:12:05:275 : Programming via Debugger!
  15:12:05:331 : Programming via Debugger!
  15:12:05:399 : Programming via Debugger!
  15:12:05:467 : Programming via Debugger!
  15:12:05:536 : Execute RSS get version Payload...
  15:12:05:545 : Programming via Debugger!
  15:12:05:609 : halt ap 0
  15:12:05:616 : run ap 0
  15:12:05:616 : halt ap 0
  15:12:05:616 : RSS version = 1.4.0
  15:12:05:617 : Reading STM32 descriptor ...
  15:12:05:621 : STM32 Descriptor successfully read
  15:12:05:621 : Get RSSe version...
  15:12:05:625 : Programming via Debugger!
  15:12:05:682 : Programming via Debugger!
  15:12:05:742 : Programming via Debugger!
  15:12:05:800 : Programming via Debugger!
  15:12:05:864 : Execute RSS get version Payload...
  15:12:05:868 : Programming via Debugger!
  15:12:05:933 : halt ap 0
  15:12:05:942 : run ap 0
  15:12:05:943 : halt ap 0
  15:12:05:943 : RSSe version = 4.0.0
  15:12:05:943 : Starting SFI
  15:12:05:943 : Processing license...
  15:12:06:051 : Programming via Debugger!
  15:12:06:128 : Programming via Debugger!
  15:12:06:205 : Programming via Debugger!
  15:12:06:273 : Programming via Debugger!
  15:12:06:337 : Execute Process License payload...
  15:12:06:340 : Programming via Debugger!
  15:12:06:407 : halt ap 0
  15:12:06:418 : run ap 0
  15:12:07:113 : halt ap 0
  15:12:07:114 : Succeed to execute Process License payload...
  15:12:07:114 : Get RSSe status...
  15:12:07:125 : Programming via Debugger!
  15:12:07:198 : Programming via Debugger!
  15:12:07:274 : Programming via Debugger!
  15:12:07:350 : Programming via Debugger!
  15:12:07:426 : Execute RSSe Get Status Payload...
  15:12:07:504 : Programming via Debugger!
  15:12:07:580 : halt ap 0
  15:12:07:589 : run ap 0
  15:12:07:589 : halt ap 0
  15:12:07:589 : Succeed to execute RSSe Get Status ...
  15:12:07:589 : Processing Image Header
  15:12:07:590 : Writing Img header to address 0x20040300
  15:12:07:596 : Programming via Debugger!
  15:12:07:668 : Programming via Debugger!
  15:12:07:738 : Programming via Debugger!
  15:12:07:813 : Programming via Debugger!
  15:12:07:892 : Execute Process Image Header payload...
  15:12:07:896 : Programming via Debugger!
  15:12:07:976 : halt ap 0
  15:12:07:981 : run ap 0
  15:12:07:983 : halt ap 0
  15:12:07:984 : Succeed to execute RSSe Process Image Header payload...
  15:12:07:984 : Get RSSe status...
  15:12:07:994 : Programming via Debugger!
  15:12:08:066 : Programming via Debugger!
  15:12:08:127 : Programming via Debugger!
  15:12:08:198 : Programming via Debugger!
  15:12:08:274 : Execute RSSe Get Status Payload...
  15:12:08:353 : Programming via Debugger!
  15:12:08:438 : halt ap 0
  15:12:08:446 : run ap 0
  15:12:08:446 : halt ap 0
  15:12:08:447 : Succeed to execute RSSe Get Status ...
  15:12:08:447 : Processing Area 1...
  15:12:08:452 : Programming via Debugger!
  15:12:08:588 : Programming via Debugger!
  15:12:08:656 : Programming via Debugger!
  15:12:08:722 : Programming via Debugger!
  15:12:08:795 : Execute Process Area payload for Area 1...
  15:12:08:799 : Programming via Debugger!
  15:12:08:874 : halt ap 0
  15:12:08:883 : run ap 0
  15:12:09:521 : halt ap 0
  15:12:09:524 : Succeed to execute Process Area payload for Area 1...
  15:12:09:525 : Get RSSe status...
  15:12:09:525 : Programming via Debugger!
  15:12:09:608 : Programming via Debugger!
  15:12:09:687 : Programming via Debugger!
  15:12:09:768 : Programming via Debugger!
  15:12:09:841 : Execute RSSe Get Status Payload...
  15:12:09:923 : Programming via Debugger!
  15:12:09:991 : halt ap 0
  15:12:09:999 : run ap 0
  15:12:09:999 : halt ap 0
  15:12:09:999 : Succeed to execute RSSe Get Status ...
  15:12:09:999 : Area Address = 0x8000000
  15:12:09:999 : Area Type    = F
  15:12:09:999 : Processing Area 2...
  15:12:10:000 : Programming via Debugger!
  15:12:10:058 : Programming via Debugger!
  15:12:10:120 : Programming via Debugger!
  15:12:10:184 : Programming via Debugger!
  15:12:10:248 : Execute Process Area payload for Area 2...
  15:12:10:248 : ---- Is Last SFI Area !! ----
  15:12:10:254 : Programming via Debugger!
  15:12:10:313 : halt ap 0
  15:12:10:319 : run ap 0
  15:12:10:335 : halt ap 0
  15:12:10:335 : Error: Execution of RSS CMD failed, returned value = 0x1

 

- The license part looks ok to me.

I am not able to determine if there is an issue with my firmware image or the way I am generating my image. 
Any help would be appreciated. Thanks!

4 REPLIES 4
Tanguy
ST Employee

Hello,

It seems like the error occurs while processing the second area which contains the Option Bytes to set.

The Option Bytes template file for U5-2M RSSe SFI v4.0.0 is as below:

OPTR,0x9DA9F955
NSBOOTADD0R,0x0800007F
NSBOOTADD1R,0x0BF9007F
SECBOOTADD0R,0x0C00007C
SECWM1R1,0xFFFFFF80
SECWM1R2,0x7F807F80
WRP1AR,0xFF80FFFF
WRP1BR,0xFF80FFFF
SECWM2R1,0xFF80FFFF
SECWM2R2,0x7F807F80
WRP2AR,0xFF80FFFF
WRP2BR,0xFF80FFFF
KEYSDIVERS,0x00000000
OEM1KEYR1,0x00000000
OEM1KEYR2,0x00000000
OEM2KEYR1,0x00000000
OEM2KEYR2,0x00000000

 

Is the format different from the one you used when creating your SFI image?

 

Best regards,

Tanguy

abhkr241
Associate II

When generating the sfi image, I am using a option bytes .csv file. Attaching it here. Let me know if anything in it is not correct.

abhkr241
Associate II

Here it is in plain text:

main$ cat customSFI_OB_U5_2M.csv

OPTR,0x9DA9F9AA

NSBOOTADD0R,0x0800007F

NSBOOTADD1R,0x0BF9007F

SECBOOTADD0R,0x0C00007C

SECWM1R1,0xFFFFFF80

SECWM1R2,0x7F807F80

WRP1AR,0xFF80FFFF

WRP1BR,0xFF80FFFF

SECWM2R1,0xFF80FFFF

SECWM2R2,0x7F807F80

WRP2AR,0xFF80FFFF

WRP2BR,0xFF80FFFF

KEYSDIVERS,0x00000000

OEM1KEYR1,0x00000000

OEM1KEYR2,0x00000000

OEM2KEYR1,0x00000000

OEM2KEYR2,0x00000000

Tanguy
ST Employee

I think the issue comes from the RDP value in OPTR register. The minimum RDP value that can be set for a SFI is 0.5 (0x55) because the goal of the SFI procedure is to protect the user's firmware from the contract manufacturer.

After a SFI procedure, the contract manufacturer shouldn't be able to access the user's assets, so the RDP level must be higher than 0 (RDP 0 opens Secure and Non Secure debug). 

You can find more information on this in the Application Note AN4992 :
AN4992

 

Best regards,

Tanguy