Merge pull request #3338 from karl-zh/RTT_TFM_PS_DEMO
Add TFM PS demo with RTT
This commit is contained in:
commit
b08d699e38
|
@ -1,11 +1,13 @@
|
|||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2019-2020, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2019-10-24 Magicoe first version
|
||||
* 2020-01-10 Kevin/Karl Add PS demo
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -16,8 +18,12 @@
|
|||
/* GPIO1_4 is Blue LED */
|
||||
#define LEDB_PIN GET_PINS(1, 4)
|
||||
|
||||
extern void protected_storage_demo_thread(void * parameters);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
rt_thread_t t_psa_ps_demo;
|
||||
|
||||
#if defined(__CC_ARM)
|
||||
rt_kprintf("using armcc, version: %d\n", __ARMCC_VERSION);
|
||||
#elif defined(__CLANG_ARM)
|
||||
|
@ -28,6 +34,14 @@ int main(void)
|
|||
rt_kprintf("using gcc, version: %d.%d\n", __GNUC__, __GNUC_MINOR__);
|
||||
#endif
|
||||
|
||||
t_psa_ps_demo = rt_thread_create("psa_ps_demo",
|
||||
protected_storage_demo_thread,
|
||||
RT_NULL,
|
||||
512,
|
||||
( RT_MAIN_THREAD_PRIORITY - 1),
|
||||
50);
|
||||
if (t_psa_ps_demo != RT_NULL) rt_thread_startup(t_psa_ps_demo);
|
||||
|
||||
rt_pin_mode(LEDB_PIN, PIN_MODE_OUTPUT); /* Set GPIO as Output */
|
||||
while (1)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* Copyright (c) 2019-2020, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-01-10 Kevin/Karl Add PS demo
|
||||
*
|
||||
*/
|
||||
|
||||
#include <rtdevice.h>
|
||||
#include <string.h>
|
||||
#include "tfm_ns_lock.h"
|
||||
#include "psa_protected_storage.h"
|
||||
|
||||
#define TEST_UID_A 2U
|
||||
#define ASSET_A "THEQUICKBROWNFOXJUMPSOVERALAZYDOG"
|
||||
#define ASSET_A_SIZE (sizeof( ASSET_A ) - 1)
|
||||
#define RESETDATA "THISIS"
|
||||
#define RESETDATA_SIZE (sizeof( RESETDATA ) - 1)
|
||||
#define READ_LENGTH (ASSET_A_SIZE > RESETDATA_SIZE ? \
|
||||
ASSET_A_SIZE : RESETDATA_SIZE)
|
||||
|
||||
void protected_storage_demo_thread(void * parameters)
|
||||
{
|
||||
psa_ps_status_t status;
|
||||
const psa_ps_uid_t uid = TEST_UID_A;
|
||||
const psa_ps_create_flags_t flags = PSA_PS_FLAG_NONE;
|
||||
uint8_t write_data[] = ASSET_A;
|
||||
const uint32_t data_length = ASSET_A_SIZE;
|
||||
uint8_t rewrite_data[] = RESETDATA;
|
||||
const uint32_t reset_data_length = RESETDATA_SIZE;
|
||||
uint8_t get_data[READ_LENGTH];
|
||||
uint32_t counter = 0;
|
||||
|
||||
tfm_ns_lock_init();
|
||||
|
||||
for ( ; ; )
|
||||
{
|
||||
/* Call TF-M protected storage service and set the asset. */
|
||||
status = psa_ps_set(uid, data_length, write_data, flags);
|
||||
if (status != PSA_PS_SUCCESS)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Set Round %ld] Fail\r\n", counter);
|
||||
for( ; ; );
|
||||
}
|
||||
|
||||
rt_kprintf("[Protected Storage Asset A Set Round %ld] Success\r\n", counter);
|
||||
|
||||
/* Read the asset. */
|
||||
status = psa_ps_get(uid, 0, data_length, get_data);
|
||||
if (status != PSA_PS_SUCCESS)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Fail\r\n", counter);
|
||||
for ( ; ; );
|
||||
}
|
||||
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Success\r\n", counter);
|
||||
|
||||
/* Check the read data. */
|
||||
if (memcmp(write_data, get_data, sizeof(write_data) - 1) != 0)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Get the wrong data\r\n", counter);
|
||||
for ( ; ; );
|
||||
}
|
||||
|
||||
/* Change the asset. */
|
||||
status = psa_ps_set(uid, reset_data_length, rewrite_data, flags);
|
||||
if (status != PSA_PS_SUCCESS)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Reset Round %ld] Fail\r\n", counter);
|
||||
}
|
||||
|
||||
rt_kprintf("[Protected Storage Asset A Reset Round %ld] Success\r\n", counter);
|
||||
|
||||
/* Read the asset. */
|
||||
status = psa_ps_get(uid, 0, reset_data_length, get_data);
|
||||
if (status != PSA_PS_SUCCESS)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Fail\r\n", counter);
|
||||
for ( ; ; );
|
||||
}
|
||||
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Success\r\n", counter);
|
||||
|
||||
/* Check the read data. */
|
||||
if (memcmp(rewrite_data, get_data, sizeof(rewrite_data) - 1) != 0)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Get Round %ld] Get the wrong data\r\n", counter);
|
||||
for ( ; ; );
|
||||
}
|
||||
|
||||
/* Remove the asset. */
|
||||
status = psa_ps_remove(uid);
|
||||
if (status != PSA_PS_SUCCESS)
|
||||
{
|
||||
rt_kprintf("[Protected Storage Asset A Remove Round %ld] Fail\r\n", counter);
|
||||
for ( ; ; );
|
||||
}
|
||||
|
||||
rt_kprintf("[Protected Storage Asset A Remove Round %ld] Success\r\n\n", counter);
|
||||
|
||||
/* Wait for a second. */
|
||||
rt_thread_mdelay(1000);
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
// end file
|
|
@ -370,6 +370,18 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\applications\tfm_ps.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tfm_ps.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
|
@ -1808,4 +1820,48 @@
|
|||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>TFM</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>131</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\packages\trusted-firmware-m-v1.0-beta\interface\src\tfm_sst_api.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tfm_sst_api.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>132</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\packages\trusted-firmware-m-v1.0-beta\interface\src\tfm_ns_lock_rt-thread.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tfm_ns_lock_rt-thread.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>133</FileNumber>
|
||||
<FileType>3</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\packages\trusted-firmware-m-v1.0-beta\cmake_build\install\export\tfm\veneers\s_veneers.o</PathWithFileName>
|
||||
<FilenameWithoutPath>s_veneers.o</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
|
|
|
@ -339,7 +339,7 @@
|
|||
<MiscControls>--target=arm-arm-none-eabi</MiscControls>
|
||||
<Define>CPU_LPC55S69JBD100_cm33_core0, RT_USING_ARM_LIBC, RT_USING_TFM</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>.;..\..\..\include;applications;board;board\MCUX_Config\board;..\Libraries\drivers;..\Libraries\drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\dfs\include;..\..\..\components\dfs\filesystems\devfs;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\spi;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\..\..\components\libc\compilers\armlibc;..\..\..\components\libc\compilers\common;..\Libraries\LPC55S6X\CMSIS\Include;..\Libraries\LPC55S6X\components\codec;..\Libraries\LPC55S6X\LPC55S6X;..\Libraries\LPC55S6X\LPC55S6X\drivers;..\Libraries\LPC55S6X\middleware\sdmmc\inc;..\Libraries\LPC55S6X\middleware\sdmmc\port</IncludePath>
|
||||
<IncludePath>.;..\..\..\include;applications;board;board\MCUX_Config\board;..\Libraries\drivers;..\Libraries\drivers\config;..\..\..\libcpu\arm\common;..\..\..\libcpu\arm\cortex-m4;..\..\..\components\dfs\include;..\..\..\components\dfs\filesystems\devfs;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\drivers\spi;..\..\..\components\drivers\include;..\..\..\components\drivers\include;..\..\..\components\finsh;..\..\..\components\libc\compilers\armlibc;..\..\..\components\libc\compilers\common;..\Libraries\LPC55S6X\CMSIS\Include;..\Libraries\LPC55S6X\components\codec;..\Libraries\LPC55S6X\LPC55S6X;..\Libraries\LPC55S6X\LPC55S6X\drivers;..\Libraries\LPC55S6X\middleware\sdmmc\inc;..\Libraries\LPC55S6X\middleware\sdmmc\port;.\packages\trusted-firmware-m-v1.0-beta\interface\include</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
|
@ -463,6 +463,11 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>applications\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tfm_ps.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\applications\tfm_ps.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -1144,6 +1149,26 @@
|
|||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>TFM</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>tfm_sst_api.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\packages\trusted-firmware-m-v1.0-beta\interface\src\tfm_sst_api.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tfm_ns_lock_rt-thread.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\packages\trusted-firmware-m-v1.0-beta\interface\src\tfm_ns_lock_rt-thread.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>s_veneers.o</FileName>
|
||||
<FileType>3</FileType>
|
||||
<FilePath>.\packages\trusted-firmware-m-v1.0-beta\cmake_build\install\export\tfm\veneers\s_veneers.o</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
|
Loading…
Reference in New Issue