STM32 Save SFI device certificate to file
FlashPro-ARM/GangPro-ARM programmers support the ability to read the SFI chip certificate and save it to a file on disk.
The read and save chip certificate to file feature is also accessible by using the API-DLL.
F_ReadSTM32Certificate
General Description
Read device certificate from connected devices to FlashPro-ARM/GangPro-ARM programmers and save to file(cert_1.bin, cert_2.bin etc.)
Supported STM32 series:
STM32U5 Series
STM32L5 Series
STM32H5 Series
Syntax
INT X F_ReadSTM32Certificate( char* path );
Input
char *path : path to save certificate file
““: save in execute place
Output
INT_X : result of operation
1 - success
2 - selected not supported vendor or family
3 - target not opened(no connection established)
4 - can’t create file or path don't exists
5 - error during read certificate
Code example
Code example in python how use F_ReadSTM32Certificate
import os
import sys
import ctypes
#FP-ARM - comment this out and uncomment GP-ARM to use demo for GangPro-ARM
if (sys.platform == "win32"):
libname = "./FlashProARM-FPAsel.dll"
else:
libname = "libmultifparm.so"
#GP-ARM - commented out - comment this out and uncomment FP-ARM to use demo for FlashPro-ARM
#if (sys.platform == "win32"):
# libname = "./GangProARM-FPAsel.dll"
#else:
# libname = "libmultigparm.so"
init_file = bytes('FPAs-setup.ini', 'utf-8')
if (sys.platform == "win32"):
config_file_path = bytes('ConfigFiles\\STM32U5_cert.cfg', 'utf-8')
else:
config_file_path = bytes('STM32U5_cert.cfg', 'utf-8')
#Load library
lib = ctypes.cdll.LoadLibrary(libname)
# Get number of connected adapters
instances = lib.F_OpenInstancesAndFPAs(init_file)
print("Connected adapters: {}".format(instances))
# Init all adapters
result = lib.F_Set_FPA_index(0)
print("F_Set_FPA_index(0): {}".format(result))
result = lib.F_Initialization()
print("F_Initialization: {}".format(result))
# Get adapters serial numbers
serials = []
for instance in range(1, instances+1):
serials.append(lib.F_Get_FPA_SN(instance))
print(serials)
result = lib.F_ConfigFileLoad(config_file_path)
print("F_ConfigFileLoad: {}".format(result))
# Select one adapter
result = lib.F_Set_FPA_index(1)
print("F_Set_FPA_index(1): {}".format(result))
# Open Target (required before F_ReadSTM32Certificate )
result = lib.F_Open_Target_Device()
print("F_Open_Target_Device".format(result))
result = lib.F_ReadSTM32Certificate("")
print("F_ReadSTM32Certificate: {}".format(result))
result = lib.F_Close_Target_Device()
print("F_Close_Target_Device: {}".format(result))
Useful links
[1] FlashPro-ARM & GangPro-ARM DLL User Guide