diff --git a/Tools/CPUInfo/CPUInfo.cpp b/Tools/CPUInfo/CPUInfo.cpp index c2fc5739e6..479026775a 100644 --- a/Tools/CPUInfo/CPUInfo.cpp +++ b/Tools/CPUInfo/CPUInfo.cpp @@ -3,6 +3,8 @@ Andrew Tridgell September 2011 */ +#define ALLOW_DOUBLE_MATH_FUNCTIONS + #include #include @@ -13,11 +15,21 @@ void loop(); const AP_HAL::HAL& hal = AP_HAL::get_HAL(); +#ifdef STM32_SYS_CK +static uint32_t sysclk = STM32_SYS_CK; +#elif defined(STM32_SYSCLK) +static uint32_t sysclk = STM32_SYSCLK; +#else +static uint32_t sysclk = 0; +#endif + void setup() { } static void show_sizes(void) { + hal.console->printf("SYSCLK %uMHz\n", unsigned(sysclk/1000000U)); + hal.console->printf("Type sizes:\n"); hal.console->printf("char : %lu\n", (unsigned long)sizeof(char)); hal.console->printf("short : %lu\n", (unsigned long)sizeof(short)); @@ -43,6 +55,7 @@ static void show_sizes(void) } \ us_end = AP_HAL::micros(); \ hal.console->printf("%-10s %7.2f usec/call\n", name, double(us_end - us_start) / double(count * 50.0)); \ + hal.scheduler->delay(10); \ } while (0) volatile float v_f = 1.0; @@ -94,14 +107,22 @@ static void show_timings(void) TIMEIT("dmul", v_out_d *= v_d, 100); TIMEIT("ddiv", v_out_d /= v_d, 100); - TIMEIT("sin()", v_out = sinf(v_f), 20); - TIMEIT("cos()", v_out = cosf(v_f), 20); - TIMEIT("tan()", v_out = tanf(v_f), 20); - TIMEIT("acos()", v_out = acosf(v_f * 0.2), 20); - TIMEIT("asin()", v_out = asinf(v_f * 0.2), 20); - TIMEIT("atan2()", v_out = atan2f(v_f * 0.2, v_f * 0.3), 20); - TIMEIT("sqrt()",v_out = sqrtf(v_f), 20); + TIMEIT("sinf()", v_out = sinf(v_f), 20); + TIMEIT("cosf()", v_out = cosf(v_f), 20); + TIMEIT("tanf()", v_out = tanf(v_f), 20); + TIMEIT("acosf()", v_out = acosf(v_f * 0.2), 20); + TIMEIT("asinf()", v_out = asinf(v_f * 0.2), 20); + TIMEIT("atan2f()", v_out = atan2f(v_f * 0.2, v_f * 0.3), 20); + TIMEIT("sqrtf()",v_out = sqrtf(v_f), 20); + TIMEIT("sin()", v_out = sin(v_f), 20); + TIMEIT("cos()", v_out = cos(v_f), 20); + TIMEIT("tan()", v_out = tan(v_f), 20); + TIMEIT("acos()", v_out = acos(v_f * 0.2), 20); + TIMEIT("asin()", v_out = asin(v_f * 0.2), 20); + TIMEIT("atan2()", v_out = atan2(v_f * 0.2, v_f * 0.3), 20); + TIMEIT("sqrt()",v_out = sqrt(v_f), 20); + TIMEIT("iadd8", v_out_8 += v_8, 100); TIMEIT("isub8", v_out_8 -= v_8, 100); TIMEIT("imul8", v_out_8 *= v_8, 100); @@ -122,8 +143,8 @@ static void show_timings(void) TIMEIT("imul64", v_out_64 *= v_64, 100); TIMEIT("idiv64", v_out_64 /= v_64, 100); - TIMEIT("memcpy128", memcpy((void*)mbuf1, (const void *)mbuf2, sizeof(mbuf1)), 20); - TIMEIT("memset128", memset((void*)mbuf1, 1, sizeof(mbuf1)), 20); + TIMEIT("memcpy128", memcpy((void*)mbuf1, (const void *)mbuf2, sizeof(mbuf1)); v_out_8 += mbuf1[0], 200); + TIMEIT("memset128", memset((void*)mbuf1, 1, sizeof(mbuf1)); v_out_8 += mbuf1[0], 200); TIMEIT("delay(1)", hal.scheduler->delay(1), 5); }