xilpuf
Vitis Drivers API Documentation
xilpuf_client_example.c File Reference

Overview

This file illustrates encryption of red key using PUF KEY and programming the black key and helper data in a user specified location To build this application, xilmailbox library must be included in BSP and xilsecure, xilnvm and xilpuf must be in client mode.

This example is supported for Versal and Versal Net devices.

Procedure to link and compile the example for the default ddr less designs

The default linker settings places a software stack, heap and data in DDR memory. For this example to work, any data shared between client running on A72/R5/PL and server running on PMC, should be placed in area which is accessible to both client and server.

Following is the procedure to compile the example on OCM or any memory region which can be accessed by server

           1. Open example linker script(lscript.ld) in Vitis project and section to memory mapping should
                   be updated to point all the required sections to shared memory(OCM or TCM)
                   using a memory region drop down selection

                                           OR

           1. In linker script(lscript.ld) user can add new memory section in source tab as shown below
                   .sharedmemory : {
                   . = ALIGN(4);
                   __sharedmemory_start = .;
                   *(.sharedmemory)
                   *(.sharedmemory.*)
                   *(.gnu.linkonce.d.*)
                   __sharedmemory_end = .;
                   } > versal_cips_0_pspmc_0_psv_ocm_ram_0_psv_ocm_ram_0

           2. In this example ".data" section elements that are passed by reference to the server-side should
              be stored in the above shared memory section. To make it happen in below example,
              replace ".data" in attribute section with ".sharedmemory". For example,
   static XPuf_DataAddr PufData __attribute__ ((aligned (64U)) __attribute__ ((section (".data.PufData")));
                                   should be changed to
   static XPuf_DataAddr PufData __attribute__ ((aligned (64U)) __attribute__ ((section (".sharedmemory.PufData")));

To keep things simple, by default the cache is disabled for this example

 MODIFICATION HISTORY:
 Ver   Who   Date     Changes


1.0 kpt 01/04/22 Initial release kpt 01/13/22 Added support to run example on PL microblaze har 01/20/22 Removed inclusion of xil_mem.h har 03/04/22 Added comment to specify mode of libraries kpt 03/16/22 Removed IPI related code and added mailbox support kpt 04/08/22 Added comment on usage of shared memory 2.1 skg 12/14/22 Added SSIT Provisioning support am 04/13/23 Fix PUF auxiliary convergence error 2.2 am 05/03/23 Added KAT before crypto usage vek 05/31/23 Added support for Programming PUF secure control bits vss 11/22/23 Added header file required for SDT flow

Note