21.6.19 SPM
(Ask a Question)Description
"SPM" is a command tool used in configure_tool. To configure security using Tcl, you must use the configure_tool Tcl command to pass the SPM configuration parameters.
Note: At least one "parameter:value" must be specified. You can repeat
-params
argument for multiple parameters.configure_tool -name {SPM} -params {parameter:value}
Arguments
The following table list the "SPM" arguments for PolarFire.
Parameter | Type | Description |
---|---|---|
back_level_protection | boolean | The possible value for this argument are: true, 1 , false or 0. Specify true or 1 to set back level protection; Update Policy. |
debug_passkey | hexadecimal | Specify value of DPK, value must be 64 hex characters; Debug Policy. |
disable_authenticate_action | boolean | Disables Authenticate action. The possible value for this argument are: true, 1, false or 0. |
disable_autoprog_iap_services | boolean | Disables Auto Programming and IAP Services. The possible value for this argument are: true, 1, false or 0. |
disable_debug_jtag_boundary_scan | boolean | Disables debug JTAG Boundary Scan. The possible value for this argument are: true, 1, false or 0. |
disable_debug_read_temp_volt | boolean | Disables reading temperature and voltage sensor (JTAG/SPI Slave). The possible value for this argument are: true, 1, false or 0. |
disable_debug_ujtag | boolean | Disables debug; UJTAG. The possible value for this argument are: true, 1, false or 0. |
disable_ext_zeroization | boolean | Disables external zeroization through JTAG/SPI Slave. The possible value for this argument are: true, 1, false or 0. |
disable_external_digest_check | boolean | Disables external Fabric/sNVM digest requests through JTAG/SPI Slave. The possible value for this argument are: true, 1, false or 0. |
disable_jtag | boolean | Disables JTAG. The possible value for this argument are: true, 1, false or 0. |
disable_program_action | boolean | Disables Program action. The possible value for this argument are: true, 1, false or 0. |
disable_puf_emulation | boolean | Disables external access to PUF emulation through JTAG/SPI Slave The possible value for this argument are: true, 1, false or 0. |
disable_smartdebug_debug | boolean | Disables user debug access and active probes. The possible value for this argument are: true, 1, false or 0. |
disable_smartdebug_live_probe | boolean | Disables SmartDebug Live Probe. The possible value for this argument are: true, 1, false or 0. |
disable_smartdebug_snvm | boolean | Disables SmartDebug sNVM. The possible value for this argument are: true, 1, false or 0. |
disable_spi_slave | boolean | Disables SPI Slave interface. The possible value for this argument are: true, 1, false or 0. |
disable_user_encryption_key_1 | boolean | Disables UEK1; Key Mode Policy. The possible value for this argument are: true, 1, false or 0. |
disable_user_encryption_key_2 | boolean | Disables UEK2; Key Mode Policy. The possible value for this argument are: true, 1, false or 0. |
disable_verify_action | boolean | Disables Verify action. The possible value for this argument are: true, 1, false or 0. |
fabric_update_protection | string | Fabric update protection. The possible values for this argument are the following:
|
security_factory_access | string | Microchip factory test mode access. The possible values for this argument are the following:
|
security_key_mode | string | Key mode access. The possible values for this argument are the following:
|
snvm_update_protection | string | sNVM update protection. The possible values for this argument are the following:
|
user_encryption_key_1 | hexadecimal | Specify value of UEK1, value must be 64 hex characters. |
user_encryption_key_2 | hexadecimal | Specify value of UEK2, value must be 64 hex characters. |
user_passkey_1 | hexadecimal | Specify value of Flashlock/UPK1, value must be 64 hex characters. |
user_passkey_2 | hexadecimal | Specify value of Flashlock/UPK2, value must be 64 hex characters. |
The following table list the "SPM" arguments for SmartFusion 2 and IGLOO 2.
Parameter | Type | Description |
---|---|---|
back_level_bypass | boolean | The possible values for this argument are: true, 1 , false or 0. Specify true or 1 to bypass the back level protection; Update Policy. |
back_level_protection | boolean | The possible values for this argument are: true, 1 , false or 0. Specify true or 1 to set back level protection; Update Policy. |
back_level_update_version | integer | Specify back level version value between 0 and 65535; Update Policy. |
debug_cortex_m3 | boolean | The possible values for this argument are: true, 1 , false or 0. Specify true or 1 to disable Cortex M3 debug. This lock bit is protected by DPK; Debug Policy; SmartFusion 2 only. |
debug_digest_request | boolean | The possible value for this argument are: true, 1 , false or 0. Specify true or 1 to disable design digest check request via JTAG and SPI. Use FlashLock/UPK1 to allow digest check; Debug Policy. |
debug_disable_jtag | boolean | The possible values for this argument are: true, 1 , false or 0. Specify true or 1 to disable JTAG (1149.1) test instructions (HIGHZ, EXTEST, INTEST, CLAMP, SAMPLE, and PRELOAD). I/Os will be tri-stated when in JTAG programming mode. Use FlashLock/UPK1 to unlock; Debug Policy. |
debug_passkey | hexadecimal | Specify value of DPK, value must be 64 hex characters; Debug Policy. |
debug_ujtag_access | boolean | The possible values for this argument are: true, 1 , false or 0. Specify true or 1 to disable access to UJTAG. Use DPK to unlock; Debug Policy. |
disable_user_encryption_key_1 | boolean | The possible value for this argument are: true, 1 , false or 0. Specify true or 1 to disable UEK1; Key Mode Policy. |
disable_user_encryption_key_2 | boolean | The possible value for this argument are: true, 1 , false or 0. Specify true or 1 to disable UEK2; Key Mode Policy. |
disable_user_encryption_key_3 | boolean | Disables UEK3; Key Mode Policy. The possible values for this argument are: true, 1, false or
0. Note: UEK3 is only
available for M2S060, M2GL060, M2S090, M2GL090, M2S150, and
M2GL150 devices. All other devices will set this to false by
default. |
factory_access | string | Sets Microchip factory test mode access level. The possible values for this argument are the
following:
|
iap_isp_services | boolean | The possible value for this argument are: true, 1, false or 0. Specify true or 1 to disable access to IAP/ISP services; Update Policy. |
security_key_mode | string | Key mode access. The possible values for this argument are the following:
|
smartdebug_access | string | Debug Policy. The possible values for this argument are the following:
|
update_auto_prog_lock | boolean | Disables Auto Programming; Update Policy. The possible value for this argument are: true, 1, false or 0. |
update_envm_protection | string | Update Policy. The possible values for this argument are the following:
|
update_fabric_protection | string | Update Policy. The possible values for this argument are the following:
|
update_jtag_lock | boolean | Disables access to JTAG programming. Use FLashLock/UPK1 to unlock; Update Policy. The possible value for this argument are: true, 1, false or 0. |
update_spi_slave_lock | boolean | Disables access to SPI Slave. Use FLashLock/UPK1 to unlock; Update Policy. The possible value for this argument are: true, 1, false or 0. |
use_debug_policy | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to used Debug Policy. |
use_key_mode_policy | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to used Key Mode Policy. |
use_update_policy | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to used Update Policy. |
use_user_key_set_1 | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to enable User Key Set 1. |
use_user_key_set_2 | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to enable User Key Set 2. |
use_user_key_set_3 | boolean | The possible values for this argument are: true, 1, false or 0. Specify true or 1 to enable
User Key Set 3. Note: User Key Set 3 is only available for M2S060, M2GL060, M2S090,
M2GL090, M2S150, and M2GL150 devices. |
user_encryption_key_1 | hexadecimal | Specify value of UEK1, value must be 64 hex characters. |
user_encryption_key_2 | hexadecimal | Specify value of UEK2, value must be 64 hex characters. |
user_encryption_key_3 | hexadecimal | Specify value of UEK3, value must be 64 hex characters. Note: UEK3 is only available for M2S060, M2GL060, M2S090, M2GL090, M2S150, and M2GL150 devices. All other devices will set this to false by default. |
user_passkey_1 | hexadecimal | Specify value of Flashlock/UPK1, value must be 64 hex characters. |
user_passkey_2 | hexadecimal | Specify value of UPK2, value must be 64 hex characters. |
user_security_policy_protection | string | The possible values for this argument are the following:
|
Return Type | Description |
---|---|
Integer | Returns 0 on success and 1 on failure. |
Error Codes
Error Code | Description |
---|---|
None | Required parameter 'params' is missing. |
None | Key size is incorrect. |
Supported Families
Supported Families |
---|
PolarFire® |
PolarFire SoC |
SmartFusion® 2 |
IGLOO® 2 |
Example
The following example configures SPM for PolarFire:
configure_tool \
-name {SPM} \
-params {back_level_protection:false} \
-params {disable_smartdebug_live_probe:false} \
-params {disable_smartdebug_snvm:false} \
-params {disable_user_encryption_key_1:false} \
-params {disable_user_encryption_key_2:false}
The following example configures SPM for SmartFusion 2:
configure_tool \
-name {SPM} \
-params {back_level_bypass:false} \
-params {back_level_protection:false} \
-params {back_level_update_version: 32} \
-params {debug_cortex_m3:false} \
-params {debug_digest_request:false} \
-params {debug_disable_jtag:false} \
-params {debug_passkey:8A1081239567235A7453336CFBBC45668754SADDCAFA7010FA209F7396F3EA17} \
-params {debug_ujtag_access:false} \
-params {disable_user_encryption_key_1:false} \
-params {disable_user_encryption_key_2:false} \
-params {disable_user_encryption_key_3:false} \
-params {factory_access:flashlock} \
-params {iap_isp_services:true} \
-params {security_key_mode:custom} \
-params {smartdebug_access:full} \
-params {update_auto_prog_lock:true} \
-params {update_envm_protection:passkey} \
-params {update_fabric_protection:passkey} \
-params {update_jtag_lock:false} \
-params {update_spi_slave_lock:false} \
-params {use_debug_policy:false} \
-params {use_key_mode_policy:false} \
-params {use_update_policy:false} \
-params {use_user_key_set_1:true} \
-params {use_user_key_set_2:false} \
-params {use_user_key_set_3:false} \
-params {user_encryption_key_1:9E108123949848EC7453336DFBBC0CAE60C8541C2AFA7010FA209F7396F3EA17} \
-params {user_encryption_key_2:4D5656BA56541156C54E54563D2114BC45C854B456563010FA265F7396F3EA17} \
-params {user_encryption_key_3:CA5665B39498DAEC745355BDFB89535BA4A45DFC2AFA7010FA209F7396F3EA17} \
-params {user_passkey_1:252BED2AB1C4C5BAE13C4791CEDF7A069D940A6935629A0A9CE5B24E21C13D39} \
-params {user_passkey_2:B59EAD2356B66DAAE1654981BEA57A045653231CA5547A0A99AD254E234BCA39} \
-params {user_security_policy_protection:flashlock}