summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2020-01-15 16:40:07 +0800
committerGitHub <[email protected]>2020-01-15 16:40:07 +0800
commitb08d699e38a10dec0a9e0fa6367fd3da1b3d5793 (patch)
treef91442b016910de594739c2c79b315129d893896
parentf390d79f1b36ff62ce0d6905ee8192e1fab4b9a6 (diff)
parentcd95e4cd59601034954870a42484dbc9ce533c40 (diff)
Merge pull request #3338 from karl-zh/RTT_TFM_PS_DEMO
Add TFM PS demo with RTT
-rw-r--r--bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c16
-rw-r--r--bsp/lpc55sxx/lpc55s69_nxp_evk/applications/tfm_ps.c110
-rw-r--r--bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvoptx56
-rw-r--r--bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvprojx27
4 files changed, 207 insertions, 2 deletions
diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c
index e03a8c6336..e0a2e3171f 100644
--- a/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c
+++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/main.c
@@ -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)
@@ -27,7 +33,15 @@ int main(void)
#elif defined(__GNUC__)
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)
{
diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/tfm_ps.c b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/tfm_ps.c
new file mode 100644
index 0000000000..2c99e47402
--- /dev/null
+++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/applications/tfm_ps.c
@@ -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
diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvoptx b/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvoptx
index 7f28d506da..b6a39c92b3 100644
--- a/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvoptx
+++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvoptx
@@ -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>
diff --git a/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvprojx b/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvprojx
index 4cfb8a82cd..26e8530af6 100644
--- a/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvprojx
+++ b/bsp/lpc55sxx/lpc55s69_nxp_evk/project_ns.uvprojx
@@ -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>