Infineon MOTIX™ MCU TLE988x/9x Device Family SDK
Data Structures | Macros | Typedefs | Enumerations
bootrom.h File Reference

Go to the source code of this file.

Detailed Description

BootROM low level access library.

Version
V0.3.4
Date
05. Nov 2024
Note

Include Graph

Include dependency graph for bootrom.h:

Include Graph

This graph shows which files directly or indirectly include this file:

Data Structures

struct  user_100tp_read_t
 
struct  user_100tp_write_t
 
struct  user_key_t
 Key data structure aligned with CFS page (ignored reserved bytes) More...
 
struct  user_crypto_inp_buf_t
 
struct  user_crypto_out_buf_t
 
struct  user_crypto_io_buf_t
 
struct  user_crypto_cmac_t
 
struct  user_crypto_cbc_t
 
struct  user_key_write_params_t
 
struct  user_key_write_t
 
struct  user_key_erase_params_t
 
struct  user_key_erase_t
 
struct  user_nvm_page_write_t
 

Macros

#define addr_user_nvm_isr_handler   (0xc1u)
 
#define addr_user_cid_get   (0xc5u)
 
#define addr_user_ram_mbist   (0xc9u)
 
#define addr_user_nvm_udata_temp_protect_clear   (0xd1u)
 
#define addr_user_nvm_ucode_temp_protect_clear   (0xd5u)
 
#define addr_user_nvm_udata_temp_protect_set   (0xd9u)
 
#define addr_user_nvm_ucode_temp_protect_set   (0xddu)
 
#define addr_user_nvm_temp_protect_get   (0xe1u)
 
#define addr_user_nvm_ecc_addr_get   (0xe5u)
 
#define addr_user_nvm_ecc_check   (0xe9u)
 
#define addr_user_nvm_100tp_read   (0xedu)
 
#define addr_user_nvm_100tp_write   (0xf1u)
 
#define addr_user_nvm_100tp_erase   (0xf5u)
 
#define addr_user_nvm_config_get   (0xf9u)
 
#define addr_user_nvm_page_erase   (0xfdu)
 
#define addr_user_nvm_sector_erase   (0x101u)
 
#define addr_user_nvm_page_write   (0x105u)
 
#define addr_user_nvm_mapram_init   (0x109u)
 
#define addr_user_nvm_mapram_recover   (0x10du)
 
#define addr_user_nvm_service_algorithm   (0x111u)
 
#define addr_user_crypto_aes_cmac_generate_start   (0x115u)
 
#define addr_user_crypto_aes_cmac_generate_update   (0x119u)
 
#define addr_user_crypto_aes_cmac_generate_finish   (0x11du)
 
#define addr_user_crypto_aes_cmac_verify_start   (0x121u)
 
#define addr_user_crypto_aes_cmac_verify_update   (0x125u)
 
#define addr_user_crypto_aes_cmac_verify_finish   (0x129u)
 
#define addr_user_crypto_aes_start   (0x12du)
 
#define addr_user_crypto_aes_update   (0x131u)
 
#define addr_user_crypto_aes_finish   (0x135u)
 
#define addr_user_crypto_key_write   (0x139u)
 
#define addr_user_crypto_key_erase   (0x13du)
 
#define addr_user_crypto_key_verify   (0x141u)
 
#define addr_user_nvm_reg_write   (0x145u)
 
#define addr_user_nvm_reg_read   (0x149u)
 
#define addr_user_secure_download_start   (0x14du)
 
#define addr_user_secure_download_update   (0x151u)
 
#define addr_user_secure_download_finish   (0x155u)
 
#define addr_user_cache_operation   (0x159u)
 
#define addr_user_ubsl_size_restore   (0x15du)
 
#define addr_user_nvm_perm_protect_set   (0x161u)
 
#define addr_user_nvm_ubsl_temp_protect_clear   (0x201u)
 
#define addr_user_nvm_ubsl_temp_protect_set   (0x205u)
 
#define addr_user_secure_dualboot   (0x209u)
 
#define USER_KEY_SIZE_128   (0x10u)
 128 bits key length More...
 
#define USER_KEY_SIZE_256   (0x20u)
 256 bits key length More...
 
#define USER_KEY_SIZE_MAX   (USER_KEY_SIZE_256)
 Maximum length for a key value to read/store. More...
 
#define USER_KEY_PARAM_SIZE   (0x40u)
 encrypted key parameter size 64 bytes More...
 
#define USER_CMAC_SIGNATURE_SIZE   (0x10u)
 cmac signature size 16 bytes More...
 
#define USER_KEY_WRITE_BUFFER_SIZE   (0x30u)
 Size of key_write decryption buffer. More...
 
#define USER_KEY_MAX_ID   (12u)
 Maximum User key slot ID. More...
 
#define USER_KEY_MIN_ID   (1u)
 Minimum User key slot ID. More...
 
#define IFX_KEY_ID   (0u)
 IFX key ID. More...
 
#define user_cid_get   ( (int32_t(*)(uint32_t *)) addr_user_cid_get )
 This user API function gets the customer identification number. More...
 
#define user_ram_mbist   ( (int32_t(*)(uint32_t, uint32_t)) addr_user_ram_mbist )
 This user API function performs a MBIST on the specified SRAM range. Start address shall be smaller than end address. More...
 
#define user_nvm_udata_temp_protect_clear   ( (int32_t(*)(uint32_t)) addr_user_nvm_udata_temp_protect_clear )
 This user API function temporarily clears the write protection of the UDATA segment. More...
 
#define user_nvm_ucode_temp_protect_clear   ( (int32_t(*)(uint32_t)) addr_user_nvm_ucode_temp_protect_clear )
 This user API function temporarily clears the write protection of the UCODE segment. More...
 
#define user_nvm_udata_temp_protect_set   ( (int32_t(*)(uint32_t)) addr_user_nvm_udata_temp_protect_set )
 This user API function temporarily sets the write protection of the UDATA segment. More...
 
#define user_nvm_ucode_temp_protect_set   ( (int32_t(*)(uint32_t)) addr_user_nvm_ucode_temp_protect_set )
 This user API function temporarily sets the write protection of the UCODE segment. More...
 
#define user_nvm_temp_protect_get   ( (uint32_t(*)(user_nvm_segment_t)) addr_user_nvm_temp_protect_get )
 This user API function gets the current protection status of a specified NVM segment. More...
 
#define user_nvm_perm_protect_set   ( (int32_t(*)(uint32_t)) addr_user_nvm_perm_protect_set )
 This user API function sets permanent protection on NVM segments. More...
 
#define user_nvm_ecc_addr_get   ( (int32_t(*)(uint32_t, uint32_t *)) addr_user_nvm_ecc_addr_get )
 This user API function returns the address of a double ECC event that has occurred in the target flash. More...
 
#define user_nvm_ecc_check   ( (int32_t(*)(uint32_t)) addr_user_nvm_ecc_check )
 This user API function checks for single and double ECC errors on the target flash. More...
 
#define user_nvm_100tp_read   ( (int32_t(*)(uint32_t, user_100tp_read_t *)) addr_user_nvm_100tp_read )
 This user API function reads data from specified 100TP page. More...
 
#define user_nvm_100tp_write   ( (int32_t(*)(uint32_t, user_100tp_write_t *)) addr_user_nvm_100tp_write )
 This user API function writes data to a specified 100TP page. More...
 
#define user_nvm_100tp_erase   ( (int32_t(*)(uint32_t)) addr_user_nvm_100tp_erase )
 This user API function erases a data field of the specified 100TP page. The write counter field is preserved. More...
 
#define user_nvm_config_get   ( (int32_t(*)(uint32_t *, uint32_t *, uint32_t *)) addr_user_nvm_config_get )
 This user API function returns the size of each NVM segment. More...
 
#define user_nvm_page_erase   ( (int32_t(*)(uint32_t, uint32_t)) addr_user_nvm_page_erase )
 This user API function erases a specified flash page. More...
 
#define user_nvm_sector_erase   ( (int32_t(*)(uint32_t, uint32_t)) addr_user_nvm_sector_erase )
 This user API function erases a specified flash sector. More...
 
#define user_nvm_page_write   ( (int32_t(*)(uint32_t, user_nvm_page_write_t *)) addr_user_nvm_page_write )
 This user API function writes a number of bytes from the source to the specified flash address page_address. More...
 
#define user_nvm_write   user_nvm_page_write
 
#define user_nvm_mapram_init   ( (int32_t(*)(uint32_t)) addr_user_nvm_mapram_init )
 This user API function triggers the map RAM initialization on the target mapped sector. More...
 
#define user_nvm_mapram_recover   ( (int32_t(*)(uint32_t)) addr_user_nvm_mapram_recover )
 This user API function attempts to reconstruct map RAM by extracting mapping information from good pages. More...
 
#define user_nvm_service_algorithm   ( (int32_t(*)(uint32_t)) addr_user_nvm_service_algorithm )
 This user API function runs the service algorithm on a mapped sector, attempting to repair faulty pages or double mappings. More...
 
#define user_nvm_reg_write   ( (int32_t(*)(uint32_t, uint32_t )) addr_user_nvm_reg_write )
 This user API function performs a write access to NVM SFRs. More...
 
#define user_nvm_reg_read   ( (int32_t(*)(uint32_t, uint32_t *)) addr_user_nvm_reg_read )
 This user API function performs a read access to NVM SFRs. More...
 
#define user_secure_download_start   ( (int32_t(*)(uint8_t, uint8_t, uint8_t *)) addr_user_secure_download_start )
 This user API function initiates the secure container and starts the secure download process. More...
 
#define user_secure_download_update   ( (int32_t(*)(uint32_t, uint8_t *)) addr_user_secure_download_update )
 This user API function continues the secure download process. More...
 
#define user_secure_download_finish   ( (int32_t(*)(void)) addr_user_secure_download_finish )
 This user API function finalizes the secure download process. More...
 
#define user_cache_operation   ( (int32_t(*)(user_cache_op_t, uint32_t)) addr_user_cache_operation )
 This user API function provides an alternative to writing to cache registers in addition to direct register access. More...
 
#define user_ubsl_size_restore   ( (void(*)(void)) addr_user_ubsl_size_restore )
 This user API function is used to restore the UBSL size in case of a Stop mode exit w/o reset. More...
 
#define user_crypto_aes_cmac_generate_start   ( (int32_t(*)(uint32_t)) addr_user_crypto_aes_cmac_generate_start )
 This user API function initializes a CMAC generation. More...
 
#define user_crypto_aes_cmac_generate_update   ( (int32_t(*)(user_crypto_inp_buf_t *)) addr_user_crypto_aes_cmac_generate_update)
 This user API function updates the ongoing CMAC generation. More...
 
#define user_crypto_aes_cmac_generate_finish   ( (int32_t(*)(user_crypto_io_buf_t *, bool)) addr_user_crypto_aes_cmac_generate_finish)
 This user API function finalizes the ongoing CMAC generation. More...
 
#define user_crypto_aes_cmac_verify_start   ( (int32_t(*)(uint32_t)) addr_user_crypto_aes_cmac_verify_start )
 This user API function initializes a CMAC verification operation. More...
 
#define user_crypto_aes_cmac_verify_update   ( (int32_t(*)(user_crypto_inp_buf_t *)) addr_user_crypto_aes_cmac_verify_update )
 This user API function updates the ongoing CMAC verification. More...
 
#define user_crypto_aes_cmac_verify_finish   ( (int32_t(*)(user_crypto_cmac_t *)) addr_user_crypto_aes_cmac_verify_finish )
 This user API function finalizes the ongoing CMAC verification. More...
 
#define user_crypto_aes_start   ( (int32_t(*)(user_crypto_fid_t, uint32_t, user_crypto_cbc_t *)) addr_user_crypto_aes_start )
 This user API function initializes an AES operation. More...
 
#define user_crypto_aes_update   ( (int32_t(*)(user_crypto_io_buf_t *)) addr_user_crypto_aes_update )
 This user API function updates the ongoing AES operation. More...
 
#define user_crypto_aes_finish   ( (int32_t(*)(user_crypto_io_buf_t *)) addr_user_crypto_aes_finish )
 This user API function finalizes the ongoing AES operation. More...
 
#define user_crypto_key_write   ( (int32_t(*)(user_key_write_t *)) addr_user_crypto_key_write )
 This user API function writes a cryptographic key to the target key slot. More...
 
#define user_crypto_key_erase   ( (int32_t(*)(user_key_erase_t *)) addr_user_crypto_key_erase )
 This user API function erases a cryptographic key. More...
 
#define user_crypto_key_verify   ( (int32_t(*)(uint8_t, bool)) addr_user_crypto_key_verify )
 This user API function verifies an existing cryptographic key. An additional key repair operation can be enabled by setting do_repair. More...
 
#define user_nvm_ubsl_temp_protect_clear   ( (int32_t(*)(uint32_t)) addr_user_nvm_ubsl_temp_protect_clear )
 This user API function temporarily clears the write protection of the UBSL segment. More...
 
#define user_nvm_ubsl_temp_protect_set   ( (int32_t(*)(uint32_t)) addr_user_nvm_ubsl_temp_protect_set )
 This user API function temporarily sets the write protection of the UBSL segment. More...
 
#define user_secure_dualboot   ( (int32_t(*)(uint32_t)) addr_user_secure_dualboot )
 This user API function configures and enables the secondary UBSL image. More...
 

Typedefs

typedef struct user_100tp_read_t user_100tp_read_t
 
typedef struct user_100tp_write_t user_100tp_write_t
 
typedef struct user_key_t user_key_t
 Key data structure aligned with CFS page (ignored reserved bytes) More...
 
typedef enum user_crypto_fid_t user_crypto_fid_t
 
typedef struct user_crypto_inp_buf_t user_crypto_inp_buf_t
 
typedef struct user_crypto_out_buf_t user_crypto_out_buf_t
 
typedef struct user_crypto_io_buf_t user_crypto_io_buf_t
 
typedef struct user_crypto_cmac_t user_crypto_cmac_t
 
typedef struct user_crypto_cbc_t user_crypto_cbc_t
 
typedef struct user_key_write_params_t user_key_write_params_t
 
typedef struct user_key_write_t user_key_write_t
 
typedef struct user_key_erase_params_t user_key_erase_params_t
 
typedef struct user_key_erase_t user_key_erase_t
 
typedef struct user_nvm_page_write_t user_nvm_page_write_t
 
typedef enum user_cache_op_t user_cache_op_t
 
typedef enum user_nvm_segment_t user_nvm_segment_t
 

Enumerations

enum  user_crypto_fid_t { CRYPTO_ECB_ENCRYPT = 0 , CRYPTO_ECB_DECRYPT = 1 , CRYPTO_CBC_ENCRYPT = 2 , CRYPTO_CBC_DECRYPT = 3 }
 
enum  user_cache_op_t {
  CACHE_OP_AC = 0 , CACHE_OP_SC = 1 , CACHE_OP_BC = 2 , CACHE_OP_BT = 3 ,
  CACHE_OP_BL = 4 , CACHE_OP_BU = 5 , CACHE_OP_EN = 6 , CACHE_OP_DIS = 7
}
 
enum  user_nvm_segment_t { NVM_PASSWORD_SEGMENT_BOOT = 0 , NVM_PASSWORD_SEGMENT_CODE = 1 , NVM_PASSWORD_SEGMENT_DATA = 2 , NVM_PASSWORD_SEGMENT_TOTAL = 3 }