Hi @vchong,
I will give a try with the 2.4.0. Thanks for the update.
For the storage issue I just wrote the below mentioned code in the Hello World TA just to verify how to
For RPMB build I did the following
…/optee_client/tee-supplicant/Makefile
commented RPMB_EMU := 1
…/optee_os/mk/config.mk
set CFG_REE_FS ?= n
set CFG_RPMB_FS ?= y
set CFG_RPMB_WRITE_KEY ?= y
For REE FS build I did the following
…/optee_client/tee-supplicant/Makefile
RPMB_EMU := 1
…/optee_os/mk/config.mk
set CFG_REE_FS ?= y
set CFG_RPMB_FS ?= n
set CFG_RPMB_WRITE_KEY ?= n
For both the cases with RPMB and without RPMB the file writing and reading is OK but the file is erased after reboot.
After flash executing hello world: In this case file is not present due to flash
ERROR: USER-TA: Failed to open persistent object, res=0xffff0008
DEBUG: USER-TA:inc_value:172: Calling TEE_CreatePersistentObject
DEBUG: USER-TA:inc_value:209: TEE_WriteObjectData SUCCESS
DEBUG: USER-TA:inc_value:233: TEE_ReadObjectData SUCCESS data=Test write using write data. rbytes=28:28
2nd time executing hello world after flash : In this case file is not created as it is present
DEBUG: USER-TA:inc_value:191: TEE_OpenPersistentObject SUCCESS file= FileTest
DEBUG: USER-TA:inc_value:209: TEE_WriteObjectData SUCCESS
DEBUG: USER-TA:inc_value:233: TEE_ReadObjectData SUCCESS data=Test write using write data. rbytes=28:28
Executing hello world after reboot : In is case file is not present though the file was there before reboot
ERROR: USER-TA: Failed to open persistent object, res=0xffff0008
DEBUG: USER-TA:inc_value:172: Calling TEE_CreatePersistentObject
DEBUG: USER-TA:inc_value:209: TEE_WriteObjectData SUCCESS
DEBUG: USER-TA:inc_value:233: TEE_ReadObjectData SUCCESS data=Test write using write data. rbytes=28:28
##======Code added inside hello world TA==========
//Storage related APIs
DMSG(“Starting STORAGE TEST”);
res = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE,
filename, sizeof(filename),
TEE_DATA_FLAG_ACCESS_READ |
TEE_DATA_FLAG_ACCESS_WRITE |
TEE_DATA_FLAG_ACCESS_WRITE_META |
TEE_DATA_FLAG_OVERWRITE,
&object);
if (res != TEE_SUCCESS) {
EMSG(“Failed to open persistent object, res=0x%08x”, res);
DMSG(“Calling TEE_CreatePersistentObject”);
res = TEE_CreatePersistentObject(TEE_STORAGE_PRIVATE,
filename, sizeof(filename),
TEE_DATA_FLAG_ACCESS_READ |
TEE_DATA_FLAG_ACCESS_WRITE |
TEE_DATA_FLAG_ACCESS_WRITE_META |
TEE_DATA_FLAG_OVERWRITE,
NULL, NULL, 0, &object);
if (res != TEE_SUCCESS) {
EMSG(“Failed to create persistent object, res=0x%08x”, res);
}
else {
DMSG(“Successfully created file %s”, filename);
TEE_CloseObject( object);
}
}
else
{
DMSG(“TEE_OpenPersistentObject SUCCESS file= %s”, filename);
TEE_CloseObject( object);
}
res = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE,
filename, sizeof(filename),
TEE_DATA_FLAG_ACCESS_READ |
TEE_DATA_FLAG_ACCESS_WRITE |
TEE_DATA_FLAG_ACCESS_WRITE_META |
TEE_DATA_FLAG_OVERWRITE,
&object);
if (res == TEE_SUCCESS)
{
size = 28;
memcpy(buffer, "Test write using write data.",28 );
res = TEE_WriteObjectData( object, buffer, size );
if (res == TEE_SUCCESS){
DMSG("TEE_WriteObjectData SUCCESS");
}
else {
DMSG("TEE_WriteObjectData FAILED res=%d",res);
}
TEE_CloseObject( object);
}
else
{
DMSG("TEE_OpenPersistentObject for writing FAILED res=%d",res);
}
res = TEE_OpenPersistentObject(TEE_STORAGE_PRIVATE,
filename, sizeof(filename),
TEE_DATA_FLAG_ACCESS_READ |
TEE_DATA_FLAG_ACCESS_WRITE |
TEE_DATA_FLAG_ACCESS_WRITE_META |
TEE_DATA_FLAG_OVERWRITE,
&object);
if (res == TEE_SUCCESS)
{
size = 28;
res = TEE_ReadObjectData( object, &readbuffer, size, &count );
if (res == TEE_SUCCESS){
DMSG("TEE_ReadObjectData SUCCESS data=%s rbytes=%d:%d",readbuffer,count, size);
}
else {
DMSG("TEE_ReadObjectData FAILED res=%d",res);
}
TEE_CloseObject( object);
}
else
{
DMSG("TEE_OpenPersistentObject for reading FAILED res=%d",res);
}
DMSG("Done with STORAGE TEST");
Thanks,
Rabi