From 6fbbfc3223b7d2c42ef2d3502c01a7e8fdbf1c46 Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Thu, 9 Jul 2020 13:42:47 +0200 Subject: [PATCH] CMSIS-DSP: Improvement to test framework. Software markers for IPSS. --- Platforms/IPSS/ARMCA32/system_ARMCA32.c | 11 +++++++++++ Platforms/IPSS/ARMCM0/system_ARMCM0.c | 12 +++++++++++- Platforms/IPSS/ARMCM33/system_ARMCM33.c | 12 +++++++++++- Platforms/IPSS/ARMCM4/system_ARMCM4.c | 12 +++++++++++- Platforms/IPSS/ARMCM7/system_ARMCM7.c | 10 ++++++++++ Platforms/IPSS/ARMv81MML/system_ARMv81MML.c | 11 +++++++++++ Platforms/IPSS/ipss_bench.h | 7 +++++++ Platforms/IPSS/platform.cmake | 1 + Testing/main.cpp | 1 + Testing/testmain.cpp | 1 - 10 files changed, 74 insertions(+), 4 deletions(-) create mode 100755 Platforms/IPSS/ipss_bench.h diff --git a/Platforms/IPSS/ARMCA32/system_ARMCA32.c b/Platforms/IPSS/ARMCA32/system_ARMCA32.c index 89a4aec8..aaa698cf 100755 --- a/Platforms/IPSS/ARMCA32/system_ARMCA32.c +++ b/Platforms/IPSS/ARMCA32/system_ARMCA32.c @@ -42,6 +42,17 @@ #define SERIAL_BASE_ADDRESS (0x13000000) #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) + +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} int stdout_putchar(char txchar) { diff --git a/Platforms/IPSS/ARMCM0/system_ARMCM0.c b/Platforms/IPSS/ARMCM0/system_ARMCM0.c index 820e7296..32799e02 100755 --- a/Platforms/IPSS/ARMCM0/system_ARMCM0.c +++ b/Platforms/IPSS/ARMCM0/system_ARMCM0.c @@ -53,7 +53,17 @@ FILE __stderr; #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) - +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) + +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} /*---------------------------------------------------------------------------- System Core Clock Variable diff --git a/Platforms/IPSS/ARMCM33/system_ARMCM33.c b/Platforms/IPSS/ARMCM33/system_ARMCM33.c index f81781b4..ea64ed59 100755 --- a/Platforms/IPSS/ARMCM33/system_ARMCM33.c +++ b/Platforms/IPSS/ARMCM33/system_ARMCM33.c @@ -69,7 +69,17 @@ FILE __stderr; #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) - +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) + +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} #include "cmsis_compiler.h" diff --git a/Platforms/IPSS/ARMCM4/system_ARMCM4.c b/Platforms/IPSS/ARMCM4/system_ARMCM4.c index 9c332e3a..6e377131 100755 --- a/Platforms/IPSS/ARMCM4/system_ARMCM4.c +++ b/Platforms/IPSS/ARMCM4/system_ARMCM4.c @@ -61,7 +61,17 @@ FILE __stderr; #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) - +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) + +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} diff --git a/Platforms/IPSS/ARMCM7/system_ARMCM7.c b/Platforms/IPSS/ARMCM7/system_ARMCM7.c index fffa8de1..5f07216b 100755 --- a/Platforms/IPSS/ARMCM7/system_ARMCM7.c +++ b/Platforms/IPSS/ARMCM7/system_ARMCM7.c @@ -87,7 +87,17 @@ void SystemCoreClockUpdate (void) #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} diff --git a/Platforms/IPSS/ARMv81MML/system_ARMv81MML.c b/Platforms/IPSS/ARMv81MML/system_ARMv81MML.c index a86a7f6e..f00ffbcf 100755 --- a/Platforms/IPSS/ARMv81MML/system_ARMv81MML.c +++ b/Platforms/IPSS/ARMv81MML/system_ARMv81MML.c @@ -249,6 +249,17 @@ typedef struct #define SERIAL_DATA *((volatile unsigned *) SERIAL_BASE_ADDRESS) +#define SOFTWARE_MARK *((volatile unsigned *) (SERIAL_BASE_ADDRESS+4)) + +void start_ipss_measurement() +{ + SOFTWARE_MARK = 1; +} + +void stop_ipss_measurement() +{ + SOFTWARE_MARK = 0; +} int stdout_putchar(char txchar) { diff --git a/Platforms/IPSS/ipss_bench.h b/Platforms/IPSS/ipss_bench.h new file mode 100755 index 00000000..841b2d25 --- /dev/null +++ b/Platforms/IPSS/ipss_bench.h @@ -0,0 +1,7 @@ +#ifndef IPSS_BENCH_H +#define IPSS_BENCH_H + +extern void start_ipss_measurement(); +extern void stop_ipss_measurement(); + +#endif diff --git a/Platforms/IPSS/platform.cmake b/Platforms/IPSS/platform.cmake index e7cecc15..63357588 100755 --- a/Platforms/IPSS/platform.cmake +++ b/Platforms/IPSS/platform.cmake @@ -3,4 +3,5 @@ function(configure_platform PROJECTNAME ROOT CORE PLATFORMFOLDER) # target_sources(${PROJECTNAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/pagetables.s) # #endif() + target_include_directories(${PROJECTNAME} PUBLIC ${PLATFORMFOLDER}) endfunction() \ No newline at end of file diff --git a/Testing/main.cpp b/Testing/main.cpp index 37df76bf..e82d86b0 100644 --- a/Testing/main.cpp +++ b/Testing/main.cpp @@ -53,6 +53,7 @@ extern "C" const char *patternData; extern "C" void _exit(int return_code); #endif + int main() { int r; diff --git a/Testing/testmain.cpp b/Testing/testmain.cpp index fdbc4236..627ec675 100644 --- a/Testing/testmain.cpp +++ b/Testing/testmain.cpp @@ -23,7 +23,6 @@ using namespace std; #include "TestDrive.h" - int testmain(const char *patterns) { char *memoryBuf=NULL;