diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/hw.h b/IDE/ROWLEY-CROSSWORKS-ARM/hw.h index 134193ca8..5a7a7b359 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/hw.h +++ b/IDE/ROWLEY-CROSSWORKS-ARM/hw.h @@ -15,6 +15,9 @@ void hw_uart_printchar(int c); void hw_watchdog_disable(void); uint32_t hw_rand(void); +// Delay functions +void delay_us(uint32_t microseconds); + #endif /* WOLFSSL_ROWLEY_HW_H */ diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/kinetis_hw.c b/IDE/ROWLEY-CROSSWORKS-ARM/kinetis_hw.c index 7b73add3f..961e181d8 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/kinetis_hw.c +++ b/IDE/ROWLEY-CROSSWORKS-ARM/kinetis_hw.c @@ -58,6 +58,16 @@ /***********************************************/ // Private functions +static uint32_t mDelayCyclesPerUs = 0; +#define NOP_FOR_LOOP_INSTRUCTION_COUNT 6 +static void delay_nop(uint32_t count) +{ + int i; + for(i=0; iSCGC6 |= SIM_SCGC6_RTC_MASK; @@ -141,10 +154,8 @@ static void hw_rtc_init(void) /* Turn on */ RTC->CR |= RTC_CR_OSCE_MASK; - /* Wait RTC startup delay */ - for (i=0; i<10000; i++) { - asm("nop"); - } + /* Wait RTC startup delay 1000 us */ + delay_us(1000); } /* Enable counter */ @@ -203,6 +214,12 @@ uint32_t hw_rand(void) return RNG->OR; /* Return next value in FIFO output register */ } +void delay_us(uint32_t microseconds) +{ + delay_nop(mDelayCyclesPerUs * microseconds); +} + + // Watchdog void hw_watchdog_disable(void) { diff --git a/IDE/ROWLEY-CROSSWORKS-ARM/user_settings.h b/IDE/ROWLEY-CROSSWORKS-ARM/user_settings.h index c914ed502..7947ef34e 100644 --- a/IDE/ROWLEY-CROSSWORKS-ARM/user_settings.h +++ b/IDE/ROWLEY-CROSSWORKS-ARM/user_settings.h @@ -156,6 +156,8 @@ extern "C" { /* Sha */ #undef NO_SHA #if 1 + /* 1k smaller, but 25% slower */ + //#define USE_SLOW_SHA #else #define NO_SHA #endif @@ -163,8 +165,6 @@ extern "C" { /* Sha256 */ #undef NO_SHA256 #if 1 - /* over twice as small, but 50% slower */ - //#define USE_SLOW_SHA2 #else #define NO_SHA256 #endif @@ -179,6 +179,9 @@ extern "C" { #if 1 #define WOLFSSL_SHA384 #endif + + /* over twice as small, but 50% slower */ + //#define USE_SLOW_SHA2 #endif /* MD5 */ @@ -306,6 +309,12 @@ extern "C" { #undef NO_CRYPT_BENCHMARK //#define NO_CRYPT_BENCHMARK +/* In-lining of misc.c functions */ +/* If defined, must include wolfcrypt/src/misc.c in build */ +/* Slower, but about 1k smaller */ +#undef NO_INLINE +//#define NO_INLINE + #undef NO_FILESYSTEM #define NO_FILESYSTEM