Hi
I am using the LPCXpresso55S69-EVK board and have some questions regarding PUF and the activation code. I run the example script named "lpcxpresso55s69_puf".
1) During the PUF_Enroll statement, a device specific AC is generated. In the AN12324 it states that "The AC can be stored into the RAM or flash memory for further usage". Am I right that the AC is ALWAYS automatically stored in the PFR? And if I want it in RAM, I have to store it there extra?
2) The PUF_Enroll command is/should only be done once. So, lets say I have enrolled the PUF periphery and the AC is stored in the PFR. Now, I want to use the PUF, so I have to PUF_Start it and give the PUF periphery the activation code. How do I do that?
In the example provided, the AC is stored into a variable in RAM during the enrollment process, which is then reused for the PUF_Start. But in the described case, there would be no variable in RAM containing the AC. I would need to get it from the PFR. I found an API function for that: FFR_KeystoreGetAC. But this gives me just 0es and thus cannot start the PUF periphery...
3) Regarding the FFR_KeystoreGetAC command. In the UM11126 there is the following remark: "Check if the flash aperture is small or regular and read the data appropriately".
So I could read out the aperture of my device by reading at address 0x40034FFC. The aperture-byte is 0, which, according to the UM, means that I have an aperture of 4K. But what is aperture exactly? Is 4K small or regular? And how can I adjust the FFR_KeystoreGetAC command accordingly to an aperture?
So, my code looks approximately as this:
flash_config_t flashConfig;
uint8_t AC[1192];
status_t Status;
puf_config_t conf;
status_t result;
Status=FLASH_Init(&flashConfig);
Status=FFR_Init(&flashConfig);
Status=FFR_KeystoreGetAC(&flashConfig, (uint8_t *) AC); //AC consists of 1192 x 0
PUF_GetDefaultConfig(&conf);
result=PUF_Init(PUF,&conf);
result=PUF_Start(PUF, AC, sizeof(AC));
******* here the variable "result" holds the statement, that there was an error during start *******