diff --git a/CMakeLists.txt b/CMakeLists.txt index 310c9a4..f569ce7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,9 +59,12 @@ write_basic_package_version_file(FCS.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion) -add_subdirectory(third_party) add_subdirectory(include) add_subdirectory(lib) -add_subdirectory(app) + +if(${ARCH} STREQUAL linux_aarch64) + add_subdirectory(third_party) + add_subdirectory(app) +endif() add_subdirectory(toolchain) diff --git a/cmake/arch.cmake b/cmake/arch.cmake index 507c33a..c24e1c2 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -8,4 +8,4 @@ if (NOT DEFINED ARCH) endif () # Setup platform toolchain file. -include(${CMAKE_SOURCE_DIR}/toolchain/${ARCH}/toolchain.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/toolchain/${ARCH}/toolchain.cmake) diff --git a/cmake/os.cmake b/cmake/os.cmake index 75edf74..facbe04 100644 --- a/cmake/os.cmake +++ b/cmake/os.cmake @@ -8,4 +8,4 @@ if (NOT DEFINED OS) endif () # Setup platform toolchain file. -include(${CMAKE_SOURCE_DIR}/toolchain/${OS}/toolchain.cmake) +include(${CMAKE_CURRENT_SOURCE_DIR}/toolchain/${OS}/toolchain.cmake) diff --git a/lib/include/os/freertos/CMakeLists.txt b/lib/include/os/freertos/CMakeLists.txt new file mode 100644 index 0000000..2092a87 --- /dev/null +++ b/lib/include/os/freertos/CMakeLists.txt @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: MIT-0 +# Copyright (C) 2025 Altera + +if(NOT DEFINED FREERTOS_TOOLCHAIN) + message(FATAL_ERROR "not building inside inside FreeRTOS") +endif() +set(SHARED_LIB OFF) +set(OS freertos) + diff --git a/lib/src/common/libfcs.c b/lib/src/common/libfcs.c index 26ee024..5c20aeb 100644 --- a/lib/src/common/libfcs.c +++ b/lib/src/common/libfcs.c @@ -2937,7 +2937,7 @@ static FCS_OSAL_INT fcs_fit_image_hash_verify(FCS_OSAL_UUID *session_uuid, FCS_OSAL_SIZE cal_hash_size = FCS_SHA_384_DIGEST_SIZE; struct fcs_digest_get_req get_digest_req; - cal_hash = (FCS_OSAL_CHAR *)malloc(FCS_SHA_384_DIGEST_SIZE); + cal_hash = (FCS_OSAL_CHAR *)fcs_malloc(FCS_SHA_384_DIGEST_SIZE); if (!cal_hash) { FCS_LOG_ERR("Error in allocating memory for image hash\n"); return -ENOMEM; diff --git a/lib/src/os/freertos/CMakeLists.txt b/lib/src/os/freertos/CMakeLists.txt new file mode 100644 index 0000000..2092a87 --- /dev/null +++ b/lib/src/os/freertos/CMakeLists.txt @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: MIT-0 +# Copyright (C) 2025 Altera + +if(NOT DEFINED FREERTOS_TOOLCHAIN) + message(FATAL_ERROR "not building inside inside FreeRTOS") +endif() +set(SHARED_LIB OFF) +set(OS freertos) + diff --git a/toolchain/freertos_aarch64/CMakeLists.txt b/toolchain/freertos_aarch64/CMakeLists.txt new file mode 100644 index 0000000..51cc910 --- /dev/null +++ b/toolchain/freertos_aarch64/CMakeLists.txt @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: MIT-0 +# Copyright (C) 2025 Altera + +cmake_minimum_required(VERSION 3.20) + +add_subdirectory(include) + diff --git a/toolchain/freertos_aarch64/include/CMakeLists.txt b/toolchain/freertos_aarch64/include/CMakeLists.txt new file mode 100644 index 0000000..9696045 --- /dev/null +++ b/toolchain/freertos_aarch64/include/CMakeLists.txt @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: MIT-0 +# Copyright (C) 2025 Altera + +target_include_directories(FCS PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") + diff --git a/toolchain/freertos_aarch64/include/libfcs_osal_types.h b/toolchain/freertos_aarch64/include/libfcs_osal_types.h new file mode 100644 index 0000000..6a82716 --- /dev/null +++ b/toolchain/freertos_aarch64/include/libfcs_osal_types.h @@ -0,0 +1,113 @@ +/* SPDX-License-Identifier: MIT-0 */ +/* + * Copyright (C) 2025 Altera + */ + +/** + * + * @file fcs_osal_types.h + * @brief contains OS abstraction layer data types for linux_aarch64 platform. + */ + +#ifndef FCS_OSAL_TYPES_H +#define FCS_OSAL_TYPES_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +#include +#include +#include "osal.h" + +#define FCS_OSAL_UUID_SIZE (16U) +#define FCS_AES_CRYPT_BLOCK_SIZE (16U) + +#define FCS_AES_BLOCK_MODE_ECB 0 +#define FCS_AES_BLOCK_MODE_CBC 1 +#define FCS_AES_BLOCK_MODE_CTR 2 +#define FCS_AES_BLOCK_MODE_GCM 3 +#define FCS_AES_BLOCK_MODE_GHASH 4 + +#define FCS_AES_GCM_MAX_AAD_SIZE 65535 +#define FCS_AES_GCM_TAG_SIZE 3 + +#define FCS_AES_IV_SOURCE_INTERNAL 1 +#define FCS_AES_IV_SOURCE_EXTERNAL 0 + +#define FCS_AES_ENCRYPT 0 +#define FCS_AES_DECRYPT 1 + +#define FCS_ECC_CURVE_NIST_P256 1 +#define FCS_ECC_CURVE_NIST_P384 2 +#define FCS_ECC_CURVE_BRAINPOOL_P256 3 +#define FCS_ECC_CURVE_BRAINPOOL_P384 4 + +#define FCS_ECDH_P256_PUBKEY_LEN 64 +#define FCS_ECDH_P384_PUBKEY_LEN 96 +#define FCS_ECDH_BP256_PUBKEY_LEN 64 +#define FCS_ECDH_BP384_PUBKEY_LEN 96 +#define FCS_ECDH_P256_SECRET_LEN 32 +#define FCS_ECDH_P384_SECRET_LEN 48 +#define FCS_ECDH_BP256_SECRET_LEN 32 +#define FCS_ECDH_BP384_SECRET_LEN 48 + +#define FCS_SHA_384 1 +#define FCS_SHA_384_DIGEST_SIZE 48 +#define FCS_CERT_LEN_PARAM_SZ sizeof(uint32_t) + +/** unsigned 64 bit*/ +typedef uint64_t FCS_OSAL_U64; +/** unsigned 32 bit*/ +typedef uint32_t FCS_OSAL_U32; +/** unsigned 16 bit*/ +typedef uint16_t FCS_OSAL_U16; +/** unsigned 8 bit*/ +typedef uint8_t FCS_OSAL_U8; + +/** signed 64 bit*/ +typedef int64_t FCS_OSAL_S64; +/** signed 32 bit*/ +typedef int32_t FCS_OSAL_S32; +/** unsigned 16 bit*/ +typedef int16_t FCS_OSAL_S16; +/** unsigned 8 bit*/ +typedef int8_t FCS_OSAL_S8; + +/** void type*/ +typedef void FCS_OSAL_VOID; +/** character data type*/ +typedef char FCS_OSAL_CHAR; +/** Unsigned character data type*/ +typedef unsigned char FCS_OSAL_UCHAR; +/** boolean data type*/ +typedef bool FCS_OSAL_BOOL; + +/** integer data type*/ +typedef int FCS_OSAL_INT; +/** unsigned integer data type*/ +typedef unsigned int FCS_OSAL_UINT; +/** data type to denote offset */ +typedef int FCS_OSAL_OFFSET; +/** data type to denote size*/ +typedef size_t FCS_OSAL_SIZE; + +/** mutex object type*/ +typedef SemaphoreHandle_t FCS_OSAL_MUTEX; +/** file object type*/ +typedef char* FCS_OSAL_FILE; +/** integer data type uuid for session ids*/ +typedef char FCS_OSAL_UUID; + +// TODO: which data type +typedef int FCS_OSAL_ERROR; + +// TODO: which data type +typedef int FCS_OSAL_RSIZE; + +typedef uintptr_t FCS_OSAL_UINTPTR; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/toolchain/freertos_aarch64/toolchain.cmake b/toolchain/freertos_aarch64/toolchain.cmake new file mode 100644 index 0000000..66bcf96 --- /dev/null +++ b/toolchain/freertos_aarch64/toolchain.cmake @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: MIT-0 +# Copyright (C) 2025 Altera + +if(NOT DEFINED FREERTOS_TOOLCHAIN) + message(FATAL_ERROR "not building inside inside FreeRTOS") +endif() +set(SHARED_LIB OFF) +set(OS freertos)