Build: Add psa_framework_version attribute

- Add "psa_framework_version" attribute in manifest files.
- Support psa_framework_version check.

Change-Id: I1b2a9bb63124bf8f45ac93c95bb8fdb687f9561f
Signed-off-by: Edison Ai <edison.ai@arm.com>
diff --git a/secure_fw/spm/spm_api_ipc.c b/secure_fw/spm/spm_api_ipc.c
index 987002f..7b08682 100644
--- a/secure_fw/spm/spm_api_ipc.c
+++ b/secure_fw/spm/spm_api_ipc.c
@@ -489,6 +489,14 @@
     /* Init partition first for it will be used when init service */
     for (i = 0; i < g_spm_partition_db.partition_count; i++) {
         partition = &g_spm_partition_db.partitions[i];
+
+        /* Check if the PSA framework version matches. */
+        if (partition->static_data->psa_framework_version !=
+            PSA_FRAMEWORK_VERSION) {
+            ERROR_MSG("Warning: PSA Framework Verison is not matched!");
+            continue;
+        }
+
         tfm_spm_hal_configure_default_isolation(partition->platform_data);
         if ((tfm_spm_partition_get_flags(i) & SPM_PART_FLAG_IPC) == 0) {
             continue;
diff --git a/secure_fw/spm/spm_db.h b/secure_fw/spm/spm_db.h
index 34e9693..14e5074 100644
--- a/secure_fw/spm/spm_db.h
+++ b/secure_fw/spm/spm_db.h
@@ -34,6 +34,9 @@
  * phase.
  */
 struct spm_partition_static_data_t {
+#ifdef TFM_PSA_API
+    uint32_t psa_framework_version;
+#endif /* defined(TFM_PSA_API) */
     uint32_t partition_id;
     uint32_t partition_flags;
     uint32_t partition_priority;