summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--scripts/cmake/platforms/native/build_configuration.cmake1
-rw-r--r--source/hal/CMakeLists.txt37
-rw-r--r--source/hal/cmsis_device/include/irqs.h13
-rw-r--r--source/hal/cmsis_device/source/irqs.c53
-rw-r--r--source/hal/hal.c17
-rw-r--r--source/hal/include/hal.h3
-rw-r--r--source/hal/platform/mps3/CMakeLists.txt29
-rw-r--r--source/hal/platform/mps3/include/platform_drivers.h41
-rw-r--r--source/hal/platform/mps3/include/timer_mps3.h12
-rw-r--r--source/hal/platform/mps3/source/device_mps3.c6
-rw-r--r--source/hal/platform/mps3/source/include/device_mps3.h (renamed from source/hal/platform/mps3/include/device_mps3.h)3
-rw-r--r--source/hal/platform/mps3/source/include/smm_mps3.h (renamed from source/hal/platform/mps3/include/smm_mps3.h)5
-rw-r--r--source/hal/platform/mps3/source/platform_drivers.c (renamed from source/hal/profiles/bare-metal/utils/system_init.c)75
-rw-r--r--source/hal/platform/mps3/source/timer_mps3.c64
-rw-r--r--source/hal/platform/native/CMakeLists.txt56
-rw-r--r--source/hal/platform/native/include/platform_drivers.h (renamed from source/hal/profiles/native/utils/include/system_init.h)33
-rw-r--r--source/hal/platform/native/source/platform_drivers.c (renamed from source/hal/profiles/native/utils/system_init.c)11
-rw-r--r--source/hal/platform/simple/CMakeLists.txt3
-rw-r--r--source/hal/platform/simple/include/platform_drivers.h36
-rw-r--r--source/hal/platform/simple/include/stubs/glcd.h12
-rw-r--r--source/hal/platform/simple/include/timer_simple_platform.h7
-rw-r--r--source/hal/platform/simple/source/platform_drivers.c45
-rw-r--r--source/hal/platform/simple/source/stubs_glcd.c9
-rw-r--r--source/hal/platform/simple/source/timer_simple_platform.c71
-rw-r--r--source/hal/profiles/bare-metal/data_acquisition/data_acq.c5
-rw-r--r--source/hal/profiles/bare-metal/data_presentation/lcd/lcd_img.c1
-rw-r--r--source/hal/profiles/bare-metal/timer/platform_timer.c3
-rw-r--r--source/hal/profiles/bare-metal/utils/include/system_init.h43
-rw-r--r--source/profiler/CMakeLists.txt5
30 files changed, 453 insertions, 248 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 14ec1aa..bbd7756 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -236,4 +236,4 @@ foreach(use_case ${USE_CASES})
endforeach()
-print_useroptions() \ No newline at end of file
+print_useroptions()
diff --git a/scripts/cmake/platforms/native/build_configuration.cmake b/scripts/cmake/platforms/native/build_configuration.cmake
index bc91804..63f9491 100644
--- a/scripts/cmake/platforms/native/build_configuration.cmake
+++ b/scripts/cmake/platforms/native/build_configuration.cmake
@@ -22,6 +22,7 @@ function(set_platform_global_defaults)
CACHE FILEPATH "Toolchain file")
endif()
+ set(PLATFORM_DRIVERS_DIR "${HAL_PLATFORM_DIR}/native" PARENT_SCOPE)
set(TEST_TPIP ${DOWNLOAD_DEP_DIR}/test)
file(MAKE_DIRECTORY ${TEST_TPIP})
diff --git a/source/hal/CMakeLists.txt b/source/hal/CMakeLists.txt
index ea19de5..0d844b2 100644
--- a/source/hal/CMakeLists.txt
+++ b/source/hal/CMakeLists.txt
@@ -43,8 +43,7 @@ set(PLATFORM_PROFILE_DIR profiles/${PLATFORM_PROFILE})
target_include_directories(${HAL_TARGET}
PUBLIC
include
- ${PLATFORM_PROFILE_DIR}/timer/include
- ${PLATFORM_PROFILE_DIR}/utils/include)
+ ${PLATFORM_PROFILE_DIR}/timer/include)
## Common sources for all profiles
target_sources(${HAL_TARGET}
@@ -52,8 +51,7 @@ target_sources(${HAL_TARGET}
hal.c
${PLATFORM_PROFILE_DIR}/data_presentation/data_psn.c
${PLATFORM_PROFILE_DIR}/data_acquisition/data_acq.c
- ${PLATFORM_PROFILE_DIR}/timer/platform_timer.c
- ${PLATFORM_PROFILE_DIR}/utils/system_init.c)
+ ${PLATFORM_PROFILE_DIR}/timer/platform_timer.c)
if (DEFINED VERIFY_TEST_OUTPUT)
message(STATUS "Test output verification flag is: ${VERIFY_TEST_OUTPUT}")
@@ -61,13 +59,14 @@ if (DEFINED VERIFY_TEST_OUTPUT)
VERIFY_TEST_OUTPUT=${VERIFY_TEST_OUTPUT})
endif ()
+if (NOT DEFINED PLATFORM_DRIVERS_DIR)
+ message(FATAL_ERROR "PLATFORM_DRIVERS_DIR need to be defined for this target")
+endif()
+
+
############################ bare-metal profile #############################
if (PLATFORM_PROFILE STREQUAL bare-metal)
- if (NOT DEFINED PLATFORM_DRIVERS_DIR)
- message(FATAL_ERROR "PLATFORM_DRIVERS_DIR need to be defined for this target")
- endif()
-
## Additional include directories - public
target_include_directories(${HAL_TARGET}
PUBLIC
@@ -96,15 +95,6 @@ if (PLATFORM_PROFILE STREQUAL bare-metal)
# Add dependencies for platform_driver first, in case they are needed by it.
add_subdirectory(cmsis_device ${CMAKE_BINARY_DIR}/cmsis_device)
- # Add platform-drivers target
- add_subdirectory(${PLATFORM_DRIVERS_DIR} ${CMAKE_BINARY_DIR}/platform_driver)
-
- # Link time library targets:
- target_link_libraries(${HAL_TARGET}
- PUBLIC
- log
- platform-drivers)
-
# If Ethos-U is enabled, we need the driver library too
if (ETHOS_U_NPU_ENABLED)
@@ -172,6 +162,7 @@ if (PLATFORM_PROFILE STREQUAL bare-metal)
############################ native profile #############################
elseif (PLATFORM_PROFILE STREQUAL native)
+
## Additional include directories - private
target_include_directories(${HAL_TARGET}
PRIVATE
@@ -187,12 +178,16 @@ elseif (PLATFORM_PROFILE STREQUAL native)
PUBLIC
PLATFORM_HAL=PLATFORM_UNKNOWN_LINUX_OS
ACTIVATION_BUF_SRAM_SZ=0)
+endif()
- target_link_libraries(${HAL_TARGET}
- PUBLIC
- log)
+# Add platform-drivers target
+add_subdirectory(${PLATFORM_DRIVERS_DIR} ${CMAKE_BINARY_DIR}/platform_driver)
-endif()
+# Link time library targets:
+target_link_libraries(${HAL_TARGET}
+ PUBLIC
+ log
+ platform-drivers)
# Display status:
message(STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR})
diff --git a/source/hal/cmsis_device/include/irqs.h b/source/hal/cmsis_device/include/irqs.h
index 5ddda97..234edd7 100644
--- a/source/hal/cmsis_device/include/irqs.h
+++ b/source/hal/cmsis_device/include/irqs.h
@@ -32,19 +32,6 @@ typedef void (*const irq_vec_type)(void);
**/
extern void Reset_Handler(void);
-/**
- * @brief Gets the system tick triggered cycle counter for the CPU.
- * @return 64-bit counter value.
- **/
-extern uint64_t Get_SysTick_Cycle_Count(void);
-
-/**
- * @brief Initialises the system tick registers.
- * @return Error code return from sys tick configuration function
- * (0 = no error).
- **/
-extern int Init_SysTick(void);
-
#ifdef __cplusplus
}
#endif
diff --git a/source/hal/cmsis_device/source/irqs.c b/source/hal/cmsis_device/source/irqs.c
index 7d8aa06..2ecd4d5 100644
--- a/source/hal/cmsis_device/source/irqs.c
+++ b/source/hal/cmsis_device/source/irqs.c
@@ -25,8 +25,6 @@ extern "C"
#include <stdio.h>
#include <inttypes.h>
-static uint64_t cpu_cycle_count = 0;
-
/**
* External references
*/
@@ -165,24 +163,9 @@ __attribute__((weak)) void PendSV_Handler(void)
/**
* @brief System tick interrupt handler.
**/
-void SysTick_Handler(void)
-{
- /* Increment the cycle counter based on load value. */
- cpu_cycle_count += SysTick->LOAD + 1;
-}
-
-/**
- * Gets the current SysTick derived counter value
- */
-uint64_t Get_SysTick_Cycle_Count(void)
+__attribute__((weak)) void SysTick_Handler(void)
{
- uint32_t systick_val;
-
- NVIC_DisableIRQ(SysTick_IRQn);
- systick_val = SysTick->VAL & SysTick_VAL_CURRENT_Msk;
- NVIC_EnableIRQ(SysTick_IRQn);
-
- return cpu_cycle_count + (SysTick->LOAD - systick_val);
+ DEFAULT_IRQ_HANDLER_CALL();
}
/**
@@ -218,44 +201,12 @@ irq_vec_type __VECTOR_TABLE[] __VECTOR_TABLE_ATTRIBUTE = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 112 - 128 */
};
-/**
- * SysTick initialisation
- */
-int Init_SysTick(void)
-{
- const uint32_t ticks_10ms = GetSystemCoreClock()/100 + 1;
- int err = 0;
-
- /* Reset CPU cycle count value. */
- cpu_cycle_count = 0;
-
- /* Changing configuration for sys tick => guard from being
- * interrupted. */
- NVIC_DisableIRQ(SysTick_IRQn);
-
- /* SysTick init - this will enable interrupt too. */
- err = SysTick_Config(ticks_10ms);
-
- /* Enable interrupt again. */
- NVIC_EnableIRQ(SysTick_IRQn);
-
- /* Wait for SysTick to kick off */
- while (!err && !SysTick->VAL) {
- __NOP();
- }
-
- return err;
-}
-
/* Reset handler - starting point of our application. */
__attribute__((used)) void Reset_Handler(void)
{
/* Initialise system. */
SystemInit();
- /* Configure the system tick. */
- Init_SysTick();
-
/* cmsis supplied entry point. */
__PROGRAM_START();
}
diff --git a/source/hal/hal.c b/source/hal/hal.c
index ff470d5..d78ac95 100644
--- a/source/hal/hal.c
+++ b/source/hal/hal.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,14 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "hal.h" /* API */
+#include "hal.h" /* API */
-#include "hal_config.h" /* HAL configuration */
-#include "system_init.h"
-#include "log_macros.h"
+#include "hal_config.h" /* HAL configuration */
+#include "platform_drivers.h" /* Platform drivers */
+#include "log_macros.h" /* Logging macros */
#include <stdio.h>
#include <assert.h>
+#include <string.h>
#if defined(ARM_NPU)
@@ -71,9 +72,9 @@ int hal_init(hal_platform* platform, data_acq_module* data_acq,
platform->data_acq = data_acq;
platform->data_psn = data_psn;
platform->timer = timer;
- platform->platform_init = system_init;
- platform->platform_release = system_release;
- system_name(platform->plat_name, sizeof(platform->plat_name));
+ platform->platform_init = platform_init;
+ platform->platform_release = platform_release;
+ platform_name(platform->plat_name, sizeof(platform->plat_name));
return 0;
}
diff --git a/source/hal/include/hal.h b/source/hal/include/hal.h
index a192ea7..a535dc9 100644
--- a/source/hal/include/hal.h
+++ b/source/hal/include/hal.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +23,6 @@
* will also need to be aware of the API exposed by data acquisition and
* data presentation modules.
*/
-#include "hal_config.h"
#ifdef __cplusplus
extern "C" {
diff --git a/source/hal/platform/mps3/CMakeLists.txt b/source/hal/platform/mps3/CMakeLists.txt
index 46db2aa..cd95d6c 100644
--- a/source/hal/platform/mps3/CMakeLists.txt
+++ b/source/hal/platform/mps3/CMakeLists.txt
@@ -70,27 +70,38 @@ target_include_directories(${PLATFORM_DRIVERS_TARGET}
include
${SOURCE_GEN_DIR})
+## Include directories - private
+target_include_directories(${PLATFORM_DRIVERS_TARGET}
+ PRIVATE
+ source/include)
+
## Platform sources
target_sources(${PLATFORM_DRIVERS_TARGET}
PRIVATE
source/device_mps3.c
- source/timer_mps3.c)
+ source/timer_mps3.c
+ source/platform_drivers.c)
+
+## Directory for additional compnents required by MPS3:
+if (NOT DEFINED COMPONENTS_DIR)
+ set(COMPONENTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../components)
+endif()
## Platform component: uart
target_sources(${PLATFORM_DRIVERS_TARGET}
PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/../../components/uart_cmsdk/uart_cmsdk.c)
+ ${COMPONENTS_DIR}/uart_cmsdk/uart_cmsdk.c)
target_include_directories(${PLATFORM_DRIVERS_TARGET}
PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/../../components/uart_cmsdk/include)
+ ${COMPONENTS_DIR}/uart_cmsdk/include)
## Platform component: LCD
target_sources(${PLATFORM_DRIVERS_TARGET}
PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/../../components/lcd_mps3/glcd_mps3.c)
+ ${COMPONENTS_DIR}/lcd_mps3/glcd_mps3.c)
target_include_directories(${PLATFORM_DRIVERS_TARGET}
PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/../../components/lcd_mps3/include)
+ ${COMPONENTS_DIR}/lcd_mps3/include)
## This target provides the following definitions for MPS3 specific behaviour
## TODO: We should aim to remove this now with platform refactoring..
@@ -100,13 +111,11 @@ target_compile_definitions(${PLATFORM_DRIVERS_TARGET}
ACTIVATION_BUF_SRAM_SZ=${ACTIVATION_BUF_SRAM_SZ}
$<$<BOOL:TA_CONFIG_FILE>:TIMING_ADAPTER_AVAILABLE>)
-# 5. Add dependencies:
-
+# Add dependencies:
target_link_libraries(${PLATFORM_DRIVERS_TARGET} PUBLIC
- cmsis_device
- log)
+ log cmsis_device)
-# 6 Display status:
+# Display status:
message(STATUS "CMAKE_CURRENT_SOURCE_DIR: " ${CMAKE_CURRENT_SOURCE_DIR})
message(STATUS "*******************************************************")
message(STATUS "Library : " ${PLATFORM_DRIVERS_TARGET})
diff --git a/source/hal/platform/mps3/include/platform_drivers.h b/source/hal/platform/mps3/include/platform_drivers.h
index c5ed561..156b136 100644
--- a/source/hal/platform/mps3/include/platform_drivers.h
+++ b/source/hal/platform/mps3/include/platform_drivers.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,15 +15,36 @@
* limitations under the License.
*/
-#ifndef PLATFORM_DRIVER_H
-#define PLATFORM_DRIVER_H
+#ifndef PLATFORM_DRIVERS_H
+#define PLATFORM_DRIVERS_H
-#include "log_macros.h" /* Logging related helpers. */
-#include "uart_stdout.h" /* stdout over UART. */
-#include "smm_mps3.h" /* Mem map for MPS3 peripherals. */
-#include "glcd_mps3.h" /* LCD functions. */
+#include "log_macros.h" /* Logging related helpers. */
+
+/* Platform components */
#include "timer_mps3.h" /* Timer functions. */
-#include "device_mps3.h" /* FPGA level definitions and functions. */
-#include "peripheral_irqs.h"/* IRQ numbers for this platform */
+#include "cmsis.h" /* For CPU related defintiions */
+#include "glcd_mps3.h" /* LCD functions. */
+
+/** Platform definitions. TODO: These should be removed. */
+#include "peripheral_memmap.h" /* Peripheral memory map definitions. */
+#include "peripheral_irqs.h" /* IRQ numbers for this platform. */
+
+/**
+ * @brief Initialises the platform components.
+ * @return 0 if successful, error code otherwise.
+ */
+int platform_init(void);
+
+/**
+ * @brief Teardown for platform components.
+ */
+void platform_release(void);
+
+/**
+ * @brief Sets the platform name.
+ * @param[out] name Name of the platform to be set
+ * @param[in] size Size of the input buffer
+ */
+void platform_name(char* name, size_t size);
-#endif /* PLATFORM_DRIVER_H */
+#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/platform/mps3/include/timer_mps3.h b/source/hal/platform/mps3/include/timer_mps3.h
index 70d059c..b5db722 100644
--- a/source/hal/platform/mps3/include/timer_mps3.h
+++ b/source/hal/platform/mps3/include/timer_mps3.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,7 +18,6 @@
#define TIMER_MPS3_H
#include <stdint.h>
-#include <time.h>
/* Container for timestamp up-counters. */
typedef struct _mps3_time_counter {
@@ -47,7 +46,7 @@ base_time_counter get_time_counter(void);
* @brief Gets the duration elapsed between two counters in milliseconds.
* @param[in] start Pointer to base_time_counter value at start time.
* @param[in] end Pointer to base_time_counter value at end.
- * @returns Difference in milliseconds between the two give counters
+ * @returns Difference in milliseconds between the two give counters
* expressed as an unsigned integer.
**/
uint32_t get_duration_milliseconds(base_time_counter *start,
@@ -57,7 +56,7 @@ uint32_t get_duration_milliseconds(base_time_counter *start,
* @brief Gets the duration elapsed between two counters in microseconds.
* @param[in] start Pointer to base_time_counter value at start time.
* @param[in] end Pointer to base_time_counter value at end.
- * @returns Difference in microseconds between the two give counters
+ * @returns Difference in microseconds between the two give counters
* expressed as an unsigned integer.
**/
uint32_t get_duration_microseconds(base_time_counter *start,
@@ -83,4 +82,9 @@ void start_cycle_counter(void);
**/
void stop_cycle_counter(void);
+/**
+ * @brief System tick interrupt handler.
+ **/
+void SysTick_Handler(void);
+
#endif /* TIMER_MPS3_H */
diff --git a/source/hal/platform/mps3/source/device_mps3.c b/source/hal/platform/mps3/source/device_mps3.c
index fa57c2e..de715fb 100644
--- a/source/hal/platform/mps3/source/device_mps3.c
+++ b/source/hal/platform/mps3/source/device_mps3.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,11 +21,9 @@
#include <inttypes.h>
-extern uint32_t GetSystemCoreClock(void);
-
uint32_t GetMPS3CoreClock(void)
{
- const uint32_t default_clock = GetSystemCoreClock();
+ const uint32_t default_clock = 32000000 /* 32 MHz clock */;
static int warned_once = 0;
if (0 != MPS3_SCC->CFG_ACLK) {
if (default_clock != MPS3_SCC->CFG_ACLK) {
diff --git a/source/hal/platform/mps3/include/device_mps3.h b/source/hal/platform/mps3/source/include/device_mps3.h
index e0dea1b..445965d 100644
--- a/source/hal/platform/mps3/include/device_mps3.h
+++ b/source/hal/platform/mps3/source/include/device_mps3.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,6 @@
extern "C" {
#endif
-#include "cmsis.h" /* CMSIS device header. */
#include "smm_mps3.h" /* Memory map for MPS3. */
#include <stdio.h>
diff --git a/source/hal/platform/mps3/include/smm_mps3.h b/source/hal/platform/mps3/source/include/smm_mps3.h
index 1c0e0f2..5a2bcc5 100644
--- a/source/hal/platform/mps3/include/smm_mps3.h
+++ b/source/hal/platform/mps3/source/include/smm_mps3.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,9 +17,10 @@
#ifndef SMM_MPS3_H
#define SMM_MPS3_H
-#include "cmsis.h" /* Device specific header file. */
+#include "cmsis.h" /* For CPU related defintiions */
#include "peripheral_memmap.h" /* Peripheral memory map definitions. */
+
#if defined ( __CC_ARM )
#pragma anon_unions
#endif
diff --git a/source/hal/profiles/bare-metal/utils/system_init.c b/source/hal/platform/mps3/source/platform_drivers.c
index 23af14f..da2b39c 100644
--- a/source/hal/profiles/bare-metal/utils/system_init.c
+++ b/source/hal/platform/mps3/source/platform_drivers.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,20 +14,57 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "system_init.h"
-#include <string.h>
-#include <inttypes.h>
+#include "platform_drivers.h"
+
+#include "uart_stdout.h" /* stdout over UART. */
+#include "log_macros.h" /* Logging functions */
+#include "device_mps3.h" /* FPGA level definitions and functions. */
+
+#include <string.h> /* For strncpy */
+
+/**
+ * @brief Checks if the platform is valid by checking
+ * the CPU ID for the FPGA implementation against
+ * the register from the CPU core.
+ * @return 0 if successful, 1 otherwise
+ */
+static int verify_platform(void);
+
+int platform_init(void)
+{
+ int err = 0;
+
+ SystemCoreClockUpdate(); /* From start up code */
+
+ /* UART init - will enable valid use of printf (stdout
+ * re-directed at this UART (UART0) */
+ UartStdOutInit();
+
+ if (0 != (err = verify_platform())) {
+ return err;
+ }
+
+ /** TODO: Add ARM NPU and TA init here */
+ return 0;
+}
+
+void platform_release(void)
+{
+ __disable_irq();
+}
+
+void platform_name(char* name, size_t size)
+{
+ strncpy(name, DESIGN_NAME, size);
+}
-#if defined(MPS3_PLATFORM)
#define CREATE_MASK(msb, lsb) (int)(((1U << ((msb) - (lsb) + 1)) - 1) << (lsb))
#define MASK_BITS(arg, msb, lsb) (int)((arg) & CREATE_MASK(msb, lsb))
#define EXTRACT_BITS(arg, msb, lsb) (int)(MASK_BITS(arg, msb, lsb) >> (lsb))
-#endif /* MPS3_PLATFORM */
-int system_init(void)
+static int verify_platform(void)
{
-#if defined(MPS3_PLATFORM)
uint32_t id = 0;
uint32_t fpgaid = 0;
uint32_t apnote = 0;
@@ -38,14 +75,9 @@ int system_init(void)
/* Initialise the LEDs as the switches are */
MPS3_FPGAIO->LED = MPS3_FPGAIO->SWITCHES & 0xFF;
-#endif
- /* UART init - will enable valid use of printf (stdout
- * re-directed at this UART (UART0) */
- UartStdOutInit();
- info("Processor internal clock: %" PRIu32 "Hz\n", GetSystemCoreClock());
+ info("Processor internal clock: %" PRIu32 "Hz\n", GetMPS3CoreClock());
-#if defined(MPS3_PLATFORM)
/* Get revision information from various registers */
rev = MPS3_SCC->CFG_REG4;
fpgaid = MPS3_SCC->SCC_ID;
@@ -92,23 +124,8 @@ int system_init(void)
EXTRACT_BITS(id, 7, 4), EXTRACT_BITS(id, 23, 20),
EXTRACT_BITS(id, 3, 0));
}
-#else /* MPS3_PLATFORM */
-
- info("%s: complete\n", __FUNCTION__);
- return 0;
-#endif /* MPS3_PLATFORM */
/* If the CPU is anything other than M33 or M55, we return 1 */
printf_err("CPU mismatch!\n");
return 1;
}
-
-void system_release(void)
-{
- __disable_irq();
-}
-
-void system_name(char* name, size_t size)
-{
- strncpy(name, DESIGN_NAME, size);
-} \ No newline at end of file
diff --git a/source/hal/platform/mps3/source/timer_mps3.c b/source/hal/platform/mps3/source/timer_mps3.c
index 9b8914c..16ff4cd 100644
--- a/source/hal/platform/mps3/source/timer_mps3.c
+++ b/source/hal/platform/mps3/source/timer_mps3.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,18 @@
#include "log_macros.h"
#include "device_mps3.h"
-#include <inttypes.h>
+static uint64_t cpu_cycle_count = 0; /* 64-bit cpu cycle counter */
+
+/**
+ * @brief Gets the system tick triggered cycle counter for the CPU.
+ * @return 64-bit counter value.
+ **/
+static uint64_t Get_SysTick_Cycle_Count(void);
+
+/**
+ * SysTick initialisation
+ */
+static int Init_SysTick(void);
void timer_reset(void)
{
@@ -111,3 +122,52 @@ void stop_cycle_counter(void)
{
/* Nothing to do for FPGA */
}
+
+void SysTick_Handler(void)
+{
+ /* Increment the cycle counter based on load value. */
+ cpu_cycle_count += SysTick->LOAD + 1;
+}
+
+/**
+ * Gets the current SysTick derived counter value
+ */
+static uint64_t Get_SysTick_Cycle_Count(void)
+{
+ uint32_t systick_val;
+
+ NVIC_DisableIRQ(SysTick_IRQn);
+ systick_val = SysTick->VAL & SysTick_VAL_CURRENT_Msk;
+ NVIC_EnableIRQ(SysTick_IRQn);
+
+ return cpu_cycle_count + (SysTick->LOAD - systick_val);
+}
+
+/**
+ * SysTick initialisation
+ */
+static int Init_SysTick(void)
+{
+ const uint32_t ticks_10ms = GetMPS3CoreClock()/100 + 1;
+ int err = 0;
+
+ /* Reset CPU cycle count value. */
+ cpu_cycle_count = 0;
+
+ /* Changing configuration for sys tick => guard from being
+ * interrupted. */
+ NVIC_DisableIRQ(SysTick_IRQn);
+
+ /* SysTick init - this will enable interrupt too. */
+ err = SysTick_Config(ticks_10ms);
+
+ /* Enable interrupt again. */
+ NVIC_EnableIRQ(SysTick_IRQn);
+
+ /* Wait for SysTick to kick off */
+ while (!err && !SysTick->VAL) {
+ __NOP();
+ }
+
+ return err;
+}
diff --git a/source/hal/platform/native/CMakeLists.txt b/source/hal/platform/native/CMakeLists.txt
new file mode 100644
index 0000000..0435cf1
--- /dev/null
+++ b/source/hal/platform/native/CMakeLists.txt
@@ -0,0 +1,56 @@
+#----------------------------------------------------------------------------
+# Copyright (c) 2022 Arm Limited. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#----------------------------------------------------------------------------
+
+#########################################################
+# Native target platform support library #
+#########################################################
+
+cmake_minimum_required(VERSION 3.15.6)
+
+set(PLATFORM_DRIVERS_TARGET platform-drivers)
+
+project(${PLATFORM_DRIVERS_TARGET}
+ DESCRIPTION "Platform drivers library for native target"
+ LANGUAGES C CXX)
+
+# We should not be cross-compiling
+if (${CMAKE_CROSSCOMPILING})
+ message(FATAL_ERROR "Native drivers not available when cross-compiling.")
+endif()
+
+
+# Create static library
+add_library(${PLATFORM_DRIVERS_TARGET} STATIC)
+
+## Include directories - public
+target_include_directories(${PLATFORM_DRIVERS_TARGET}
+ PUBLIC
+ include)
+
+## Platform sources
+target_sources(${PLATFORM_DRIVERS_TARGET}
+ PRIVATE
+ source/platform_drivers.c)
+
+# Add dependencies:
+target_link_libraries(${PLATFORM_DRIVERS_TARGET} PUBLIC log)
+
+# Display status:
+message(STATUS "*******************************************************")
+message(STATUS "Library : " ${PLATFORM_DRIVERS_TARGET})
+message(STATUS "CMAKE_SYSTEM_PROCESSOR : " ${CMAKE_SYSTEM_PROCESSOR})
+message(STATUS "*******************************************************")
diff --git a/source/hal/profiles/native/utils/include/system_init.h b/source/hal/platform/native/include/platform_drivers.h
index 5d3fcd0..ca6b6e0 100644
--- a/source/hal/profiles/native/utils/include/system_init.h
+++ b/source/hal/platform/native/include/platform_drivers.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,25 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef NATIVE_SYSTEM_INIT_H
-#define NATIVE_SYSTEM_INIT_H
-#include <stddef.h>
+#ifndef PLATFORM_DRIVERS_H
+#define PLATFORM_DRIVERS_H
+
+#include "log_macros.h" /* Logging related helpers. */
+
/**
- * @brief Platform initialisation for native platform.
- **/
-int system_init(void);
+ * @brief Initialises the platform components.
+ * @return 0 if successful, error code otherwise.
+ */
+int platform_init(void);
/**
- * @brief Platform release for native platform.
- **/
-void system_release(void);
+ * @brief Teardown for platform components.
+ */
+void platform_release(void);
/**
- * @brief Returns the name of the platform.
- * @param[out] name Platform name string.
- * @param[in] size Name string length.
+ * @brief Sets the platform name.
+ * @param[out] name Name of the platform to be set
+ * @param[in] size Size of the input buffer
*/
-void system_name(char* name, size_t size);
+void platform_name(char* name, size_t size);
-#endif /* NATIVE_SYSTEM_INIT_H */
+#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/profiles/native/utils/system_init.c b/source/hal/platform/native/source/platform_drivers.c
index 8e0b768..10db99a 100644
--- a/source/hal/profiles/native/utils/system_init.c
+++ b/source/hal/platform/native/source/platform_drivers.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -14,19 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "system_init.h"
+
+#include "platform_drivers.h"
#include <string.h>
-int system_init(void)
+int platform_init(void)
{
return 0;
}
-void system_release(void)
+void platform_release(void)
{}
-void system_name(char* name, size_t size)
+void platform_name(char* name, size_t size)
{
strncpy(name, "native", size);
} \ No newline at end of file
diff --git a/source/hal/platform/simple/CMakeLists.txt b/source/hal/platform/simple/CMakeLists.txt
index cd3a2bc..44c4089 100644
--- a/source/hal/platform/simple/CMakeLists.txt
+++ b/source/hal/platform/simple/CMakeLists.txt
@@ -72,7 +72,8 @@ target_include_directories(${PLATFORM_DRIVERS_TARGET}
target_sources(${PLATFORM_DRIVERS_TARGET}
PRIVATE
source/stubs_glcd.c
- source/timer_simple_platform.c)
+ source/timer_simple_platform.c
+ source/platform_drivers.c)
## Platform component: uart
target_sources(${PLATFORM_DRIVERS_TARGET}
diff --git a/source/hal/platform/simple/include/platform_drivers.h b/source/hal/platform/simple/include/platform_drivers.h
index 0fb092e..c9928c0 100644
--- a/source/hal/platform/simple/include/platform_drivers.h
+++ b/source/hal/platform/simple/include/platform_drivers.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,18 +15,36 @@
* limitations under the License.
*/
-#ifndef PLATFORM_DRIVER_H
-#define PLATFORM_DRIVER_H
+#ifndef PLATFORM_DRIVERS_H
+#define PLATFORM_DRIVERS_H
#include "log_macros.h" /* Logging related helpers. */
/* Platform components */
-#include "uart_stdout.h" /* stdout over UART. */
-#include "stubs/glcd.h" /* LCD stubs to support use cases that use LCD */
+#include "stubs/glcd.h" /* LCD stubs to support use cases that use LCD */
#include "timer_simple_platform.h" /* timer implementation */
+#include "cmsis.h" /* For CPU related defintiions */
-#include "cmsis.h" /* CPU device specific header file */
-#include "peripheral_memmap.h" /* peripheral memory map definitions */
-#include "peripheral_irqs.h" /* IRQ numbers for the platform */
+/** Platform definitions. TODO: These should be removed. */
+#include "peripheral_memmap.h" /* Peripheral memory map definitions. */
+#include "peripheral_irqs.h" /* IRQ numbers for this platform. */
-#endif /* PLATFORM_DRIVER_H */
+/**
+ * @brief Initialises the platform components.
+ * @return 0 if successful, error code otherwise.
+ */
+int platform_init(void);
+
+/**
+ * @brief Teardown for platform components.
+ */
+void platform_release(void);
+
+/**
+ * @brief Sets the platform name.
+ * @param[out] name Name of the platform to be set
+ * @param[in] size Size of the input buffer
+ */
+void platform_name(char* name, size_t size);
+
+#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/platform/simple/include/stubs/glcd.h b/source/hal/platform/simple/include/stubs/glcd.h
index 5915f7d..b31938f 100644
--- a/source/hal/platform/simple/include/stubs/glcd.h
+++ b/source/hal/platform/simple/include/stubs/glcd.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,6 +17,8 @@
#ifndef STUBS_SIMPLE_PLATFORM_H
#define STUBS_SIMPLE_PLATFORM_H
+#include <stdint.h>
+
/****************************************************************************/
/* Definitions and stub functions for modules currently */
/* unavailable on this target platform */
@@ -58,10 +60,10 @@ void GLCD_Bitmap(unsigned int x, unsigned int y,
* @param[in] downsample_factor factor by which the image
* is downsampled by.
*/
-void GLCD_Image(void *data, const unsigned int width,
- const unsigned int height, const unsigned int channels,
- const unsigned int pos_x, const unsigned int pos_y,
- const unsigned int downsample_factor);
+void GLCD_Image(const void *data, const uint32_t width,
+ const uint32_t height, const uint32_t channels,
+ const uint32_t pos_x, const uint32_t pos_y,
+ const uint32_t downsample_factor);
/**
* @brief Clear display
diff --git a/source/hal/platform/simple/include/timer_simple_platform.h b/source/hal/platform/simple/include/timer_simple_platform.h
index 03d8245..4df22da 100644
--- a/source/hal/platform/simple/include/timer_simple_platform.h
+++ b/source/hal/platform/simple/include/timer_simple_platform.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -51,4 +51,9 @@ void start_cycle_counter(void);
*/
void stop_cycle_counter(void);
+/**
+ * @brief System tick interrupt handler.
+ **/
+void SysTick_Handler(void);
+
#endif /* TIMER_SIMPLE_PLATFORM_H */
diff --git a/source/hal/platform/simple/source/platform_drivers.c b/source/hal/platform/simple/source/platform_drivers.c
new file mode 100644
index 0000000..c92a964
--- /dev/null
+++ b/source/hal/platform/simple/source/platform_drivers.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2022 Arm Limited. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "platform_drivers.h"
+
+#include "uart_stdout.h"
+#include <string.h>
+
+int platform_init(void)
+{
+ SystemCoreClockUpdate(); /* From start up code */
+
+ /* UART init - will enable valid use of printf (stdout
+ * re-directed at this UART (UART0) */
+ UartStdOutInit();
+
+ info("%s: complete\n", __FUNCTION__);
+
+ /** TODO: Add ARM NPU and TA init here */
+ return 0;
+}
+
+void platform_release(void)
+{
+ __disable_irq();
+}
+
+void platform_name(char* name, size_t size)
+{
+ strncpy(name, DESIGN_NAME, size);
+}
diff --git a/source/hal/platform/simple/source/stubs_glcd.c b/source/hal/platform/simple/source/stubs_glcd.c
index 6b60dcd..d843cf4 100644
--- a/source/hal/platform/simple/source/stubs_glcd.c
+++ b/source/hal/platform/simple/source/stubs_glcd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -31,9 +31,10 @@ void GLCD_Bitmap(unsigned int x, unsigned int y,
UNUSED(bitmap);
}
-void GLCD_Image(void *data, const unsigned int width, const unsigned int height,
- const unsigned int channels, const unsigned int pos_x,
- const unsigned int pos_y, const unsigned int downsample_factor)
+void GLCD_Image(const void *data, const uint32_t width,
+ const uint32_t height, const uint32_t channels,
+ const uint32_t pos_x, const uint32_t pos_y,
+ const uint32_t downsample_factor)
{
UNUSED(data);
UNUSED(pos_x);
diff --git a/source/hal/platform/simple/source/timer_simple_platform.c b/source/hal/platform/simple/source/timer_simple_platform.c
index 4bcd07b..3d28261 100644
--- a/source/hal/platform/simple/source/timer_simple_platform.c
+++ b/source/hal/platform/simple/source/timer_simple_platform.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,11 +16,26 @@
*/
#include "timer_simple_platform.h"
-#include "irqs.h"
-#include "log_macros.h"
+#include "log_macros.h" /* Logging macros */
+#include "cmsis.h" /* For CPU related defintiions */
#include <inttypes.h>
+static uint64_t cpu_cycle_count = 0; /* 64-bit cpu cycle counter */
+extern uint32_t SystemCoreClock; /* Expected to come from the cmsis-device lib */
+
+/**
+ * @brief Gets the system tick triggered cycle counter for the CPU.
+ * @return 64-bit counter value.
+ **/
+static uint64_t Get_SysTick_Cycle_Count(void);
+
+/**
+ * SysTick initialisation
+ */
+static int Init_SysTick(void);
+
+
base_time_counter get_time_counter(void)
{
base_time_counter t = {
@@ -56,3 +71,53 @@ void stop_cycle_counter(void)
{
/* Add any custom requirement for this platform here */
}
+
+
+void SysTick_Handler(void)
+{
+ /* Increment the cycle counter based on load value. */
+ cpu_cycle_count += SysTick->LOAD + 1;
+}
+
+/**
+ * Gets the current SysTick derived counter value
+ */
+static uint64_t Get_SysTick_Cycle_Count(void)
+{
+ uint32_t systick_val;
+
+ NVIC_DisableIRQ(SysTick_IRQn);
+ systick_val = SysTick->VAL & SysTick_VAL_CURRENT_Msk;
+ NVIC_EnableIRQ(SysTick_IRQn);
+
+ return cpu_cycle_count + (SysTick->LOAD - systick_val);
+}
+
+/**
+ * SysTick initialisation
+ */
+static int Init_SysTick(void)
+{
+ const uint32_t ticks_10ms = SystemCoreClock/100 + 1;
+ int err = 0;
+
+ /* Reset CPU cycle count value. */
+ cpu_cycle_count = 0;
+
+ /* Changing configuration for sys tick => guard from being
+ * interrupted. */
+ NVIC_DisableIRQ(SysTick_IRQn);
+
+ /* SysTick init - this will enable interrupt too. */
+ err = SysTick_Config(ticks_10ms);
+
+ /* Enable interrupt again. */
+ NVIC_EnableIRQ(SysTick_IRQn);
+
+ /* Wait for SysTick to kick off */
+ while (!err && !SysTick->VAL) {
+ __NOP();
+ }
+
+ return err;
+} \ No newline at end of file
diff --git a/source/hal/profiles/bare-metal/data_acquisition/data_acq.c b/source/hal/profiles/bare-metal/data_acquisition/data_acq.c
index 1e40b02..7113a24 100644
--- a/source/hal/profiles/bare-metal/data_acquisition/data_acq.c
+++ b/source/hal/profiles/bare-metal/data_acquisition/data_acq.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,6 +17,8 @@
#include "data_acq.h"
#include "bsp.h"
+#include "log_macros.h"
+#include "uart_stdout.h"
#include <assert.h>
#include <stdlib.h>
@@ -31,7 +33,6 @@
static int get_uart_user_input(char* user_input, int size)
{
if (true != GetLine(user_input, size - 1)) {
- printf_err("invalid input\n");
return 1;
}
return 0;
diff --git a/source/hal/profiles/bare-metal/data_presentation/lcd/lcd_img.c b/source/hal/profiles/bare-metal/data_presentation/lcd/lcd_img.c
index 7064396..bb950c3 100644
--- a/source/hal/profiles/bare-metal/data_presentation/lcd/lcd_img.c
+++ b/source/hal/profiles/bare-metal/data_presentation/lcd/lcd_img.c
@@ -17,6 +17,7 @@
#include "lcd_img.h"
#include "bsp.h"
+#include "log_macros.h"
#include <string.h>
#include <assert.h>
diff --git a/source/hal/profiles/bare-metal/timer/platform_timer.c b/source/hal/profiles/bare-metal/timer/platform_timer.c
index c8e7252..11ccf8b 100644
--- a/source/hal/profiles/bare-metal/timer/platform_timer.c
+++ b/source/hal/profiles/bare-metal/timer/platform_timer.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,6 +16,7 @@
*/
#include "bsp.h"
#include "timer.h"
+#include "log_macros.h"
#include <assert.h>
#include <string.h>
diff --git a/source/hal/profiles/bare-metal/utils/include/system_init.h b/source/hal/profiles/bare-metal/utils/include/system_init.h
deleted file mode 100644
index 84e0305..0000000
--- a/source/hal/profiles/bare-metal/utils/include/system_init.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2021 Arm Limited. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef BAREMETAL_SYSTEM_INIT_H
-#define BAREMETAL_SYSTEM_INIT_H
-
-#include "bsp.h"
-
-/**
- * @brief Initialises the platform (MPS3 FPGA board or Fixed Virtual Platform)
- * Updates the system core clock and initialises the UART. It also
- * verifies that the Cortex-M CPU variant being used matches the expected
- * value if running on MPS3.
- * @return 0 if successful, error code otherwise.
-*/
-int system_init(void);
-
-/**
- * @brief Releases the platform (MPS3 FPGA board or Fixed Virtual Platform).
- **/
-void system_release(void);
-
-/**
- * @brief Return the name the platform (MPS3 FPGA board or Fixed Virtual Platform).
- * @param[out] name Platform name string.
- * @param[in] size Name string length.
- **/
-void system_name(char* name, size_t size);
-
-#endif /* BAREMETAL_SYSTEM_INIT_H */
diff --git a/source/profiler/CMakeLists.txt b/source/profiler/CMakeLists.txt
index e59dc01..b02b276 100644
--- a/source/profiler/CMakeLists.txt
+++ b/source/profiler/CMakeLists.txt
@@ -31,6 +31,11 @@ target_sources(profiler
target_include_directories(profiler PUBLIC include)
+# Set the CPU profiling defintiion
+if (CPU_PROFILE_ENABLED)
+ target_compile_definitions(profiler PRIVATE CPU_PROFILE_ENABLED)
+endif()
+
# Profiling API depends on the logging interface and the HAL library.
target_link_libraries(profiler PRIVATE log hal)