xilskey
Vitis Drivers API Documentation
EFUSE PL

Functions

u32 XilSKey_EfusePl_SystemInit (XilSKey_EPl *InstancePtr)
 Initializes PL eFUSE with input data given. More...
 
u32 XilSKey_EfusePl_Program (XilSKey_EPl *InstancePtr)
 Programs PL eFUSE with input data given through InstancePtr. More...
 
u32 XilSKey_EfusePl_ReadStatus (XilSKey_EPl *InstancePtr, u32 *StatusBits)
 Reads the PL efuse status bits and gets all secure and control bits. More...
 
u32 XilSKey_EfusePl_ReadKey (XilSKey_EPl *InstancePtr)
 Reads the PL efuse keys and stores them in the corresponding arrays in instance structure. More...
 

Function Documentation

u32 XilSKey_EfusePl_Program ( XilSKey_EPl InstancePtr)

Programs PL eFUSE with input data given through InstancePtr.

Parameters
InstancePtr- Pointer to PL eFUSE instance which holds the input data to be written to PL eFUSE.
Returns
  • XST_FAILURE - In case of failure
  • XST_SUCCESS - In case of Success
Note
When this API is called: Initializes the timer, XADC/xsysmon and JTAG server subsystems. Returns an error in the following cases, if the reference clock frequency is not in the range or if the PL DAP ID is not identified, if the system is not in a position to write the requested PL eFUSE bits (because the bits are already written or not allowed to write) if the temperature and voltage are not within range.

Start using the Jtag server to read the JTAG ID and compare with the stored ID, if it not matches return with unique error code. By reading the Jtag ID we will be sure that the JTAG related stuff is working as expected.

If everything is ok then return PASS.

Referenced by main().

u32 XilSKey_EfusePl_ReadKey ( XilSKey_EPl InstancePtr)

Reads the PL efuse keys and stores them in the corresponding arrays in instance structure.

Parameters
InstancePtrPointer to PL eFUSE instance.
Returns
  - XST_FAILURE - In case of failure
  - XST_SUCCESS - In case of Success
Note
This function initializes the timer, XADC and JTAG server subsystems, if not already done so. In Zynq - Reads AES key and User keys. In Ultrascale - Reads 32 bit and 128 bit User keys and RSA hash But AES key cannot be read directly it can be verified with CRC check (for that we need to update the instance with 32 bit CRC value, API updates whether provided CRC value is matched with actuals or not). To calculate the CRC of expected AES key one can use any of the following APIs XilSKey_CrcCalculation() or XilSkey_CrcCalculation_AesKey()

Referenced by XilSKey_EfusePl_ReadnCheck().

u32 XilSKey_EfusePl_ReadStatus ( XilSKey_EPl InstancePtr,
u32 *  StatusBits 
)

Reads the PL efuse status bits and gets all secure and control bits.

Parameters
InstancePtrPointer to PL eFUSE instance.
StatusBitsBuffer to store the status bits read.
Returns
  - XST_FAILURE - In case of failure
  - XST_SUCCESS - In case of Success

Referenced by XilSKey_EfusePl_ReadnCheck().

u32 XilSKey_EfusePl_SystemInit ( XilSKey_EPl InstancePtr)

Initializes PL eFUSE with input data given.

Parameters
InstancePtr- Input data to be written to PL eFUSE
Returns
  - XST_FAILURE - In case of failure
  - XST_SUCCESS - In case of Success
Note
Updates the global variable ErrorCode with error code(if any).

Start using the Jtag server to read the JTAG ID and compare with the stored ID, if it not matches return with unique error code. By reading the Jtag ID we will be sure that the JTAG related stuff is working as expected.

If everything is ok then return PASS.

References XSK_EFUSEPL_ERROR_PL_STRUCT_NULL.

Referenced by main().