diff options
author | Daniel Friesel <derf@finalrewind.org> | 2017-12-13 15:29:23 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2017-12-13 15:29:23 +0100 |
commit | e9bebe253fdecee009414bdce7ccdfba83f980e6 (patch) | |
tree | 49330d7108869ddfbe8682fb6f20ff79794f57b5 /src/app/bench | |
parent | 22f2335259594569ba4a95544939ef72f3d1bb9d (diff) |
add simple cache benchmark application
Diffstat (limited to 'src/app/bench')
-rw-r--r-- | src/app/bench/main.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/app/bench/main.cc b/src/app/bench/main.cc new file mode 100644 index 0000000..cdbc00f --- /dev/null +++ b/src/app/bench/main.cc @@ -0,0 +1,68 @@ +#include "arch.h" +#include "driver/gpio.h" +#include "driver/stdout.h" +#include "driver/uptime.h" + +#ifndef TIMER_CYCLES +#error makeflag timer_cycles=1 required +#endif + + +/* + * For ESP8266: Flash reads must be 4-Byte-aligned -> uint32_t array + */ + +__attribute__ ((section(".text"))) uint32_t arr[4096]; +//uint32_t arr[1024]; +uint16_t frob; + +inline uint16_t bench_read(uint32_t *arr) +{ + uint16_t ts_pre, ts_post; + ts_pre = uptime.get_cycles(); + frob += *arr; + ts_post = uptime.get_cycles(); + return ts_post - ts_pre; +} + +int main(void) +{ + arch.setup(); + gpio.setup(); + kout.setup(); + + uint16_t ts1 = uptime.get_cycles(); + uint16_t ts2 = uptime.get_cycles(); + uint16_t ts3 = uptime.get_cycles(); + uint16_t ts4 = uptime.get_cycles(); + uint16_t i; + + //for (i = 0; i < 1024; i++) { + // arr[i] = 1; + //} + + gpio.led_on(0); + kout << "Hello, World!" << endl; + kout << "Test, World!" << endl; + kout << dec << ts1 << endl; + kout << dec << ts2 << endl; + kout << dec << ts3 << endl; + kout << dec << ts4 << endl; + + for (int i = 0; i < sizeof(arr) / sizeof(uint32_t); i++) { + kout << i << ": " << bench_read(&arr[i]) << endl; + } + for (signed int i = (sizeof(arr) / sizeof(uint32_t)) - 1; i >= 0; i--) { + kout << i << ": " << bench_read(&arr[i]) << endl; + } + kout << frob << endl; + + arch.idle_loop(); + + //uart_setup(); + //uart_puts("\n" COL_YELLOW "dOS" COL_GREEN " > " COL_RESET); + + //arch_idle_loop(); + + return 0; +} |