summaryrefslogtreecommitdiff
path: root/source/hal
diff options
context:
space:
mode:
Diffstat (limited to 'source/hal')
-rw-r--r--source/hal/CMakeLists.txt2
-rw-r--r--source/hal/include/hal.h30
-rw-r--r--source/hal/include/hal_pmu.h (renamed from source/hal/include/timer.h)28
-rw-r--r--source/hal/source/components/npu/ethosu_profiler.c12
-rw-r--r--source/hal/source/components/npu/include/ethosu_profiler.h8
-rw-r--r--source/hal/source/components/platform_pmu/include/platform_pmu.h6
-rw-r--r--source/hal/source/hal.c55
-rw-r--r--source/hal/source/hal_pmu.c (renamed from source/hal/source/hal_timer.c)28
-rw-r--r--source/hal/source/platform/mps3/include/platform_drivers.h7
-rw-r--r--source/hal/source/platform/mps3/include/timer_mps3.h6
-rw-r--r--source/hal/source/platform/mps3/source/platform_drivers.c10
-rw-r--r--source/hal/source/platform/mps3/source/timer_mps3.c28
-rw-r--r--source/hal/source/platform/native/include/platform_drivers.h7
-rw-r--r--source/hal/source/platform/native/include/timer_native.h6
-rw-r--r--source/hal/source/platform/native/source/platform_drivers.c6
-rw-r--r--source/hal/source/platform/native/source/timer_native.c18
-rw-r--r--source/hal/source/platform/simple/include/platform_drivers.h7
-rw-r--r--source/hal/source/platform/simple/include/timer_simple_platform.h6
-rw-r--r--source/hal/source/platform/simple/source/platform_drivers.c9
-rw-r--r--source/hal/source/platform/simple/source/timer_simple_platform.c18
20 files changed, 117 insertions, 180 deletions
diff --git a/source/hal/CMakeLists.txt b/source/hal/CMakeLists.txt
index 37bf267..74256bb 100644
--- a/source/hal/CMakeLists.txt
+++ b/source/hal/CMakeLists.txt
@@ -39,7 +39,7 @@ target_include_directories(${HAL_TARGET}
target_sources(${HAL_TARGET}
PRIVATE
source/hal.c
- source/hal_timer.c)
+ source/hal_pmu.c)
if (DEFINED VERIFY_TEST_OUTPUT)
message(STATUS "Test output verification flag is: ${VERIFY_TEST_OUTPUT}")
diff --git a/source/hal/include/hal.h b/source/hal/include/hal.h
index 25ea1e2..5d1964d 100644
--- a/source/hal/include/hal.h
+++ b/source/hal/include/hal.h
@@ -29,47 +29,25 @@ extern "C" {
#endif
#include "platform_drivers.h" /* Platform drivers */
-#include "timer.h" /* Timer/profiler API */
+#include "hal_pmu.h" /* Timer/profiler API */
#include "hal_lcd.h" /* LCD functions */
#include <inttypes.h>
#include <stdbool.h>
-/* Structure to define a platform context to be used by the application */
-typedef struct hal_platform_context {
- int inited; /**< initialised */
- char plat_name[64]; /**< name of this platform */
- platform_timer* timer; /**< timer */
- int (* platform_init)(); /**< pointer to platform initialisation function */
- void (* platform_release)(); /**< pointer to platform release function */
-} hal_platform;
-
-/**
- * @brief Initialise the HAL structure based on compile time config. This
- * should be called before any other function in this API.
- * @param[in,out] platform Pointer to a pre-allocated platform struct.
- * @param[in,out] timer Pointer to a pre-allocated timer module.
- * @return 0 if successful, error code otherwise.
- **/
-int hal_init(hal_platform* platform, platform_timer* timer);
-
-
/**
* @brief Initialise the HAL platform. This will go and initialise all the
* modules on the platform the application requires to run.
- * @param[in] platform Pointer to a pre-allocated and initialised
- * platform structure.
- * @return 0 if successful, error code otherwise.
+ * @return True if successful, false otherwise.
**/
-int hal_platform_init(hal_platform* platform);
+bool hal_platform_init(void);
/**
* @brief Release the HAL platform. This should release resources acquired.
- * @param[in] platform pointer to a pre-allocated and initialised
* platform structure.
**/
-void hal_platform_release(hal_platform* platform);
+void hal_platform_release(void);
/**
* @brief Gets user input from the stdin interface.
diff --git a/source/hal/include/timer.h b/source/hal/include/hal_pmu.h
index 9910fcf..5bfe517 100644
--- a/source/hal/include/timer.h
+++ b/source/hal/include/hal_pmu.h
@@ -14,23 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#ifndef HAL_TIMER_H
-#define HAL_TIMER_H
+#ifndef HAL_PMU_H
+#define HAL_PMU_H
-#include "platform_drivers.h" /* Platform package API */
-#include "user_input.h" /* PMU structs and API */
+#include "platform_pmu.h"
-/* Structure to hold a platform specific timer implementation */
-typedef struct _platform_timer {
- int inited; /**< Initialised or not. */
- void (* reset)(void); /**< Reset the timer. */
- pmu_counters (* get_counters)(void); /**< Gets the current time counter. */
+/**
+ * @brief Initialise the PMU available for the platform.
+ **/
+void hal_pmu_init(void);
-} platform_timer;
+/**
+ * @brief Resets the counters.
+ */
+void hal_pmu_reset(void);
/**
- * @brief Initialise the timer available for the platform.
+ * @brief Gets the current counter values.
+ * @param[out] Pointer to a pmu_counters object.
**/
-void init_timer(platform_timer* timer);
+void hal_pmu_get_counters(pmu_counters* counters);
-#endif /* HAL_TIMER_H */
+#endif /* HAL_PMU_H */
diff --git a/source/hal/source/components/npu/ethosu_profiler.c b/source/hal/source/components/npu/ethosu_profiler.c
index 3ac3497..5d50b09 100644
--- a/source/hal/source/components/npu/ethosu_profiler.c
+++ b/source/hal/source/components/npu/ethosu_profiler.c
@@ -22,6 +22,8 @@
extern struct ethosu_driver ethosu_drv; /* Default Arm Ethos-U NPU device driver object */
static ethosu_pmu_counters npu_counters; /* NPU counter local instance */
+static const char* unit_beats = "beats";
+static const char* unit_cycles = "cycles";
/**
* @brief Gets the npu counter instance to be used.
@@ -59,29 +61,29 @@ void ethosu_pmu_init(void)
counters->npu_evt_counters[0].event_type = ETHOSU_PMU_NPU_IDLE;
counters->npu_evt_counters[0].event_mask = ETHOSU_PMU_CNT1_Msk;
counters->npu_evt_counters[0].name = "NPU IDLE";
- counters->npu_evt_counters[0].unit = "cycles";
+ counters->npu_evt_counters[0].unit = unit_cycles;
counters->npu_evt_counters[1].event_type = ETHOSU_PMU_AXI0_RD_DATA_BEAT_RECEIVED;
counters->npu_evt_counters[1].event_mask = ETHOSU_PMU_CNT2_Msk;
counters->npu_evt_counters[1].name = "NPU AXI0_RD_DATA_BEAT_RECEIVED";
- counters->npu_evt_counters[1].unit = "beats";
+ counters->npu_evt_counters[1].unit = unit_beats;
counters->npu_evt_counters[2].event_type = ETHOSU_PMU_AXI0_WR_DATA_BEAT_WRITTEN;
counters->npu_evt_counters[2].event_mask = ETHOSU_PMU_CNT3_Msk;
counters->npu_evt_counters[2].name = "NPU AXI0_WR_DATA_BEAT_WRITTEN";
- counters->npu_evt_counters[2].unit = "beats";
+ counters->npu_evt_counters[2].unit = unit_beats;
counters->npu_evt_counters[3].event_type = ETHOSU_PMU_AXI1_RD_DATA_BEAT_RECEIVED;
counters->npu_evt_counters[3].event_mask = ETHOSU_PMU_CNT4_Msk;
counters->npu_evt_counters[3].name = "NPU AXI1_RD_DATA_BEAT_RECEIVED";
- counters->npu_evt_counters[3].unit = "beats";
+ counters->npu_evt_counters[3].unit = unit_beats;
#else /* ETHOSU_PMU_NCOUNTERS >= 4 */
#error "NPU PMU expects a minimum of 4 available event triggered counters!"
#endif /* ETHOSU_PMU_NCOUNTERS >= 4 */
#if ETHOSU_DERIVED_NCOUNTERS >= 1
counters->npu_derived_counters[0].name = "NPU ACTIVE";
- counters->npu_derived_counters[0].unit = "cycles";
+ counters->npu_derived_counters[0].unit = unit_cycles;
#endif /* ETHOSU_DERIVED_NCOUNTERS >= 1 */
for (i = 0; i < ETHOSU_PMU_NCOUNTERS; ++i) {
diff --git a/source/hal/source/components/npu/include/ethosu_profiler.h b/source/hal/source/components/npu/include/ethosu_profiler.h
index ca95b19..093c07f 100644
--- a/source/hal/source/components/npu/include/ethosu_profiler.h
+++ b/source/hal/source/components/npu/include/ethosu_profiler.h
@@ -29,14 +29,14 @@ typedef struct npu_event_counter_ {
enum ethosu_pmu_event_type event_type;
uint32_t event_mask;
uint32_t counter_value;
- char* unit;
- char* name;
+ const char* unit;
+ const char* name;
} npu_evt_counter;
typedef struct npu_derived_counter_ {
uint32_t counter_value;
- char* unit;
- char* name;
+ const char* unit;
+ const char* name;
} npu_derived_counter;
typedef struct ethosu_pmu_counters_ {
diff --git a/source/hal/source/components/platform_pmu/include/platform_pmu.h b/source/hal/source/components/platform_pmu/include/platform_pmu.h
index 3724e57..b3fd8e8 100644
--- a/source/hal/source/components/platform_pmu/include/platform_pmu.h
+++ b/source/hal/source/components/platform_pmu/include/platform_pmu.h
@@ -50,10 +50,10 @@ typedef struct _pmu_counters {
void platform_reset_counters(void);
/**
- * @brief Gets the current counter values.
- * @returns A populated instance of pmu_counters struct.
+ * @brief Gets the current counter values.
+ * @param[out] Pointer to a pmu_counters object.
**/
-pmu_counters platform_get_counters(void);
+void platform_get_counters(pmu_counters* counters);
#ifdef __cplusplus
}
diff --git a/source/hal/source/hal.c b/source/hal/source/hal.c
index d6028e7..4651bfd 100644
--- a/source/hal/source/hal.c
+++ b/source/hal/source/hal.c
@@ -19,62 +19,29 @@
#include "platform_drivers.h" /* Platform drivers */
#include "log_macros.h" /* Logging macros */
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-
-int hal_init(hal_platform* platform, platform_timer* timer)
-{
- platform->timer = timer;
- platform->platform_init = platform_init;
- platform->platform_release = platform_release;
- platform_name(platform->plat_name, sizeof(platform->plat_name));
-
- return 0;
-}
-
-/**
- * @brief Local helper function to clean the slate for current platform.
- **/
-static void hal_platform_clear(hal_platform* platform)
+bool hal_platform_init(void)
{
- assert(platform);
- platform->inited = 0;
-}
-
-int hal_platform_init(hal_platform* platform)
-{
- int state;
- assert(platform && platform->platform_init);
- hal_platform_clear(platform);
-
/* Initialise platform */
- if (0 != (state = platform->platform_init())) {
- printf_err("Failed to initialise platform %s\n", platform->plat_name);
- return state;
+ if (0 != platform_init()) {
+ printf_err("Failed to initialise platform %s\n", platform_name());
+ return false;
}
/* Initialise LCD */
- if (0 != (state = hal_lcd_init())) {
+ if (0 != hal_lcd_init()) {
printf_err("hal_lcd_init failed\n");
- return state;
+ return false;
}
- /* Initialise the timer module */
- init_timer(platform->timer);
+ /* Initialise PMU */
+ hal_pmu_init();
- info("%s platform initialised\n", platform->plat_name);
- platform->inited = !state;
- return state;
+ return true;
}
-void hal_platform_release(hal_platform *platform)
+void hal_platform_release(void)
{
- assert(platform && platform->platform_release);
-
- hal_platform_clear(platform);
- info("Releasing platform %s\n", platform->plat_name);
- platform->platform_release();
+ platform_release();
}
bool hal_get_user_input(char* user_input, int size)
diff --git a/source/hal/source/hal_timer.c b/source/hal/source/hal_pmu.c
index 0488afa..c89128d 100644
--- a/source/hal/source/hal_timer.c
+++ b/source/hal/source/hal_pmu.c
@@ -14,26 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include "timer.h"
-#include "log_macros.h"
+#include "hal_pmu.h"
#include "platform_drivers.h"
-#include <assert.h>
-#include <string.h>
-#include <inttypes.h>
-
-/**
- * @brief Initialiser for HAL timer.
- * @param[in] timer Platform timer to initialize.
- **/
-void init_timer(platform_timer* timer)
+void hal_pmu_init(void)
{
- assert(timer);
- memset(timer, 0, sizeof(*timer));
+ platform_reset_counters();
+}
- timer->reset = platform_reset_counters;
- timer->get_counters = platform_get_counters;
+void hal_pmu_reset(void)
+{
+ platform_reset_counters();
+}
- timer->reset();
- timer->inited = 1;
+void hal_pmu_get_counters(pmu_counters* counters)
+{
+ platform_get_counters(counters);
}
diff --git a/source/hal/source/platform/mps3/include/platform_drivers.h b/source/hal/source/platform/mps3/include/platform_drivers.h
index 8b699d5..de03bcd 100644
--- a/source/hal/source/platform/mps3/include/platform_drivers.h
+++ b/source/hal/source/platform/mps3/include/platform_drivers.h
@@ -38,10 +38,9 @@ int platform_init(void);
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
+ * @brief Gets the platform name.
+ * @return Pointer to the name
*/
-void platform_name(char* name, size_t size);
+const char* platform_name(void);
#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/source/platform/mps3/include/timer_mps3.h b/source/hal/source/platform/mps3/include/timer_mps3.h
index b370e89..dcec980 100644
--- a/source/hal/source/platform/mps3/include/timer_mps3.h
+++ b/source/hal/source/platform/mps3/include/timer_mps3.h
@@ -44,10 +44,10 @@ typedef struct mps3_pmu_counters_ {
void platform_reset_counters(void);
/**
- * @brief Gets the current counter values.
- * @returns A populated instance of pmu_counters struct.
+ * @brief Gets the current counter values.
+ * @param[out] Pointer to a pmu_counters object.
**/
-pmu_counters platform_get_counters(void);
+void platform_get_counters(pmu_counters* counters);
/**
* @brief Gets the MPS3 core clock
diff --git a/source/hal/source/platform/mps3/source/platform_drivers.c b/source/hal/source/platform/mps3/source/platform_drivers.c
index 17ccdf2..d1c3da2 100644
--- a/source/hal/source/platform/mps3/source/platform_drivers.c
+++ b/source/hal/source/platform/mps3/source/platform_drivers.c
@@ -48,6 +48,9 @@
*/
static int verify_platform(void);
+/** Platform name */
+static const char* s_platform_name = DESIGN_NAME;
+
int platform_init(void)
{
int err = 0;
@@ -82,8 +85,7 @@ int platform_init(void)
#endif /* ARM_NPU */
/* Print target design info */
- info("Target system design: %s\n", DESIGN_NAME);
-
+ info("Target system design: %s\n", s_platform_name);
return 0;
}
@@ -92,9 +94,9 @@ void platform_release(void)
__disable_irq();
}
-void platform_name(char* name, size_t size)
+const char* platform_name(void)
{
- strncpy(name, DESIGN_NAME, size);
+ return s_platform_name;
}
#define CREATE_MASK(msb, lsb) (int)(((1U << ((msb) - (lsb) + 1)) - 1) << (lsb))
diff --git a/source/hal/source/platform/mps3/source/timer_mps3.c b/source/hal/source/platform/mps3/source/timer_mps3.c
index 6330269..7ce3002 100644
--- a/source/hal/source/platform/mps3/source/timer_mps3.c
+++ b/source/hal/source/platform/mps3/source/timer_mps3.c
@@ -20,6 +20,8 @@
#include "smm_mps3.h" /* Memory map for MPS3. */
static uint64_t cpu_cycle_count = 0; /* 64-bit cpu cycle counter */
+static const char* unit_cycles = "cycles";
+static const char* unit_ms = "milliseconds";
/**
* @brief Gets the system tick triggered cycle counter for the CPU.
@@ -69,12 +71,10 @@ void platform_reset_counters(void)
#endif /* defined (ARM_NPU) */
}
-pmu_counters platform_get_counters(void)
+void platform_get_counters(pmu_counters* counters)
{
- pmu_counters platform_counters = {
- .num_counters = 0,
- .initialised = true
- };
+ counters->num_counters = 0;
+ counters->initialised = true;
uint32_t i = 0;
#if defined (ARM_NPU)
@@ -84,20 +84,20 @@ pmu_counters platform_get_counters(void)
npu_counters.npu_evt_counters[i].counter_value,
npu_counters.npu_evt_counters[i].name,
npu_counters.npu_evt_counters[i].unit,
- &platform_counters);
+ counters);
}
for (i = 0; i < ETHOSU_DERIVED_NCOUNTERS; ++i) {
add_pmu_counter(
npu_counters.npu_derived_counters[i].counter_value,
npu_counters.npu_derived_counters[i].name,
npu_counters.npu_derived_counters[i].unit,
- &platform_counters);
+ counters);
}
add_pmu_counter(
npu_counters.npu_total_ccnt,
"NPU TOTAL",
- "cycles",
- &platform_counters);
+ unit_cycles,
+ counters);
#endif /* defined (ARM_NPU) */
#if defined(CPU_PROFILE_ENABLED)
@@ -111,14 +111,14 @@ pmu_counters platform_get_counters(void)
add_pmu_counter(
mps3_counters.counter_systick,
"CPU TOTAL",
- "cycles",
- &platform_counters);
+ unit_cycles,
+ counters);
add_pmu_counter(
get_tstamp_milliseconds(&mps3_counters),
"DURATION",
- "milliseconds",
- &platform_counters);
+ unit_ms,
+ counters);
#endif /* defined(CPU_PROFILE_ENABLED) */
#if !defined(CPU_PROFILE_ENABLED)
@@ -129,8 +129,6 @@ pmu_counters platform_get_counters(void)
UNUSED(i);
#endif /* !defined(ARM_NPU) */
#endif /* !defined(CPU_PROFILE_ENABLED) */
-
- return platform_counters;
}
uint32_t get_mps3_core_clock(void)
diff --git a/source/hal/source/platform/native/include/platform_drivers.h b/source/hal/source/platform/native/include/platform_drivers.h
index a203618..50164db 100644
--- a/source/hal/source/platform/native/include/platform_drivers.h
+++ b/source/hal/source/platform/native/include/platform_drivers.h
@@ -35,10 +35,9 @@ int platform_init(void);
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
+ * @brief Gets the platform name.
+ * @return Pointer to the name
*/
-void platform_name(char* name, size_t size);
+const char* platform_name(void);
#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/source/platform/native/include/timer_native.h b/source/hal/source/platform/native/include/timer_native.h
index c8eeda2..da34b30 100644
--- a/source/hal/source/platform/native/include/timer_native.h
+++ b/source/hal/source/platform/native/include/timer_native.h
@@ -28,9 +28,9 @@
void platform_reset_counters(void);
/**
- * @brief Gets the current counter values.
- * @returns A populated instance of pmu_counters struct.
+ * @brief Gets the current counter values.
+ * @param[out] Pointer to a pmu_counters object.
**/
-pmu_counters platform_get_counters(void);
+void platform_get_counters(pmu_counters* counters);
#endif /* NATIVE_TIMER_H */
diff --git a/source/hal/source/platform/native/source/platform_drivers.c b/source/hal/source/platform/native/source/platform_drivers.c
index 10db99a..d5b3727 100644
--- a/source/hal/source/platform/native/source/platform_drivers.c
+++ b/source/hal/source/platform/native/source/platform_drivers.c
@@ -19,6 +19,8 @@
#include <string.h>
+static const char* s_platform_name = "native";
+
int platform_init(void)
{
return 0;
@@ -27,7 +29,7 @@ int platform_init(void)
void platform_release(void)
{}
-void platform_name(char* name, size_t size)
+const char* platform_name(void)
{
- strncpy(name, "native", size);
+ return s_platform_name;
} \ No newline at end of file
diff --git a/source/hal/source/platform/native/source/timer_native.c b/source/hal/source/platform/native/source/timer_native.c
index 590975f..7cd832c 100644
--- a/source/hal/source/platform/native/source/timer_native.c
+++ b/source/hal/source/platform/native/source/timer_native.c
@@ -32,25 +32,21 @@ extern "C" {
void platform_reset_counters() { /* Nothing to do */ }
-pmu_counters platform_get_counters(void)
+void platform_get_counters(pmu_counters* counters)
{
struct timespec current_time;
- pmu_counters platform_counters = {
- .num_counters = 0,
- .initialised = true
- };
+ counters->num_counters = 0;
+ counters->initialised = true;
clock_gettime(1, &current_time);
uint64_t microseconds = (current_time.tv_sec * MICROSECONDS_IN_SECOND) +
(current_time.tv_nsec / NANOSECONDS_IN_MICROSECOND);
#if NUM_PMU_COUNTERS > 0
- platform_counters.counters[0].value = microseconds;
- platform_counters.counters[0].name = "Duration";
- platform_counters.counters[0].unit = "microseconds";
- ++platform_counters.num_counters;
+ counters->counters[0].value = microseconds;
+ counters->counters[0].name = "Duration";
+ counters->counters[0].unit = "microseconds";
+ ++counters->num_counters;
#endif /* NUM_PMU_COUNTERS > 0 */
-
- return platform_counters;
}
#ifdef __cplusplus
diff --git a/source/hal/source/platform/simple/include/platform_drivers.h b/source/hal/source/platform/simple/include/platform_drivers.h
index 31bb682..7d075e7 100644
--- a/source/hal/source/platform/simple/include/platform_drivers.h
+++ b/source/hal/source/platform/simple/include/platform_drivers.h
@@ -39,10 +39,9 @@ int platform_init(void);
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
+ * @brief Gets the platform name.
+ * @return Pointer to the name
*/
-void platform_name(char* name, size_t size);
+const char* platform_name(void);
#endif /* PLATFORM_DRIVERS_H */
diff --git a/source/hal/source/platform/simple/include/timer_simple_platform.h b/source/hal/source/platform/simple/include/timer_simple_platform.h
index 40acd03..20006cc 100644
--- a/source/hal/source/platform/simple/include/timer_simple_platform.h
+++ b/source/hal/source/platform/simple/include/timer_simple_platform.h
@@ -31,10 +31,10 @@
void platform_reset_counters(void);
/**
- * @brief Gets the current counter values.
- * @returns A populated instance of pmu_counters struct.
+ * @brief Gets the current counter values.
+ * @param[out] Pointer to a pmu_counters object.
**/
-pmu_counters platform_get_counters(void);
+void platform_get_counters(pmu_counters* counters);
/**
* @brief System tick interrupt handler.
diff --git a/source/hal/source/platform/simple/source/platform_drivers.c b/source/hal/source/platform/simple/source/platform_drivers.c
index 177ba70..3e04323 100644
--- a/source/hal/source/platform/simple/source/platform_drivers.c
+++ b/source/hal/source/platform/simple/source/platform_drivers.c
@@ -40,6 +40,9 @@
#endif /* ARM_NPU */
+/* Platform name */
+static const char* s_platform_name = DESIGN_NAME;
+
int platform_init(void)
{
SystemCoreClockUpdate(); /* From start up code */
@@ -72,7 +75,7 @@ int platform_init(void)
#endif /* ARM_NPU */
/* Print target design info */
- info("Target system design: %s\n", DESIGN_NAME);
+ info("Target system design: %s\n", s_platform_name);
return 0;
}
@@ -82,7 +85,7 @@ void platform_release(void)
__disable_irq();
}
-void platform_name(char* name, size_t size)
+const char* platform_name(void)
{
- strncpy(name, DESIGN_NAME, size);
+ return s_platform_name;
}
diff --git a/source/hal/source/platform/simple/source/timer_simple_platform.c b/source/hal/source/platform/simple/source/timer_simple_platform.c
index 94af308..3bb91d0 100644
--- a/source/hal/source/platform/simple/source/timer_simple_platform.c
+++ b/source/hal/source/platform/simple/source/timer_simple_platform.c
@@ -63,12 +63,10 @@ void platform_reset_counters(void)
debug("system tick config ready\n");
}
-pmu_counters platform_get_counters(void)
+void platform_get_counters(pmu_counters* counters)
{
- pmu_counters platform_counters = {
- .num_counters = 0,
- .initialised = true
- };
+ counters->num_counters = 0;
+ counters->initialised = true;
uint32_t i = 0;
#if defined (ARM_NPU)
@@ -78,20 +76,20 @@ pmu_counters platform_get_counters(void)
npu_counters.npu_evt_counters[i].counter_value,
npu_counters.npu_evt_counters[i].name,
npu_counters.npu_evt_counters[i].unit,
- &platform_counters);
+ counters);
}
for (i = 0; i < ETHOSU_DERIVED_NCOUNTERS; ++i) {
add_pmu_counter(
npu_counters.npu_derived_counters[i].counter_value,
npu_counters.npu_derived_counters[i].name,
npu_counters.npu_derived_counters[i].unit,
- &platform_counters);
+ counters);
}
add_pmu_counter(
npu_counters.npu_total_ccnt,
"NPU TOTAL",
"cycles",
- &platform_counters);
+ counters);
#endif /* defined (ARM_NPU) */
#if defined(CPU_PROFILE_ENABLED)
@@ -99,7 +97,7 @@ pmu_counters platform_get_counters(void)
Get_SysTick_Cycle_Count(),
"CPU TOTAL",
"cycles",
- &platform_counters);
+ counters);
#endif /* defined(CPU_PROFILE_ENABLED) */
#if !defined(CPU_PROFILE_ENABLED)
@@ -109,8 +107,6 @@ pmu_counters platform_get_counters(void)
UNUSED(i);
#endif /* !defined(ARM_NPU) */
#endif /* !defined(CPU_PROFILE_ENABLED) */
-
- return platform_counters;
}
void SysTick_Handler(void)