From 7b8fa5e739e91671c926e9e7c887579d82728513 Mon Sep 17 00:00:00 2001 From: Kristofer Jonsson Date: Thu, 16 Dec 2021 14:02:56 +0100 Subject: Timing adapter fix, init constructor priority The timing adapters are attached to the Ethos-U AXI ports and should only be initialized if the platform has been built with NPU support. Add priority to init the constructor, insuring it will run before any other constructor. This is important because the init constructor sets up UART. Change-Id: I189687437b95b11f6503c7631720e7883c24ada6 --- drivers/mhu_v2/src/mhu_v2.cpp | 4 ++-- targets/common/src/init.cpp | 2 +- targets/corstone-300/CMakeLists.txt | 3 +-- targets/corstone-300/target.cpp | 9 ++++++--- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/mhu_v2/src/mhu_v2.cpp b/drivers/mhu_v2/src/mhu_v2.cpp index 1144a0f..cdeb90b 100644 --- a/drivers/mhu_v2/src/mhu_v2.cpp +++ b/drivers/mhu_v2/src/mhu_v2.cpp @@ -197,12 +197,12 @@ void MHUv2::printAIDR(bool tx, bool rx) { if (tx) { aidr = getTxAIDR(); a = reinterpret_cast(&aidr); - LOG_INFO("TX MHUv2 reports: Major rev: %d, Minor rev: %d", a->ARCH_MAJOR_REV, a->ARCH_MINOR_REV); + LOG("TX MHUv2 reports: Major rev: %d, Minor rev: %d", a->ARCH_MAJOR_REV, a->ARCH_MINOR_REV); } if (rx) { aidr = getRxAIDR(); a = reinterpret_cast(&aidr); - LOG_INFO("RX MHUv2 reports: Major rev: %d, Minor rev: %d", a->ARCH_MAJOR_REV, a->ARCH_MINOR_REV); + LOG("RX MHUv2 reports: Major rev: %d, Minor rev: %d", a->ARCH_MAJOR_REV, a->ARCH_MINOR_REV); } } diff --git a/targets/common/src/init.cpp b/targets/common/src/init.cpp index 54e4590..0876070 100644 --- a/targets/common/src/init.cpp +++ b/targets/common/src/init.cpp @@ -18,6 +18,6 @@ #include -__attribute__((constructor)) void init() { +__attribute__((constructor(500))) void init() { EthosU::targetSetup(); } diff --git a/targets/corstone-300/CMakeLists.txt b/targets/corstone-300/CMakeLists.txt index 5dc3804..7c8db4e 100644 --- a/targets/corstone-300/CMakeLists.txt +++ b/targets/corstone-300/CMakeLists.txt @@ -124,9 +124,8 @@ target_sources(ethosu_target_startup INTERFACE target.cpp) target_link_libraries(ethosu_target_startup INTERFACE - $<$:ethosu_core_driver> + $<$:ethosu_core_driver;timing_adapter> mpu - timing_adapter ethosu_mhu_dummy ethosu_uart_cmsdk_apb) diff --git a/targets/corstone-300/target.cpp b/targets/corstone-300/target.cpp index 87ba0c4..8f8db83 100644 --- a/targets/corstone-300/target.cpp +++ b/targets/corstone-300/target.cpp @@ -24,11 +24,10 @@ #ifdef ETHOSU #include +#include #endif #include "mpu.hpp" -#include - #include "uart_stdout.h" #include @@ -67,6 +66,8 @@ struct ethosu_driver ethosu0_driver; * Timing Adapters ****************************************************************************/ +#ifdef ETHOSU + #ifndef ETHOSU_TA_MAXR_0 #define ETHOSU_TA_MAXR_0 0 #endif @@ -203,6 +204,8 @@ struct timing_adapter_settings ethosu_ta_settings[ETHOSU_NPU_TA_COUNT] = {{ETHOS ETHOSU_TA_HISTBIN_1, ETHOSU_TA_HISTCNT_1}}; +#endif + /**************************************************************************** * Cache maintenance ****************************************************************************/ @@ -283,6 +286,7 @@ void targetSetup() { // Initialize UART driver UartStdOutInit(); +#ifdef ETHOSU // Initialize timing adapter(s) for (int i = 0; i < ETHOSU_NPU_COUNT; i++) { for (int j = 0; j < ETHOSU_NPU_TA_COUNT; j++) { @@ -295,7 +299,6 @@ void targetSetup() { } } -#ifdef ETHOSU // Initialize Ethos-U NPU driver if (ethosu_init(ðosu0_driver, reinterpret_cast(ETHOSU_BASE_ADDRESS), -- cgit v1.2.1